Private
Public Access
1
0

export forms with workout types

This commit is contained in:
2026-03-13 13:08:58 +01:00
parent 734fbfe133
commit 59d40dd95d
5 changed files with 20 additions and 9 deletions

View File

@@ -821,6 +821,15 @@ class DateRangeForm(forms.Form):
'autoclose': True,
}
# same as above but has check boxes for workout types to show in the selected date range
class DateRangeWorkoutTypeForm(DateRangeForm):
typeselectchoices = [("All", "All")]
for wtype, verbose in mytypes.workouttypes_ordered.items():
typeselectchoices.append((wtype, verbose))
workouttype = forms.ChoiceField(initial='All', choices=typeselectchoices)
class FitnessMetricForm(forms.Form):
startdate = forms.DateField(

View File

@@ -361,7 +361,8 @@ import io
import zipfile
@app.task
def email_all_user_workouts_zip(rower, start_date=None, end_date=None, debug=False, **kwargs):
def email_all_user_workouts_zip(rower, start_date, end_date,
workouttype, debug=False, **kwargs):
# Get all workouts for this user, optionally filtered by date range
workouts = Workout.objects.filter(user=rower).order_by('-date')
@@ -370,10 +371,9 @@ def email_all_user_workouts_zip(rower, start_date=None, end_date=None, debug=Fal
workouts = workouts.filter(date__gte=start_date)
if end_date:
workouts = workouts.filter(date__lte=end_date)
# for debug, limit to 5 workouts
if settings.DEBUG:
workouts = workouts[:5]
if workouttype != 'All':
workouts = workouts.filter(workouttype=workouttype)
if not workouts.exists():
dologging('export_all_workouts.log', f"No workouts found for user {rower.user.id} in date range {start_date} to {end_date}")
@@ -388,7 +388,7 @@ def email_all_user_workouts_zip(rower, start_date=None, end_date=None, debug=Fal
rowdata = rdata(csvfile=workout.csvfilename)
workouttype = mytypes.fitmapping.get(workout.workouttype, 'generic')
fit_filename = f"workout_{workout.id}_{workout.date.strftime('%Y%m%d')}.fit"
fit_filename = f"workout_{workouttype}_{workout.id}_{workout.date.strftime('%Y%m%d')}.fit"
# exporttofit creates a file, we need to add it to the zip_file
rowdata.exporttofit(fit_filename, sport=workouttype, notes=workout.name)
zip_file.write(fit_filename, arcname=fit_filename)

Binary file not shown.

View File

@@ -282,17 +282,18 @@ def export_all_workouts_zip_view(request):
r = getrower(request.user)
if request.method == 'GET':
form = DateRangeForm()
form = DateRangeWorkoutTypeForm()
elif request.method == 'POST':
form = DateRangeForm(request.POST)
form = DateRangeWorkoutTypeForm(request.POST)
if not form.is_valid():
messages.error(request, "Invalid date range. Please try again.")
return render(request, "export_workouts_daterange.html", {'form': form})
startdate = form.cleaned_data['startdate']
enddate = form.cleaned_data['enddate']
workouttype = form.cleaned_data['workouttype']
myqueue(queuehigh, email_all_user_workouts_zip, r, startdate, enddate)
myqueue(queuehigh, email_all_user_workouts_zip, r, startdate, enddate, workouttype)
successmessage = "A download link will be sent to you per email"
messages.info(request, successmessage)

View File

@@ -138,6 +138,7 @@ from django.utils.datastructures import MultiValueDictKeyError
from django.utils import timezone, translation
from django.core.mail import send_mail, BadHeaderError
from rowers.forms import (
DateRangeWorkoutTypeForm,
SummaryStringForm, StrokeDataForm,
StatsOptionsForm, PredictedPieceForm, DateRangeForm, DeltaDaysForm,
FitnessMetricForm, PredictedPieceFormNoDistance,