diff --git a/rowers/dataprep.py b/rowers/dataprep.py index fae04c02..3e262d77 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -1197,7 +1197,7 @@ def save_workout_database(f2, r, dosmooth=True, workouttype='rower', if partofday is not None: - title = '{partofday} workout {workouttype}'.format( + title = '{partofday} {workouttype}'.format( partofday=partofday, workouttype=workouttype, ) diff --git a/rowers/templates/rower_exportsettings.html b/rowers/templates/rower_exportsettings.html index b5b0e3c6..537521b6 100644 --- a/rowers/templates/rower_exportsettings.html +++ b/rowers/templates/rower_exportsettings.html @@ -5,6 +5,34 @@ {% block main %}
You are currently connected to: + {% if r.c2token %} + Concept2 Logbook, + {% endif %} + {% if r.sporttrackstoken %} + SportTracks, + {% endif %} + {% if r.underarmourtoken %} + Under Armour (MapMyFitness), + {% endif %} + {% if r.tptoken %} + TrainingPeaks, + {% endif %} + {% if r.polartoken %} + Polar, + {% endif %} + {% if r.garmintoken %} + Garmin Connect, + {% endif %} + {% if r.stravatoken %} + Strava, + {% endif %} + {% if r.runkeepertoken %} + Runkeeper. + {% endif %} + Strava, +
+ {% if form.errors %}Please correct the error{{ form.errors|pluralize }} below. diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 3c7b10e8..35953d4f 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -1067,8 +1067,9 @@ def strava_webhook_view(request): f.write(' ') f.write('Rower not found') return HttpResponse(status=200) - - job = stravastuff.async_get_workout(r.user,stravaid) + ws = Workout.objects.filter(uploadedtostrava=stravaid) + if ws.count()==0: + job = stravastuff.async_get_workout(r.user,stravaid) elif aspect_type == 'update': try: updates = data['updates'] diff --git a/rowers/views/userviews.py b/rowers/views/userviews.py index b8bd125c..cef92c0b 100644 --- a/rowers/views/userviews.py +++ b/rowers/views/userviews.py @@ -298,6 +298,17 @@ def rower_favoritecharts_view(request,userid=0): @login_required() @permission_required('rower.is_coach',fn=get_user_by_userid,raise_exception=True) def rower_exportsettings_view(request,userid=0): + attrtokens = { + 'polar_auto_import':'polartoken', + 'c2_auto_export':'c2token', + 'c2_auto_import':'c2token', + 'mapmyfitness_auto_export':'underarmourtoken', + 'runkeeper_auto_export':'runkeepertoken', + 'sporttracks_auto_export':'sporttrackstoken', + 'strava_auto_export':'stravatoken', + 'strava_auto_import':'stravatoken', + 'trainingpeaks_auto_export':'tptoken', + } r = getrequestrower(request,userid=userid) if request.method == 'POST': form = RowerExportForm(request.POST) @@ -305,7 +316,21 @@ def rower_exportsettings_view(request,userid=0): cd = form.cleaned_data for attr, value in cd.items(): - setattr(r, attr, value) + doset = True + try: + tokenname = attrtokens[attr] + if getattr(r, tokenname) == '' or getattr(r, tokenname) == None: + doset = False + except KeyError: + doset = True + if not doset: + before = getattr(r,attr) + if before == value: + doset = True + if doset: + setattr(r, attr, value) + else: + messages.error(request,'Could not set '+attr+'. You need to create the connection first.') r.save() messages.info(request,'Settings saved')