Merge branch 'feature/landingpage' into develop
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -12,6 +12,7 @@ import dataprep
|
|||||||
import types
|
import types
|
||||||
import datetime
|
import datetime
|
||||||
from django.forms import formset_factory
|
from django.forms import formset_factory
|
||||||
|
from utils import landingpages
|
||||||
|
|
||||||
# login form
|
# login form
|
||||||
class LoginForm(forms.Form):
|
class LoginForm(forms.Form):
|
||||||
@@ -180,6 +181,10 @@ class UploadOptionsForm(forms.Form):
|
|||||||
makeprivate = forms.BooleanField(initial=False,required=False,
|
makeprivate = forms.BooleanField(initial=False,required=False,
|
||||||
label='Make Workout Private')
|
label='Make Workout Private')
|
||||||
|
|
||||||
|
landingpage = forms.ChoiceField(choices=landingpages,
|
||||||
|
initial='workout_edit_view',
|
||||||
|
label='Landing Page')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
fields = ['make_plot','plottype','upload_toc2','makeprivate']
|
fields = ['make_plot','plottype','upload_toc2','makeprivate']
|
||||||
|
|
||||||
|
|||||||
@@ -198,7 +198,7 @@ class TeamRequest(models.Model):
|
|||||||
|
|
||||||
from utils import (
|
from utils import (
|
||||||
workflowleftpanel,workflowmiddlepanel,
|
workflowleftpanel,workflowmiddlepanel,
|
||||||
defaultleft,defaultmiddle
|
defaultleft,defaultmiddle,landingpages
|
||||||
)
|
)
|
||||||
|
|
||||||
# Extension of User with rowing specific data
|
# Extension of User with rowing specific data
|
||||||
@@ -281,8 +281,10 @@ class Rower(models.Model):
|
|||||||
|
|
||||||
# Site Settings
|
# Site Settings
|
||||||
workflowleftpanel = TemplateListField(default=defaultleft)
|
workflowleftpanel = TemplateListField(default=defaultleft)
|
||||||
|
|
||||||
workflowmiddlepanel = TemplateListField(default=defaultmiddle)
|
workflowmiddlepanel = TemplateListField(default=defaultmiddle)
|
||||||
|
defaultlandingpage = models.CharField(default='workout_edit_view',
|
||||||
|
max_length=200,
|
||||||
|
choices=landingpages)
|
||||||
|
|
||||||
# Access tokens
|
# Access tokens
|
||||||
c2token = models.CharField(default='',max_length=200,blank=True,null=True)
|
c2token = models.CharField(default='',max_length=200,blank=True,null=True)
|
||||||
@@ -889,7 +891,8 @@ class AccountRowerForm(ModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Rower
|
model = Rower
|
||||||
fields = ['weightcategory','getemailnotifications',
|
fields = ['weightcategory','getemailnotifications',
|
||||||
'defaulttimezone','showfavoritechartnotes']
|
'defaulttimezone','showfavoritechartnotes',
|
||||||
|
'defaultlandingpage']
|
||||||
|
|
||||||
class UserForm(ModelForm):
|
class UserForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
|
|||||||
@@ -38,23 +38,10 @@
|
|||||||
You can select one static plot to be generated immediately for
|
You can select one static plot to be generated immediately for
|
||||||
this workout. You can select to export to major fitness
|
this workout. You can select to export to major fitness
|
||||||
platforms automatically.
|
platforms automatically.
|
||||||
If you check "make private", this workout will not be visible to your followers and will not show up in your teams' workouts list.
|
If you check "make private", this workout will not be visible to your followers and will not show up in your teams' workouts list. With the Landing Page option, you can select to which (workout related) page you will be
|
||||||
|
taken after a successfull upload.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
|
||||||
Valid file types are:
|
|
||||||
<ul>
|
|
||||||
<li>Painsled iOS Stroke Export (CSV)</li>
|
|
||||||
<li>Painsled desktop version Stroke Export (CSV)</li>
|
|
||||||
<li>A TCX file with location data (lat,long) - with or without Heart Rate value, for example from RiM or CrewNerd</li>
|
|
||||||
<li>RowPro CSV export</li>
|
|
||||||
<li>SpeedCoach GPS and SpeedCoach GPS 2 CSV export</li>
|
|
||||||
<li>ErgData CSV export</li>
|
|
||||||
<li>ErgStick CSV export</li>
|
|
||||||
<li>BoatCoach CSV export</li>
|
|
||||||
<li>A FIT file with location data (experimental)</li>
|
|
||||||
</ul>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -84,9 +84,9 @@
|
|||||||
[RANKING PIECE]
|
[RANKING PIECE]
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if workout.name != '' %}
|
{% if workout.name != '' %}
|
||||||
<a href="/rowers/workout/{{ workout.id }}/edit">{{ workout.name }}</a> </td>
|
<a href={% url rower.defaultlandingpage id=workout.id %}>{{ workout.name }}</a> </td>
|
||||||
{% else %}
|
{% else %}
|
||||||
<a href="/rowers/workout/{{ workout.id }}/edit">No Name</a> </td>
|
<a href={% url rower.defaultlandingpage id=workout.id %}>No Name</a> </td>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if workout.name != '' %}
|
{% if workout.name != '' %}
|
||||||
|
|||||||
@@ -191,7 +191,8 @@ urlpatterns = [
|
|||||||
url(r'^workout/compare/(?P<id>\d+)/$',views.workout_comparison_list),
|
url(r'^workout/compare/(?P<id>\d+)/$',views.workout_comparison_list),
|
||||||
url(r'^workout/compare2/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/$',views.workout_comparison_view),
|
url(r'^workout/compare2/(?P<id1>\d+)/(?P<id2>\d+)/(?P<xparam>\w+.*)/(?P<yparam>\w+.*)/$',views.workout_comparison_view),
|
||||||
url(r'^workout/compare/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\w+.*)$',views.workout_comparison_list),
|
url(r'^workout/compare/(?P<id>\d+)/(?P<startdatestring>\d+-\d+-\d+)/(?P<enddatestring>\w+.*)$',views.workout_comparison_list),
|
||||||
url(r'^workout/(?P<id>\d+)/edit$',views.workout_edit_view),
|
url(r'^workout/(?P<id>\d+)/edit$',views.workout_edit_view,
|
||||||
|
name='workout_edit_view'),
|
||||||
url(r'^workout/(?P<id>\d+)/navionics$',views.workout_edit_view_navionics),
|
url(r'^workout/(?P<id>\d+)/navionics$',views.workout_edit_view_navionics),
|
||||||
url(r'^workout/(?P<id>\d+)/map$',views.workout_map_view),
|
url(r'^workout/(?P<id>\d+)/map$',views.workout_map_view),
|
||||||
url(r'^workout/(?P<id>\d+)/setprivate$',views.workout_setprivate_view),
|
url(r'^workout/(?P<id>\d+)/setprivate$',views.workout_setprivate_view),
|
||||||
@@ -329,7 +330,8 @@ urlpatterns = [
|
|||||||
url(r'^legal', TemplateView.as_view(template_name='legal.html'),name='legal'),
|
url(r'^legal', TemplateView.as_view(template_name='legal.html'),name='legal'),
|
||||||
url(r'^register$',views.rower_register_view),
|
url(r'^register$',views.rower_register_view),
|
||||||
url(r'^register/thankyou/$', TemplateView.as_view(template_name='registerthankyou.html'), name='registerthankyou'),
|
url(r'^register/thankyou/$', TemplateView.as_view(template_name='registerthankyou.html'), name='registerthankyou'),
|
||||||
url(r'^workout/(?P<id>\d+)/workflow$',views.workout_workflow_view),
|
url(r'^workout/(?P<id>\d+)/workflow$',views.workout_workflow_view,
|
||||||
|
name='workout_workflow_view'),
|
||||||
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<plottype>\w+)/$',views.workout_flexchart3_view),
|
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<plottype>\w+)/$',views.workout_flexchart3_view),
|
||||||
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<plottype>\w+.*)$',views.workout_flexchart3_view),
|
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)/(?P<plottype>\w+.*)$',views.workout_flexchart3_view),
|
||||||
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)$',views.workout_flexchart3_view),
|
url(r'^workout/(?P<id>\d+)/flexchart/(?P<xparam>\w+.*)/(?P<yparam1>\w+.*)/(?P<yparam2>\w+.*)$',views.workout_flexchart3_view),
|
||||||
|
|||||||
@@ -5,6 +5,12 @@ import colorsys
|
|||||||
|
|
||||||
lbstoN = 4.44822
|
lbstoN = 4.44822
|
||||||
|
|
||||||
|
landingpages = (
|
||||||
|
('workout_edit_view','Edit View'),
|
||||||
|
('workout_workflow_view','Workflow View'),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
workflowmiddlepanel = (
|
workflowmiddlepanel = (
|
||||||
('panel_statcharts.html','Static Charts'),
|
('panel_statcharts.html','Static Charts'),
|
||||||
('flexthumbnails.html','Flex Charts'),
|
('flexthumbnails.html','Flex Charts'),
|
||||||
|
|||||||
@@ -4454,6 +4454,7 @@ def workouts_view(request,message='',successmessage='',
|
|||||||
|
|
||||||
return render(request, 'list_workouts.html',
|
return render(request, 'list_workouts.html',
|
||||||
{'workouts': workouts,
|
{'workouts': workouts,
|
||||||
|
'rower':r,
|
||||||
'dateform':dateform,
|
'dateform':dateform,
|
||||||
'startdate':startdate,
|
'startdate':startdate,
|
||||||
'enddate':enddate,
|
'enddate':enddate,
|
||||||
@@ -7587,13 +7588,17 @@ def workout_upload_view(request,
|
|||||||
'make_plot':False,
|
'make_plot':False,
|
||||||
'upload_to_C2':False,
|
'upload_to_C2':False,
|
||||||
'plottype':'timeplot',
|
'plottype':'timeplot',
|
||||||
|
'landingpage':'workout_edit_view',
|
||||||
},
|
},
|
||||||
docformoptions={
|
docformoptions={
|
||||||
'workouttype':'rower',
|
'workouttype':'rower',
|
||||||
}):
|
}):
|
||||||
|
|
||||||
|
r = getrower(request.user)
|
||||||
|
|
||||||
if 'uploadoptions' in request.session:
|
if 'uploadoptions' in request.session:
|
||||||
uploadoptions = request.session['uploadoptions']
|
uploadoptions = request.session['uploadoptions']
|
||||||
|
uploadoptions['landingpage'] = r.defaultlandingpage
|
||||||
else:
|
else:
|
||||||
request.session['uploadoptions'] = uploadoptions
|
request.session['uploadoptions'] = uploadoptions
|
||||||
|
|
||||||
@@ -7622,36 +7627,40 @@ def workout_upload_view(request,
|
|||||||
plottype = 'timeplot'
|
plottype = 'timeplot'
|
||||||
|
|
||||||
try:
|
try:
|
||||||
upload_toc2 = uploadoptions['upload_to_C2']
|
landingpage = uploadoptions['landingpage']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_toc2 = False
|
landingpage = r.defaultlandingpage
|
||||||
|
|
||||||
try:
|
try:
|
||||||
upload_tostrava = uploadoptions['upload_to_Strava']
|
upload_to_c2 = uploadoptions['upload_to_C2']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_tostrava = False
|
upload_to_c2 = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
upload_tost = uploadoptions['upload_to_SportTracks']
|
upload_to_strava = uploadoptions['upload_to_Strava']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_tost = False
|
upload_to_strava = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
upload_tork = uploadoptions['upload_to_RunKeeper']
|
upload_to_st = uploadoptions['upload_to_SportTracks']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_tork = False
|
upload_to_st = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
upload_toua = uploadoptions['upload_to_MapMyFitness']
|
upload_to_rk = uploadoptions['upload_to_RunKeeper']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_toua = False
|
upload_to_rk = False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
upload_totp = uploadoptions['upload_to_TrainingPeaks']
|
upload_to_ua = uploadoptions['upload_to_MapMyFitness']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
upload_totp = False
|
upload_to_ua = False
|
||||||
|
|
||||||
|
try:
|
||||||
|
upload_to_tp = uploadoptions['upload_to_TrainingPeaks']
|
||||||
|
except KeyError:
|
||||||
|
upload_to_tp = False
|
||||||
|
|
||||||
r = getrower(request.user)
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
form = DocumentsForm(request.POST,request.FILES)
|
form = DocumentsForm(request.POST,request.FILES)
|
||||||
optionsform = UploadOptionsForm(request.POST)
|
optionsform = UploadOptionsForm(request.POST)
|
||||||
@@ -7676,6 +7685,7 @@ def workout_upload_view(request,
|
|||||||
upload_to_ua = optionsform.cleaned_data['upload_to_MapMyFitness']
|
upload_to_ua = optionsform.cleaned_data['upload_to_MapMyFitness']
|
||||||
upload_to_tp = optionsform.cleaned_data['upload_to_TrainingPeaks']
|
upload_to_tp = optionsform.cleaned_data['upload_to_TrainingPeaks']
|
||||||
makeprivate = optionsform.cleaned_data['makeprivate']
|
makeprivate = optionsform.cleaned_data['makeprivate']
|
||||||
|
landingpage = optionsform.cleaned_data['landingpage']
|
||||||
|
|
||||||
uploadoptions = {
|
uploadoptions = {
|
||||||
'makeprivate':makeprivate,
|
'makeprivate':makeprivate,
|
||||||
@@ -7687,6 +7697,7 @@ def workout_upload_view(request,
|
|||||||
'upload_to_RunKeeper':upload_to_rk,
|
'upload_to_RunKeeper':upload_to_rk,
|
||||||
'upload_to_MapMyFitness':upload_to_ua,
|
'upload_to_MapMyFitness':upload_to_ua,
|
||||||
'upload_to_TrainingPeaks':upload_to_tp,
|
'upload_to_TrainingPeaks':upload_to_tp,
|
||||||
|
'landingpage':r.defaultlandingpage,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -7810,7 +7821,7 @@ def workout_upload_view(request,
|
|||||||
else:
|
else:
|
||||||
messages.error(request,message)
|
messages.error(request,message)
|
||||||
|
|
||||||
url = reverse(workout_edit_view,
|
url = reverse(landingpage,
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'id':w.id,
|
'id':w.id,
|
||||||
})
|
})
|
||||||
@@ -8778,6 +8789,7 @@ def rower_edit_view(request,message=""):
|
|||||||
first_name = ucd['first_name']
|
first_name = ucd['first_name']
|
||||||
last_name = ucd['last_name']
|
last_name = ucd['last_name']
|
||||||
email = ucd['email']
|
email = ucd['email']
|
||||||
|
defaultlandingpage = cd['defaultlandingpage']
|
||||||
weightcategory = cd['weightcategory']
|
weightcategory = cd['weightcategory']
|
||||||
getemailnotifications = cd['getemailnotifications']
|
getemailnotifications = cd['getemailnotifications']
|
||||||
defaulttimezone=cd['defaulttimezone']
|
defaulttimezone=cd['defaulttimezone']
|
||||||
@@ -8794,6 +8806,7 @@ def rower_edit_view(request,message=""):
|
|||||||
r.defaulttimezone=defaulttimezone
|
r.defaulttimezone=defaulttimezone
|
||||||
r.weightcategory = weightcategory
|
r.weightcategory = weightcategory
|
||||||
r.getemailnotifications = getemailnotifications
|
r.getemailnotifications = getemailnotifications
|
||||||
|
r.defaultlandingpage = defaultlandingpage
|
||||||
r.save()
|
r.save()
|
||||||
form = RowerForm(instance=r)
|
form = RowerForm(instance=r)
|
||||||
powerform = RowerPowerForm(instance=r)
|
powerform = RowerPowerForm(instance=r)
|
||||||
|
|||||||
Reference in New Issue
Block a user