Private
Public Access
1
0

Merge branch 'feature/simpleworkflow' into develop

This commit is contained in:
Sander Roosendaal
2017-10-20 08:49:17 +02:00
5 changed files with 160 additions and 4 deletions

View File

@@ -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

View File

@@ -33,7 +33,7 @@
{% block left_panel %}
<div class="grid_2 alpha">
<p>
<a class="button gray small" href="/rowers/me/workflowconfig">Configure this page</a>
<a class="button gray small" href="/rowers/me/workflowconfig2">Configure this page</a>
</p>
</div>
{% for templateName in leftTemplates %}

View File

@@ -0,0 +1,54 @@
{% extends "base.html" %}
{% block title %}Change Rower Export Settings{% endblock %}
{% block content %}
<script type="text/javascript" src="/static/js/reorderSelect.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<div class="grid_12 alpha">
{% if workoutid %}
<div class="grid_2 suffix_10 alpha">
<p>
<a class="button gray small" href="/rowers/workout/{{ workoutid }}/workflow">Return to Workout</a>
</p>
</div>
{% endif %}
<div class-"grid_12 alpha">
<h1>Workflow Page Configuration</h1>
<p>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.</p>
<div class="grid_6 alpha">
<h2>Left Panel</h2>
<form enctype="multipart/form-data" action="" method="post">
{{ leftpanel_formset.management_form }}
<table>
{{ leftpanel_formset.as_table }}
</table>
{% csrf_token %}
<input class="grid_2 alpha button green" type="submit" value="Save">
</form>
</div>
<div class="grid_6 omega ">
<h2>Middle Panel</h2>
<form enctype="multipart/form-data" action="" method="post">
{{ middlepanel_formset.management_form }}
<table>
{{ middlepanel_formset.as_table }}
</table>
{% csrf_token %}
<input class="grid_2 alpha button green" type="submit" value="Save">
</form>
</div>
</div>
</div>
{% endblock %}

View File

@@ -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'),

View File

@@ -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):