Private
Public Access
1
0

adding export form

This commit is contained in:
2024-01-20 15:15:16 +01:00
parent ed3f4741f1
commit 35ec3e3f8d
4 changed files with 35 additions and 1 deletions

View File

@@ -1267,11 +1267,24 @@ class ForceCurveMultipleCompareForm(forms.Form):
bulkactions = ( bulkactions = (
('remove','remove'), ('remove','remove'),
('export','export'),
) )
destinations = (
('C2','C2'),
('strava','strava'),
('sporttracks','sporttracks'),
('trainingpeaks','trainingpeaks')
)
class WorkoutBulkActions(forms.Form): class WorkoutBulkActions(forms.Form):
action = forms.ChoiceField( action = forms.ChoiceField(
choices=bulkactions, label='Action', required=True, initial='remove') choices=bulkactions, label='Action', required=True, initial='remove')
class ExportChoices(forms.Form):
destination = forms.ChoiceField(
choices=destinations, label='Destination', required=False, initial='strava'
)
class WorkoutMultipleCompareForm(forms.Form): class WorkoutMultipleCompareForm(forms.Form):
workouts = forms.ModelMultipleChoiceField( workouts = forms.ModelMultipleChoiceField(
queryset=Workout.objects.filter(), queryset=Workout.objects.filter(),

View File

@@ -18,6 +18,11 @@
<p> <p>
{{ actionform.as_p }} {{ actionform.as_p }}
</p> </p>
{% if action == 'export' %}
<p>
{{ exportchoice.as_p }}
</p>
{% endif %}
</li> </li>
<li class="grid_2"> <li class="grid_2">
{% csrf_token %} {% csrf_token %}

View File

@@ -96,7 +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, WorkoutBulkActions, ExportChoices,
ForceCurveOptionsForm, HistoForm, TeamMessageForm, ForceCurveOptionsForm, HistoForm, TeamMessageForm,
LoginForm, DocumentsForm, UploadOptionsForm, ImageForm, CourseForm, LoginForm, DocumentsForm, UploadOptionsForm, ImageForm, CourseForm,
CourseConfirmForm, ResampleForm, CourseConfirmForm, ResampleForm,

View File

@@ -2,6 +2,7 @@ from shutil import copyfile
from rowers.views.statements import * from rowers.views.statements import *
import rowers.mytypes as mytypes import rowers.mytypes as mytypes
from rowers.integrations import importsources
import numpy import numpy
import rowers.uploads as uploads import rowers.uploads as uploads
import rowers.utils as utils import rowers.utils as utils
@@ -2056,10 +2057,24 @@ def workouts_bulk_actions(request):
for w in workouts: for w in workouts:
messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id))) messages.info(request,'Removed workout '+str(encoder.encode_hex(w.id)))
w.delete() w.delete()
elif action == 'export':
exportchoice = ExportChoices(request.POST)
if exportchoice.is_valid():
destination = exportchoice.cleaned_data['destination']
for w in workouts:
integration = importsources[destination](request.user)
try:
id = integration.workout_export(w)
messages.info(request,'Workout {id} exported to {destination}'.format(id=encoder.encode_hex(w.id),
destination=destination))
except NoTokenError:
messages.error(request,'Export to {destination} of workout {id} failed'.format(id=encoder.encode_hex(w.id),
destination=destination))
url = reverse('workouts_view') url = reverse('workouts_view')
return HttpResponseRedirect(url) return HttpResponseRedirect(url)
else: else:
exportchoice = ExportChoices()
actionform = WorkoutBulkActions() actionform = WorkoutBulkActions()
actionform.fields["action"].initial = action actionform.fields["action"].initial = action
form = WorkoutMultipleCompareForm() form = WorkoutMultipleCompareForm()
@@ -2069,6 +2084,7 @@ def workouts_bulk_actions(request):
return render(request,'workout_bulk_actions.html', return render(request,'workout_bulk_actions.html',
{'action':action, {'action':action,
'exportchoice':exportchoice,
'actionform':actionform, 'actionform':actionform,
'form':form, 'form':form,
'workouts':workouts}) 'workouts':workouts})