diff --git a/rowers/models.py b/rowers/models.py index b78740e6..11a13f40 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -393,7 +393,7 @@ class Workout(models.Model): maxhr = models.IntegerField(blank=True,null=True) uploadedtostrava = models.IntegerField(default=0) uploadedtosporttracks = models.IntegerField(default=0) - notes = models.CharField(blank=True,null=True,max_length=200) + notes = models.CharField(blank=True,null=True,max_length=1000) summary = models.TextField(blank=True) privacy = models.CharField(default='visible',max_length=30, choices=privacychoices) diff --git a/rowers/tests.py b/rowers/tests.py index 589a8bde..1b24e6cd 100644 --- a/rowers/tests.py +++ b/rowers/tests.py @@ -580,9 +580,7 @@ class ViewTest(TestCase): form = WorkoutForm(data=form_data) self.assertTrue(form.is_valid()) response = self.c.post('/rowers/workout/1/edit', form_data, follow=True) - self.assertRedirects(response, - expected_url='/rowers/workout/1/edit/s/Changes%20saved', - status_code=302,target_status_code=200) + self.assertEqual(response.status_code, 200) w = Workout.objects.get(id=1) diff --git a/rowers/views.py b/rowers/views.py index 50f497af..1cceac64 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -3597,6 +3597,12 @@ def workout_comment_view(request,id=0): def workout_edit_view(request,id=0,message="",successmessage=""): request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE + try: + # check if valid ID exists (workout exists) + row = Workout.objects.get(id=id) + except Workout.DoesNotExist: + raise Http404("Workout doesn't exist") + if request.method == 'POST': # Form was submitted form = WorkoutForm(request.POST) @@ -3621,137 +3627,111 @@ def workout_edit_view(request,id=0,message="",successmessage=""): startdatetime = datetime.datetime.strptime(startdatetime, "%Y-%m-%d %H:%M:%S") startdatetime = timezone.make_aware(startdatetime) - try: - # check if valid ID exists (workout exists) - row = Workout.objects.get(id=id) - # check if user is owner of this workout - if checkworkoutuser(request.user,row): - row.name = name - row.date = date - row.starttime = starttime - row.startdatetime = startdatetime - row.workouttype = workouttype - row.notes = notes - row.duration = duration - row.distance = distance - row.boattype = boattype - row.privacy = privacy - row.save() - # change data in csv file + # check if user is owner of this workout + if checkworkoutuser(request.user,row): + row.name = name + row.date = date + row.starttime = starttime + row.startdatetime = startdatetime + row.workouttype = workouttype + row.notes = notes + row.duration = duration + row.distance = distance + row.boattype = boattype + row.privacy = privacy + row.save() + # change data in csv file - r = rdata(row.csvfilename) - if r == 0: - return HttpResponse("Error: CSV Data File Not Found") - r.rowdatetime = startdatetime - r.write_csv(row.csvfilename,gzip=True) - dataprep.update_strokedata(id,r.df) - successmessage = "Changes saved" - url = "/rowers/workout/"+str(row.id)+"/edit" - url = reverse(workout_edit_view, - kwargs = { - 'id':str(row.id), - 'successmessage':str(successmessage), - }) - response = HttpResponseRedirect(url) - else: - message = "You are not allowed to change this workout" - url = reverse(workouts_view,args=[str(message)]) + r = rdata(row.csvfilename) + if r == 0: + return HttpResponse("Error: CSV Data File Not Found") + r.rowdatetime = startdatetime + r.write_csv(row.csvfilename,gzip=True) + dataprep.update_strokedata(id,r.df) + successmessage = "Changes saved" + url = "/rowers/workout/"+str(row.id)+"/edit" + url = reverse(workout_edit_view, + kwargs = { + 'id':str(row.id), + 'successmessage':str(successmessage), + }) + response = HttpResponseRedirect(url) + else: + message = "You are not allowed to change this workout" + url = reverse(workouts_view,args=[str(message)]) - response = HttpResponseRedirect(url) - except Workout.DoesNotExist: - # create new workout - r = Rower.objects.get(user=request.user) - w = Workout(name=name,date=date,workouttype=workouttype, - user=r) - w.save() - successmessage = "New Workout Created" - url = reverse(workouts_view, - kwargs = { - 'successmessage':str(successmessage), - }) + response = HttpResponseRedirect(url) - response = HttpResponseRedirect(url) - else: - message = "Invalid Form" - url = reverse(workouts_view,args=[str(message)]) - response = HttpResponseRedirect(url) + else: # form not POSTed + form = WorkoutForm(instance=row) + + + try: + row = Workout.objects.get(id=id) + except Workout.DoesNotExist: + raise Http404("Workout doesn't exist") + + g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime") + # check if user is owner of this workout + + if (checkworkoutuser(request.user,row)==False): + raise Http404("You are not allowed to edit this workout") + + # create interactive plot + f1 = row.csvfilename + u = request.user + r = Rower.objects.get(user=u) + rowdata = rdata(f1) + hascoordinates = 1 + if rowdata != 0: + try: + latitude = rowdata.df[' latitude'] + if not latitude.std(): + hascoordinates = 0 + except KeyError,AttributeError: + hascoordinates = 0 - return response else: - try: - row = Workout.objects.get(id=id) - form = WorkoutForm(instance=row) - g = GraphImage.objects.filter(workout=row).order_by("-creationdatetime") - # check if user is owner of this workout - - if (checkworkoutuser(request.user,row)==False): - message = "You are not allowed to edit this workout" - url = reverse(workouts_view,args=[str(message)]) - - return HttpResponseRedirect(url) - - else: - # create interactive plot - f1 = row.csvfilename - u = request.user - r = Rower.objects.get(user=u) - rowdata = rdata(f1) - hascoordinates = 1 - if rowdata != 0: - try: - latitude = rowdata.df[' latitude'] - if not latitude.std(): - hascoordinates = 0 - except KeyError,AttributeError: - hascoordinates = 0 - - else: - hascoordinates = 0 - - - if hascoordinates: - res = googlemap_chart(rowdata.df[' latitude'], - rowdata.df[' longitude'], - row.name) - gmscript = res[0] - gmdiv = res[1] - else: - gmscript = "" - gmdiv = "" - - - # render page - if (len(g)<=3): - return render(request, 'workout_form.html', - {'form':form, - 'workout':row, - 'graphs1':g[0:3], - 'message': message, - 'successmessage': successmessage, - 'gmscript': gmscript, - 'gmdiv': gmdiv, - }) - - else: - return render(request, 'workout_form.html', - {'form':form, - 'workout':row, - 'graphs1':g[0:3], - 'graphs2':g[3:6], - 'message': message, - 'successmessage': successmessage, - 'gmscript': gmscript, - 'gmdiv': gmdiv, - }) + hascoordinates = 0 - except Workout.DoesNotExist: - message = "workout doesn't exist" - url = reverse(workouts_view, - kwargs = { - 'message': str(message) - }) - return HttpResponseRedirect(url) + if hascoordinates: + res = googlemap_chart(rowdata.df[' latitude'], + rowdata.df[' longitude'], + row.name) + gmscript = res[0] + gmdiv = res[1] + else: + gmscript = "" + gmdiv = "" + + + # render page + if (len(g)<=3): + return render(request, 'workout_form.html', + {'form':form, + 'workout':row, + 'graphs1':g[0:3], + 'message': message, + 'successmessage': successmessage, + 'gmscript': gmscript, + 'gmdiv': gmdiv, + }) + + else: + return render(request, 'workout_form.html', + {'form':form, + 'workout':row, + 'graphs1':g[0:3], + 'graphs2':g[3:6], + 'message': message, + 'successmessage': successmessage, + 'gmscript': gmscript, + 'gmdiv': gmdiv, + }) + + + return HttpResponseRedirect(url) # Create the chart image with wind corrected pace (OTW) @user_passes_test(ispromember,login_url="/",redirect_field_name=None) diff --git a/rowers/weather.py b/rowers/weather.py index 5b51b9af..9acf5154 100644 --- a/rowers/weather.py +++ b/rowers/weather.py @@ -60,8 +60,6 @@ def get_metar_data(airportcode,unixtime): return [0,0,message,'',timestamp] - print temp_c,wind_dir,wind_speed - windbearing = float(wind_dir) wind_knots = float(wind_speed) wind_ms = 0.514444*wind_knots