Private
Public Access
1
0

adding rpe editing

This commit is contained in:
Sander Roosendaal
2022-11-25 17:14:19 +01:00
parent c324ee796a
commit b4973d8f52
8 changed files with 355 additions and 36 deletions

View File

@@ -159,22 +159,20 @@ from rowers.models import (
VirtualRaceFollower, TombStone, InstantPlan,
PlannedSessionStep,InStrokeAnalysis, ForceCurveAnalysis
)
from rowers.models import (
RowerPowerForm, RowerHRZonesForm, RowerForm, RowerCPForm, GraphImage, AdvancedWorkoutForm,
RowerPowerZonesForm, AccountRowerForm, UserForm,
Team, TeamForm, TeamInviteForm, TeamInvite, TeamRequest,
WorkoutComment, WorkoutCommentForm, RowerExportForm,
CalcAgePerformance,
PowerTimeFitnessMetric, BlogPost,
PlannedSessionForm, PlannedSessionTemplateForm,
PlannedSessionFormSmall, GeoCourseEditForm, VirtualRace,
VirtualRaceForm, VirtualRaceResultForm, RowerImportExportForm,
IndoorVirtualRaceResultForm, IndoorVirtualRaceResult,
IndoorVirtualRaceForm, PlannedSessionCommentForm,
Alert, Condition, StaticChartRowerForm,
FollowerForm, VirtualRaceAthleteForm, InstantPlanForm, DataRowerForm,
StepEditorForm,
)
from rowers.models import ( RowerPowerForm, RowerHRZonesForm,
RowerForm, RowerCPForm, GraphImage, AdvancedWorkoutForm,
RowerPowerZonesForm, AccountRowerForm, UserForm, Team, TeamForm,
TeamInviteForm, TeamInvite, TeamRequest, WorkoutComment,
WorkoutCommentForm, RowerExportForm, CalcAgePerformance,
PowerTimeFitnessMetric, BlogPost, PlannedSessionForm,
PlannedSessionTemplateForm, PlannedSessionFormSmall,
GeoCourseEditForm, VirtualRace, VirtualRaceForm,
VirtualRaceResultForm, RowerImportExportForm, WorkoutRPEForm,
IndoorVirtualRaceResultForm, IndoorVirtualRaceResult,
IndoorVirtualRaceForm, PlannedSessionCommentForm, Alert,
Condition, StaticChartRowerForm, FollowerForm,
VirtualRaceAthleteForm, InstantPlanForm, DataRowerForm,
StepEditorForm, )
from rowers.models import (
FavoriteForm, BaseFavoriteFormSet, SiteAnnouncement, BasePlannedSessionFormSet,
get_course_timezone, BaseConditionFormSet,

View File

@@ -1921,6 +1921,99 @@ def plannedsession_compare_view(request, id=0, userid=0):
return HttpResponseRedirect(url)
# set RPE for list of workouts
@login_required()
def workouts_setrpe_view(request):
startdate, enddate = get_dates_timeperiod(
request, defaulttimeperiod='lastyear')
r = getrequestrower(request)
startdate = datetime.datetime.combine(startdate, datetime.time())
enddate = datetime.datetime.combine(enddate, datetime.time(23, 59, 59))
workouts = Workout.objects.filter(
user=r,rpe=0,
startdatetime__gte=startdate,
startdatetime__lte=enddate
).order_by("-date", "-starttime")
dateform = DateRangeForm(initial={
'startdate': startdate,
'enddate': enddate,
})
WorkoutsRPEFormSet = modelformset_factory(
Workout,
form=WorkoutRPEForm,
)
if request.method == 'POST':
dateform = DateRangeForm(request.POST)
rpe_formset = WorkoutsRPEFormSet(request.POST)
if dateform.is_valid(): # pragma: no cover
startdate = dateform.cleaned_data['startdate']
enddate = dateform.cleaned_data['enddate']
if rpe_formset.is_valid():
for item in rpe_formset.cleaned_data:
rpe = item['rpe']
workout = item['id']
if workout:
workout.rpe = rpe
workout.save()
workouts = Workout.objects.filter(
user=r,rpe=0,
startdatetime__gte=startdate,
startdatetime__lte=enddate
).order_by("-date", "-starttime")
rpe_formset = WorkoutsRPEFormSet(queryset=workouts)
usertimezone = pytz.timezone(r.defaulttimezone)
startdate = datetime.datetime.combine(
startdate, datetime.time()).astimezone(usertimezone)
enddate = datetime.datetime.combine(
enddate, datetime.time(23, 59, 59)).astimezone(usertimezone)
if enddate < startdate: # pragma: no cover
s = enddate
enddate = startdate
startdate = s
today = timezone.now()
announcements = SiteAnnouncement.objects.filter(
expires__gte=today
).order_by(
"-created",
"-id"
)
breadcrumbs = [
{
'url': '/rowers/list-workouts/',
'name': 'Workouts'
},
{
'url': '/rowers/workouts/setrpe/',
'name': 'Set RPE'
}
]
return render(request,'workouts_rpe.html',
{
'workouts': workouts,
'active': 'nav-workouts',
'rower': r,
'breadcrumbs': breadcrumbs,
'dateform': dateform,
'startdate': startdate,
'enddate': enddate,
'rpe_formset': rpe_formset,
})
# List Workouts
@login_required()
@@ -2111,6 +2204,12 @@ def workouts_view(request, message='', successmessage='',
]
timeperiod = startdate.strftime(
'%Y-%m-%d')+'/'+enddate.strftime('%Y-%m-%d')
norpecount = len([w for w in workouts if w.rpe==0])
if norpecount:
messages.info(request,'You have workouts with no RPE value set. \
Click <a href="/rowers/workouts/setrpe">here</a> to update them.')
return render(request, 'list_workouts.html',
{'workouts': workouts,
'active': 'nav-workouts',