better use of forms in bulk actions
This commit is contained in:
@@ -1265,6 +1265,12 @@ class ForceCurveMultipleCompareForm(forms.Form):
|
|||||||
widget=forms.CheckboxSelectMultiple()
|
widget=forms.CheckboxSelectMultiple()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
bulkactions = (
|
||||||
|
('remove','remove'),
|
||||||
|
)
|
||||||
|
class WorkoutBulkActions(forms.Form):
|
||||||
|
action = forms.ChoiceField(
|
||||||
|
choices=bulkactions, label='Action', required=True, initial='remove')
|
||||||
|
|
||||||
class WorkoutMultipleCompareForm(forms.Form):
|
class WorkoutMultipleCompareForm(forms.Form):
|
||||||
workouts = forms.ModelMultipleChoiceField(
|
workouts = forms.ModelMultipleChoiceField(
|
||||||
|
|||||||
@@ -97,10 +97,7 @@
|
|||||||
<form enctype="multipart/form-data" method="post">
|
<form enctype="multipart/form-data" method="post">
|
||||||
<h3>Bulk Operation</h3>
|
<h3>Bulk Operation</h3>
|
||||||
<p>Please select workouts from the list to do a bulk operation on.</p>
|
<p>Please select workouts from the list to do a bulk operation on.</p>
|
||||||
<select name="selectworkouts_operation" id="selectworkouts_operation">
|
{{ actionform.as_p }}
|
||||||
<option value="">--Please choose an option--</option>
|
|
||||||
<option value="remove">Remove</option>
|
|
||||||
</select>
|
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input name='selectworkouts' type="submit" value="Submit">
|
<input name='selectworkouts' type="submit" value="Submit">
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@@ -7,23 +7,23 @@
|
|||||||
{% block main %}
|
{% block main %}
|
||||||
<h1>Bulk Actions</h1>
|
<h1>Bulk Actions</h1>
|
||||||
<ul class="main-content">
|
<ul class="main-content">
|
||||||
<li class="grid_2">
|
<li class="grid_4">
|
||||||
<p>
|
<form action="" method="post">
|
||||||
Edit and confirm the action you want to perform on the following workouts:
|
<p>
|
||||||
</p>
|
Edit and confirm the action you want to perform on the following workouts:
|
||||||
{% for workout in workouts %}
|
</p>
|
||||||
<p>{{ workout }}</p>
|
<p>
|
||||||
{% endfor %}
|
{{ form.as_p }}
|
||||||
<p>
|
</p>
|
||||||
Action: {{ action }}
|
<p>
|
||||||
</p>
|
{{ actionform.as_p }}
|
||||||
</li>
|
</p>
|
||||||
<li class="grid_2">
|
</li>
|
||||||
<form action="" method="post">
|
<li class="grid_2">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input type="submit" value="Confirm">
|
<input type="submit" value="Confirm">
|
||||||
|
</li>
|
||||||
</form>
|
</form>
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ from django.http import (
|
|||||||
)
|
)
|
||||||
from django.contrib.auth import authenticate, login, logout
|
from django.contrib.auth import authenticate, login, logout
|
||||||
from rowers.forms import (
|
from rowers.forms import (
|
||||||
|
WorkoutBulkActions,
|
||||||
ForceCurveOptionsForm, HistoForm, TeamMessageForm,
|
ForceCurveOptionsForm, HistoForm, TeamMessageForm,
|
||||||
LoginForm, DocumentsForm, UploadOptionsForm, ImageForm, CourseForm,
|
LoginForm, DocumentsForm, UploadOptionsForm, ImageForm, CourseForm,
|
||||||
CourseConfirmForm, ResampleForm,
|
CourseConfirmForm, ResampleForm,
|
||||||
|
|||||||
@@ -2040,7 +2040,6 @@ def workouts_bulk_actions(request):
|
|||||||
workouts = []
|
workouts = []
|
||||||
try:
|
try:
|
||||||
for encid in workoutids:
|
for encid in workoutids:
|
||||||
print(encid)
|
|
||||||
w = get_workout_by_opaqueid(request, encid)
|
w = get_workout_by_opaqueid(request, encid)
|
||||||
if w.user == r:
|
if w.user == r:
|
||||||
workouts.append(w)
|
workouts.append(w)
|
||||||
@@ -2048,15 +2047,30 @@ def workouts_bulk_actions(request):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if action == 'remove':
|
actionform = WorkoutBulkActions(request.POST)
|
||||||
for w in workouts:
|
form = WorkoutMultipleCompareForm(request.POST)
|
||||||
messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id)))
|
if form.is_valid() and actionform.is_valid():
|
||||||
w.delete()
|
workouts = form.cleaned_data['workouts']
|
||||||
url = reverse('workouts_view')
|
action = actionform.cleaned_data['action']
|
||||||
return HttpResponseRedirect(url)
|
if action == 'remove':
|
||||||
|
for w in workouts:
|
||||||
|
messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id)))
|
||||||
|
w.delete()
|
||||||
|
url = reverse('workouts_view')
|
||||||
|
return HttpResponseRedirect(url)
|
||||||
|
|
||||||
|
else:
|
||||||
|
actionform = WorkoutBulkActions()
|
||||||
|
actionform.fields["action"].initial = action
|
||||||
|
form = WorkoutMultipleCompareForm()
|
||||||
|
form.fields["workouts"].queryset = Workout.objects.filter(id__in=[w.id for w in workouts])
|
||||||
|
form.fields["workouts"].initial = workouts
|
||||||
|
|
||||||
|
|
||||||
return render(request,'workout_bulk_actions.html',
|
return render(request,'workout_bulk_actions.html',
|
||||||
{'action':action,
|
{'action':action,
|
||||||
|
'actionform':actionform,
|
||||||
|
'form':form,
|
||||||
'workouts':workouts})
|
'workouts':workouts})
|
||||||
|
|
||||||
# List Workouts
|
# List Workouts
|
||||||
@@ -2078,7 +2092,7 @@ def workouts_view(request, message='', successmessage='',
|
|||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
if 'selectworkouts' in request.POST:
|
if 'selectworkouts' in request.POST:
|
||||||
request.session['action']=request.POST['selectworkouts_operation']
|
request.session['action']=request.POST['action']
|
||||||
request.session['ids'] = request.POST.getlist('workoutid')
|
request.session['ids'] = request.POST.getlist('workoutid')
|
||||||
url = reverse('workouts_bulk_actions')
|
url = reverse('workouts_bulk_actions')
|
||||||
return HttpResponseRedirect(url)
|
return HttpResponseRedirect(url)
|
||||||
@@ -2261,10 +2275,13 @@ def workouts_view(request, message='', successmessage='',
|
|||||||
Click <a href="/rowers/workouts/setrpe">here</a> to update them. \
|
Click <a href="/rowers/workouts/setrpe">here</a> to update them. \
|
||||||
You can switch off this warning in <a href="/rowers/me/edit">settings</a>.')
|
You can switch off this warning in <a href="/rowers/me/edit">settings</a>.')
|
||||||
|
|
||||||
|
actionform = WorkoutBulkActions()
|
||||||
|
|
||||||
return render(request, 'list_workouts.html',
|
return render(request, 'list_workouts.html',
|
||||||
{'workouts': workouts,
|
{'workouts': workouts,
|
||||||
'active': 'nav-workouts',
|
'active': 'nav-workouts',
|
||||||
'rower': r,
|
'rower': r,
|
||||||
|
'actionform': actionform,
|
||||||
'searchform': searchform,
|
'searchform': searchform,
|
||||||
'breadcrumbs': breadcrumbs,
|
'breadcrumbs': breadcrumbs,
|
||||||
'dateform': dateform,
|
'dateform': dateform,
|
||||||
|
|||||||
Reference in New Issue
Block a user