adding rpe editing
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user