Private
Public Access
1
0

workflow config form working

This commit is contained in:
Sander Roosendaal
2017-10-18 15:44:51 +02:00
parent 3bec917456
commit 13dee6305d
4 changed files with 108 additions and 45 deletions

View File

@@ -1,4 +1,5 @@
from django import forms from django import forms
from django.contrib.admin.widgets import FilteredSelectMultiple
from rowers.models import Workout from rowers.models import Workout
from rowers.rows import validate_file_extension,must_be_csv from rowers.rows import validate_file_extension,must_be_csv
from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.forms import UserCreationForm
@@ -58,37 +59,72 @@ class DocumentsForm(forms.Form):
fields = ['title','file','workouttype','fileformat'] fields = ['title','file','workouttype','fileformat']
from utils import workflowleftpanel,workflowmiddlepanel from utils import workflowleftpanel,workflowmiddlepanel
defaultleft = [p[0] for p in workflowleftpanel]
defaultmiddle = [p[0] for p in workflowmiddlepanel]
# Form to change Workflow page layout # Form to change Workflow page layout
class WorkFlowLeftPanelForm(forms.Form): class WorkFlowLeftPanelForm(forms.Form):
panels = ['panel_editbuttons.html','panel_stats.html','panel_staticchart.html'] panels = defaultleft
leftpanel = forms.MultipleChoiceField(label='Left Panel',
choices=workflowleftpanel, leftpanel = forms.MultipleChoiceField(
initial=panels) label='',
choices=workflowleftpanel,
initial=panels,
widget=FilteredSelectMultiple(
('elements'),
False
)
)
class Media:
css = {
'all':['admin/css/widgets.css',]
# 'css/uid-manage-form.css'],
}
js = ['/admin/jsi18n/']
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
if 'instance' in kwargs: if 'instance' in kwargs:
r = kwargs.pop('instance') r = kwargs.pop('instance')
panels = r.workflowleftpanel panels = r.workflowleftpanel
self.base_fields['leftpanel'].initial=panels
else: else:
panels = ['panel_editbuttons.html','panel_stats.html','panel_staticchart.html'] panels = defaultleft
super(WorkFlowLeftPanelForm,self).__init__(*args, **kwargs) super(WorkFlowLeftPanelForm,self).__init__(*args, **kwargs)
class WorkFlowMiddlePanelForm(forms.Form): class WorkFlowMiddlePanelForm(forms.Form):
panels = ['panel_statcharts.html', panels = defaultmiddle
'flexthumbnails.html',
'panel_summary.html']
middlepanel = forms.MultipleChoiceField(
label='',
choices=workflowmiddlepanel,
initial=panels,
widget=FilteredSelectMultiple(
('elements'),
False
)
)
class Media:
css = {
'all':['admin/css/widgets.css',]
# 'css/uid-manage-form.css'],
}
js = ['/admin/jsi18n/']
middlepanel = forms.MultipleChoiceField(label='Middle Panel',
choices=workflowmiddlepanel,
initial=panels)
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
if 'instance' in kwargs: if 'instance' in kwargs:
r = kwargs.pop('instance') r = kwargs.pop('instance')
panels = r.workflowleftpanel panels = r.workflowmiddlepanel
self.base_fields['middlepanel'].initial=panels
else: else:
panels = ['panel_editbuttons.html','panel_stats.html','panel_staticchart.html'] panels = defaultmiddle
super(WorkFlowMiddlePanelForm,self).__init__(*args, **kwargs) super(WorkFlowMiddlePanelForm,self).__init__(*args, **kwargs)

View File

@@ -196,7 +196,11 @@ class TeamRequest(models.Model):
issuedate = models.DateField(default=timezone.now) issuedate = models.DateField(default=timezone.now)
code = models.CharField(max_length=150,unique=True) code = models.CharField(max_length=150,unique=True)
from utils import workflowleftpanel,workflowmiddlepanel
defaultleft = [p[0] for p in workflowleftpanel]
defaultmiddle = [p[0] for p in workflowmiddlepanel]
# Extension of User with rowing specific data # Extension of User with rowing specific data
class Rower(models.Model): class Rower(models.Model):
weightcategories = ( weightcategories = (
@@ -276,16 +280,9 @@ class Rower(models.Model):
'Pwr AN']) 'Pwr AN'])
# Site Settings # Site Settings
workflowleftpanel = TemplateListField(default=[ workflowleftpanel = TemplateListField(default=defaultleft)
'panel_statcharts.html',
'flexthumbnails.html',
'panel_summary.html'])
workflowmiddlepanel = TemplateListField(default=[ workflowmiddlepanel = TemplateListField(default=defaultmiddle)
'panel_editbuttons.html',
'panel_stats.html',
'panel_staticchart.html',
])
# 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)

View File

