Private
Public Access
1
0

Merge branch 'release/v1.1'

This commit is contained in:
Sander Roosendaal
2017-02-22 18:05:04 +01:00
10 changed files with 231 additions and 188 deletions
+1 -2
View File
@@ -891,6 +891,7 @@ def interactive_cum_flex_chart2(theworkouts,promember=0,
yparamname1 = axlabels[yparam1]
if yparam2 != 'None':
yparamname2 = axlabels[yparam2]
@@ -1668,8 +1669,6 @@ def interactive_multiple_compare_chart(ids,xparam,yparam,plottype='line',
if yparam != 'time' and yparam != 'pace':
plot.add_layout(ylabel)
print cntr,id,len(group),ymean
source = ColumnDataSource(
group
)
+1 -1
View File
@@ -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)
+1
View File
@@ -35,6 +35,7 @@
<div id="workouts_table" class="grid_8 alpha">
{% if team %}
{% include "teambuttons.html" with teamid=team.id %}
<h3>{{ team.name }} Team Workouts</h3>
{% else %}
<h3>My Workouts</h3>
+18 -10
View File
@@ -34,25 +34,33 @@
</style>
<div id="workouts" class="grid_12 alpha">
<div id="workouts" class="grid_8 alpha">
<h1>Interactive Comparison</h1>
<div class="grid_2 alpha">
<a class="button gray small" href="/rowers/list-workouts/team/{{ teamid }}/">Team Workouts</a>
<div class="grid_8 alpha">
{% include "teambuttons.html" with teamid=teamid%}
</div>
<div class="grid_2">
<a class="button gray small" href="/rowers/team-compare-select/team/{{ teamid }}/">Multi Compare</a>
</div>
<div class="grid_4 omega">
<form enctype="multipart/form-data" action="/rowers/multi-compare" method="post">
{% csrf_token %}
<table>
{{ chartform.as_table }}
</table>
<div class="grid_1 prefix_2 suffix_1">
<p>
<input name='workoutselectform' class="button green" type="submit" value="Submit">
</p>
</div>
<div class="grid_2 suffix_6 omega">
<a class="button gray small" href="/rowers/team/{{ teamid }}/">Team Page</a>
</div>
<div class="grid_12 alpha">
</form>
</div>
<div class="grid_12 alpha">
<div id="theplot" class="grid_12 alpha flexplot">
{{ the_div|safe }}
</div>
</div>
</div>
{% endblock %}
+10
View File
@@ -5,8 +5,15 @@
{% block content %}
<div class="grid_12 alpha">
<h1>{{ team.name }}</h1>
<div class="grid_8 alpha">
{% include "teambuttons.html" with teamid=team.id %}
</div>
<div class="grid_4 omega">
<p>{{ team.notes }}</p>
<p><b>Manager:</b> {{ team.manager.first_name }} {{ team.manager.last_name }}</p>
</div>
</div>
<div class="grid_12 alpha">
{% if ismember %}
<div class="grid_2 alpha">
<a class="button red small" href="/rowers/team/{{ team.id }}/leaveconfirm">Leave this team</a>
@@ -29,6 +36,9 @@
</div>
{% endif %}
</div>
<div class="grid_12 alpha">
<div class="grid_6 alpha">
<p>
<h2>Members</h2>
+8 -4
View File
@@ -8,7 +8,14 @@
<div class="grid_12">
<div class="grid_8 suffix_4">
{% include "teambuttons.html" with teamid=teamid%}
</div>
</div>
<div class="grid_12 alpha">
<h3>{{ team.name }} Team Workouts</h3>
</div>
<div class="grid_12 alpha">
<div class="grid_4 alpha">
{% if team %}
@@ -46,9 +53,6 @@
</div>
<div class="grid_12 alpha">
<h3>{{ team.name }} Team Workouts</h3>
</div>
<form enctype="multipart/form-data" action="/rowers/multi-compare" method="post">
<div id="workouts_table" class="grid_8 alpha">
+9
View File
@@ -0,0 +1,9 @@
<div class="grid_2 alpha">
<a class="button gray small" href="/rowers/list-workouts/team/{{ teamid }}/">Team Workouts</a>
</div>
<div class="grid_2">
<a class="button gray small" href="/rowers/team-compare-select/team/{{ teamid }}/">Multi Compare</a>
</div>
<div class="grid_2 suffix_2 omega">
<a class="button gray small" href="/rowers/team/{{ teamid }}/">Team Page</a>
</div>
+1 -3
View File
@@ -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)
+56 -40
View File
@@ -357,7 +357,7 @@ def add_workout_from_strokedata(user,importid,data,strokedata,
except:
title = 'Imported'
starttimeunix = mktime(rowdatetime.timetuple())
starttimeunix = mktime(rowdatetime.utctimetuple())
res = make_cumvalues(0.1*strokedata['t'])
cum_time = res[0]
@@ -521,7 +521,7 @@ def add_workout_from_stdata(user,importid,data):
except:
title = "Imported data"
starttimeunix = mktime(rowdatetime.timetuple())
starttimeunix = mktime(rowdatetime.utctimetuple())
res = splitstdata(data['distance'])
@@ -2059,7 +2059,12 @@ def multi_compare_view(request):
if result:
promember=1
if request.method == 'POST':
if 'ids' in request.session:
print request.session['ids']
print request.POST
if request.method == 'POST' and 'workouts' in request.POST:
form = WorkoutMultipleCompareForm(request.POST)
chartform = ChartParamChoiceForm(request.POST)
if form.is_valid() and chartform.is_valid():
@@ -2070,6 +2075,8 @@ def multi_compare_view(request):
plottype = chartform.cleaned_data['plottype']
teamid = chartform.cleaned_data['teamid']
ids = [int(w.id) for w in workouts]
request.session['ids'] = ids
labeldict = {
int(w.id): w.__unicode__() for w in workouts
}
@@ -2086,9 +2093,40 @@ def multi_compare_view(request):
'the_div':div,
'promember':promember,
'teamid':teamid,
'chartform':chartform,
})
else:
return HttpResponse("Form is not valid")
if request.method == 'POST' and 'ids' in request.session:
chartform = ChartParamChoiceForm(request.POST)
if chartform.is_valid():
xparam = chartform.cleaned_data['xparam']
yparam = chartform.cleaned_data['yparam']
plottype = chartform.cleaned_data['plottype']
teamid = chartform.cleaned_data['teamid']
ids = request.session['ids']
request.session['ids'] = ids
workouts = [Workout.objects.get(id=id) for id in ids]
labeldict = {
int(w.id): w.__unicode__() for w in workouts
}
res = interactive_multiple_compare_chart(ids,xparam,yparam,
promember=promember,
plottype=plottype,
labeldict=labeldict)
script = res[0]
div = res[1]
return render(request,'multicompare.html',
{'interactiveplot':script,
'the_div':div,
'promember':promember,
'teamid':teamid,
'chartform':chartform,
})
else:
url = reverse(workouts_view)
return HttpResponseRedirect(url)
@@ -2469,7 +2507,7 @@ def workout_downloadwind_view(request,id=0,
startdatetime = dateutil.parser.parse("{}, {}".format(row.date,
row.starttime))
starttimeunix = int(mktime(startdatetime.timetuple()))
starttimeunix = int(mktime(startdatetime.utctimetuple()))
avgtime = starttimeunix+avgtime
winddata = get_wind_data(avglat,avglon,avgtime)
windspeed = winddata[0]
@@ -2533,7 +2571,7 @@ def workout_downloadmetar_view(request,id=0,
startdatetime = dateutil.parser.parse("{}, {}".format(row.date,
row.starttime))
starttimeunix = int(mktime(startdatetime.timetuple()))
starttimeunix = int(mktime(startdatetime.utctimetuple()))
avgtime = starttimeunix+avgtime
winddata = get_metar_data(airportcode,avgtime)
windspeed = winddata[0]
@@ -3597,6 +3635,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,9 +3665,6 @@ 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
@@ -3658,39 +3699,22 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
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)
else:
message = "Invalid Form"
url = reverse(workouts_view,args=[str(message)])
response = HttpResponseRedirect(url)
else: # form not POSTed
form = WorkoutForm(instance=row)
return response
else:
try:
row = Workout.objects.get(id=id)
form = WorkoutForm(instance=row)
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):
message = "You are not allowed to edit this workout"
url = reverse(workouts_view,args=[str(message)])
raise Http404("You are not allowed to edit this workout")
return HttpResponseRedirect(url)
else:
# create interactive plot
f1 = row.csvfilename
u = request.user
@@ -3745,12 +3769,6 @@ def workout_edit_view(request,id=0,message="",successmessage=""):
})
except Workout.DoesNotExist:
message = "workout doesn't exist"
url = reverse(workouts_view,
kwargs = {
'message': str(message)
})
return HttpResponseRedirect(url)
# Create the chart image with wind corrected pace (OTW)
@@ -5645,8 +5663,6 @@ def rower_teams_view(request,message='',successmessage=''):
myrequests = TeamRequest.objects.filter(team__in=myteams)
myinvites = TeamInvite.objects.filter(team__in=myteams)
print form
return render(request, 'teams.html',
{
'teams':ts,
-2
View File
@@ -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