diff --git a/rowers/forms.py b/rowers/forms.py index 3f2ab3ca..7b7f2cc4 100644 --- a/rowers/forms.py +++ b/rowers/forms.py @@ -11,6 +11,7 @@ from django.forms import ModelForm import dataprep import types import datetime +from django.forms import formset_factory # login form class LoginForm(forms.Form): @@ -128,6 +129,25 @@ class WorkFlowMiddlePanelForm(forms.Form): panels = defaultmiddle super(WorkFlowMiddlePanelForm,self).__init__(*args, **kwargs) + +class WorkFlowLeftPanelElement(forms.Form): + panelchoices = tuple(list(workflowleftpanel)+[('None','None')]) + + panel = forms.ChoiceField( + label='', + choices=panelchoices, + initial='None', + ) + +class WorkFlowMiddlePanelElement(forms.Form): + panelchoices = tuple(list(workflowmiddlepanel)+[('None','None')]) + + panel = forms.ChoiceField( + label='', + choices=panelchoices, + initial='None', + ) + # The form to indicate additional actions to be performed immediately # after a successful upload diff --git a/rowers/templates/workflow.html b/rowers/templates/workflow.html index ebd65dd1..01a0d55c 100644 --- a/rowers/templates/workflow.html +++ b/rowers/templates/workflow.html @@ -33,7 +33,7 @@ {% block left_panel %}

- Configure this page + Configure this page

{% for templateName in leftTemplates %} diff --git a/rowers/templates/workflowconfig2.html b/rowers/templates/workflowconfig2.html new file mode 100644 index 00000000..86b1e7f5 --- /dev/null +++ b/rowers/templates/workflowconfig2.html @@ -0,0 +1,54 @@ +{% extends "base.html" %} + +{% block title %}Change Rower Export Settings{% endblock %} + +{% block content %} + + + + + +
+ {% if workoutid %} +
+

+ Return to Workout +

+
+ {% endif %} +
+

Workflow Page Configuration

+

On this page, you can configure the content of your "Workflow" page + for each workout. If you want to remove an element, change it to "None". + You can add one new element at a time.

+
+

Left Panel

+
+ {{ leftpanel_formset.management_form }} + + {{ leftpanel_formset.as_table }} +
+ {% csrf_token %} + +
+
+ +
+

Middle Panel

+
+ {{ middlepanel_formset.management_form }} + + {{ middlepanel_formset.as_table }} +
+ {% csrf_token %} + +
+
+ +
+
+ + + + +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 2331bc34..1691e9ae 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -313,6 +313,7 @@ urlpatterns = [ url(r'^me/c2refresh/$',views.rower_c2_token_refresh), url(r'^me/favoritecharts/$',views.rower_favoritecharts_view), url(r'^me/workflowconfig$',views.workout_workflow_config_view), + url(r'^me/workflowconfig2$',views.workout_workflow_config2_view), url(r'^email/send/$', views.sendmail), url(r'^email/thankyou/$', TemplateView.as_view(template_name='thankyou.html'), name='thankyou'), url(r'^email/$', TemplateView.as_view(template_name='email.html'), name='email'), diff --git a/rowers/views.py b/rowers/views.py index 3b84a33c..0faed633 100644 --- a/rowers/views.py +++ b/rowers/views.py @@ -23,6 +23,7 @@ from django.contrib.auth import authenticate, login, logout from rowers.forms import ( LoginForm,DocumentsForm,UploadOptionsForm, TeamUploadOptionsForm,WorkFlowLeftPanelForm,WorkFlowMiddlePanelForm, + WorkFlowLeftPanelElement,WorkFlowMiddlePanelElement, ) from django.core.urlresolvers import reverse from django.core.exceptions import PermissionDenied @@ -5864,6 +5865,7 @@ def workout_workflow_config_view(request): r = getrower(request.user) + if request.method == 'POST' and 'leftpanel' in request.POST: formleft = WorkFlowLeftPanelForm(request.POST) if formleft.is_valid(): @@ -5877,20 +5879,99 @@ def workout_workflow_config_view(request): r.workflowmiddlepanel = middlepanel r.save() + formleft = WorkFlowLeftPanelForm(instance=r) formmiddle = WorkFlowMiddlePanelForm(instance=r) - - # Add processing of POST data + tmplt = 'workflowconfig.html' - return render(request,'workflowconfig.html', + + return render(request,tmplt, { 'rower':r, 'formleft':formleft, 'formmiddle':formmiddle, 'workoutid': workoutid, }) + +@login_required() +def workout_workflow_config2_view(request): + request.session['referer'] = absolute(request)['PATH'] + request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE + try: + workoutid = request.session['lastworkout'] + except KeyError: + workoutid = 0 + + + r = getrower(request.user) + + MiddlePanelFormSet = formset_factory(WorkFlowMiddlePanelElement,extra=1) + LeftPanelFormSet = formset_factory(WorkFlowLeftPanelElement,extra=1) + + if request.method == 'POST': + wasmiddle = [1 for key,value in request.POST.items() if 'middlepanel' in key.lower()] + wasleft = [1 for key,valye in request.POST.items() if 'leftpanel' in key.lower()] + if wasmiddle: + middlepanel_formset = MiddlePanelFormSet(request.POST, + prefix='middlepanel') + newmiddlepanel = [] + if middlepanel_formset.is_valid(): + for form in middlepanel_formset: + value = form.cleaned_data.get('panel') + if value != 'None': + newmiddlepanel.append(value) + + + newmiddlepanel = [i for i in newmiddlepanel if i != None] + r.workflowmiddlepanel = newmiddlepanel + try: + r.save() + except IntegrityError: + messages.error(request,'Something went wrong') + if wasleft: + leftpanel_formset = LeftPanelFormSet(request.POST, + prefix='leftpanel') + newleftpanel = [] + if leftpanel_formset.is_valid(): + for form in leftpanel_formset: + value = form.cleaned_data.get('panel') + if value != 'None': + newleftpanel.append(value) + + + newleftpanel = [i for i in newleftpanel if i != None] + r.workflowleftpanel = newleftpanel + try: + r.save() + except IntegrityError: + messages.error(request,'Something went wrong') + + leftpanelform_data = [{'panel':panel} + for panel in r.workflowleftpanel] + + + middlepanelform_data = [{'panel':panel} + for panel in r.workflowmiddlepanel] + + leftpanel_formset = LeftPanelFormSet(initial=leftpanelform_data, + prefix='leftpanel') + middlepanel_formset = MiddlePanelFormSet(initial=middlepanelform_data, + prefix='middlepanel') + + + tmplt = 'workflowconfig2.html' + + return render(request,tmplt, + { + 'rower':r, + 'leftpanel_formset':leftpanel_formset, + 'middlepanel_formset':middlepanel_formset, + 'workoutid': workoutid, + }) + + # Workflow View @login_required() def workout_workflow_view(request,id):