@@ -4,17 +4,16 @@
{% block content %} {% block content %}
<script type="text/javascript" src="/static/js/reorderSelect.js"></script> <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>
{{ formmiddle.media }}
<div class="grid_12 alpha"> <div class="grid_12 alpha">
<h1>Workflow Page Configuration</h1> <h1>Workflow Page Configuration</h1>
<p>
Here, you can configure which elements, and in which order, are visible on the Workflow page. <h2>Left Panel</h2>
</p>
<p>
Select the elements you want to have in each panel. You can select multiple by holding down Control while clicking on an item. Similarly, you can unselect one item by holding down Control while clicking. Use the arrows to change the order by moving selected items up, resp down. Press the Save button to store your configuration.
</p>
<form enctype="multipart/form-data" action="" method="post"> <form enctype="multipart/form-data" action="" method="post">
<div class="grid_4 alpha"> <div class="grid_11 alpha">
<p> <p>
{% if formleft.errors %} {% if formleft.errors %}
<p style="color: red;"> <p style="color: red;">
@@ -28,28 +27,45 @@
{% csrf_token %} {% csrf_token %}
</p> </p>
</div> </div>
<div class="grid_2"> <div class="grid_1 omega">
<img src="/static/img/moveup.gif" alt="Move Up" onclick="moveUp('id_leftpanel')" onmouseover="style.cursor=pointer;" /><br /> <img src="/static/img/moveup.gif" alt="Move Up" onclick="moveUp('id_leftpanel_to')" style="cursor:pointer" /><br />
<img src="/static/img/movedn.gif" alt="Move Down" onclick="moveDown('id_leftpanel')" /> <img src="/static/img/movedn.gif" alt="Move Down" onclick="moveDown('id_leftpanel_to')" style="cursor:pointer" />
</div> </div>
<div class="grid_4"> </div>
<div class="grid_12 alpha">
<div class="grid_4 prefix_4 suffix_4">
<input class="grid_4 button green" type="submit" value="Save">
</div>
</form>
</div>
<div class="grid_12 alpha">
<h2>Middle Panel</h2>
<form enctype="multipart/form-data" action="" method="post">
<div class="grid_11 alpha">
<p> <p>
{% if formmiddle.errors %} {% if formmiddle.errors %}
<p style="color: red;"> <p style="color: red;">
Please correct the error{{ formmiddle.errors|pluralize }} below. Please correct the error{{ formmiddle.errors|pluralize }} below.
</p> </p>
{% endif %} {% endif %}
<table> <table>
{{ formmiddle.as_table }} {{ formmiddle.as_table }}
</table> </table>
{% csrf_token %}
</div> </div>
<div class="grid_2 omega"> <div class="grid_1 omega">
<img src="/static/img/moveup.gif" alt="Move Up" onclick="moveUp('id_middlepanel')" onmouseover="style.cursor=pointer;" /><br /> <img src="/static/img/moveup.gif" alt="Move Up" onclick="moveUp('id_middlepanel_to')" style="cursor:pointer" /><br />
<img src="/static/img/movedn.gif" alt="Move Down" onclick="moveDown('id_middlepanel')" /> <img src="/static/img/movedn.gif" alt="Move Down" onclick="moveDown('id_middlepanel_to')" style="cursor:pointer" />
</div> </div>
</div>
<div class="grid_12 alpha">
<div class="grid_4 prefix_4 suffix_4"> <div class="grid_4 prefix_4 suffix_4">
<input class="grid_4 button green" type="submit" value="Save"> <input class="grid_4 button green" type="submit" value="Save">
</div>
</form> </form>
</div> </div>

View File

@@ -5858,11 +5858,25 @@ def workout_workflow_config_view(request):
request.session['referer'] = absolute(request)['PATH'] request.session['referer'] = absolute(request)['PATH']
request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE request.session[translation.LANGUAGE_SESSION_KEY] = USER_LANGUAGE
r = getrower(request.user) r = getrower(request.user)
formleft = WorkFlowLeftPanelForm(instance=r) if request.method == 'POST' and 'leftpanel' in request.POST:
formmiddle = WorkFlowMiddlePanelForm() formleft = WorkFlowLeftPanelForm(request.POST)
if formleft.is_valid():
leftpanel = formleft.cleaned_data['leftpanel']
r.workflowleftpanel = leftpanel
r.save()
if request.method == 'POST' and 'middlepanel' in request.POST:
formmiddle = WorkFlowMiddlePanelForm(request.POST)
if formmiddle.is_valid():
middlepanel = formmiddle.cleaned_data['middlepanel']
r.workflowmiddlepanel = middlepanel
r.save()
formleft = WorkFlowLeftPanelForm(instance=r)
formmiddle = WorkFlowMiddlePanelForm(instance=r)
# Add processing of POST data
# Add processing of POST data
return render(request,'workflowconfig.html', return render(request,'workflowconfig.html',
{ {
'rower':r, 'rower':r,
@@ -5909,9 +5923,9 @@ def workout_workflow_view(request,id):
statcharts = GraphImage.objects.filter(workout=row) statcharts = GraphImage.objects.filter(workout=row)
# This will be user configurable in the future # This will be user configurable in the future
middleTemplates = r.workflowleftpanel middleTemplates = r.workflowmiddlepanel
leftTemplates = r.workflowmiddlepanel leftTemplates = r.workflowleftpanel
return render(request, return render(request,
'workflow.html', 'workflow.html',