Private
Public Access
1
0

adding fitness

This commit is contained in:
2025-05-27 20:50:04 +02:00
parent 9613952763
commit cea3cde6ef
6 changed files with 67 additions and 13 deletions
+37 -11
View File
@@ -17,9 +17,9 @@ def weightfromrecord(row,metricchoice):
return 0 # pragma: no cover return 0 # pragma: no cover
def getfatigues(df, fatigues, fitnesses, dates, impulses, startdate, kfatigue, kfitness): def getfatigues(df, fatigues, fitnesses, dates, impulses, startdate, kfatigue, kfitness,actualfitness=0, actualfatigue=0):
fatigue = 0 fatigue = actualfatigue
fitness = 0 fitness = actualfitness
impulses = [] impulses = []
for f in fatigues: for f in fatigues:
@@ -57,13 +57,28 @@ def getfatigues(df, fatigues, fitnesses, dates, impulses, startdate, kfatigue, k
return fatigues, fitnesses, dates, impulses return fatigues, fitnesses, dates, impulses
def calculate_fitness(rower): def calculate_fitness(rower, reset=False):
workouts = Workout.objects.filter(user=rower, date__gte=datetime.date.today() - datetime.timedelta(days=90), try:
duplicate=False).order_by('date') w_last = Workout.objects.get(id=rower.last_workout)
datetime_last = w_last.startdatetime
except Workout.DoesNotExist:
w_last = None
datetime_last = datetime.datetime.now() - datetime.timedelta(days=90)
if reset:
rower.last_workout = 0
rower.actualfit = 0
rower.actualfatigue = 0
rower.save()
datetime_last = datetime.datetime.now() - datetime.timedelta(days=90)
workouts = Workout.objects.filter(user=rower, startdatetime__gt=datetime_last,
duplicate=False).order_by('date').exclude(id=rower.last_workout)
kfitness = rower.kfit kfitness = rower.kfit
kfatigue = rower.kfatigue kfatigue = rower.kfatigue
actualfitness = rower.actualfit
actualfatigue = rower.actualfatigue
records = [] records = []
@@ -81,13 +96,15 @@ def calculate_fitness(rower):
df = pl.from_records(records) df = pl.from_records(records)
if df.is_empty(): if df.is_empty():
return 0, 0 return actualfitness, actualfatigue
dates = [arrow.get(w.date).datetime for w in workouts] dates = [arrow.get(w.date).datetime for w in workouts]
impulses = [np.nan for w in workouts] impulses = [np.nan for w in workouts]
fitnesses = [np.nan for w in workouts] fitnesses = [np.nan for w in workouts]
fatigues = [np.nan for w in workouts] fatigues = [np.nan for w in workouts]
fatigues, fitnesses, dates, impulses = getfatigues( fatigues, fitnesses, dates, impulses = getfatigues(
df, df,
fatigues, fatigues,
@@ -95,7 +112,9 @@ def calculate_fitness(rower):
dates, dates,
impulses, impulses,
datetime.date.today()-datetime.timedelta(days=90), datetime.date.today()-datetime.timedelta(days=90),
kfatigue, kfitness kfatigue, kfitness,
actualfitness=actualfitness,
actualfatigue=actualfatigue,
) )
df = pl.DataFrame({ df = pl.DataFrame({
@@ -105,8 +124,15 @@ def calculate_fitness(rower):
'impulse': impulses, 'impulse': impulses,
}) })
endfitness = fitnesses[-2] endfitness = fitnesses[-1]
endfatigue = fatigues[-2] endfatigue = fatigues[-1]
if workouts:
enddate = workouts.last().date
rower.last_workout = workouts.last().id
rower.actualfit = int(endfitness)
rower.actualfatigue = int(endfatigue)
rower.save()
return endfitness, endfatigue return endfitness, endfatigue
+4
View File
@@ -1129,6 +1129,10 @@ class Rower(models.Model):
showfit = models.BooleanField(default=False) showfit = models.BooleanField(default=False)
showfresh = models.BooleanField(default=False) showfresh = models.BooleanField(default=False)
actualfit = models.IntegerField(default=0, verbose_name='Actual Fitness')
actualfatigue = models.IntegerField(default=0, verbose_name='Actual Fatigue')
last_workout = models.BigIntegerField(default=0, verbose_name='Last Workout ID')
pw_ut2 = models.IntegerField(default=124, verbose_name="UT2 Power") pw_ut2 = models.IntegerField(default=124, verbose_name="UT2 Power")
pw_ut1 = models.IntegerField(default=171, verbose_name="UT1 Power") pw_ut1 = models.IntegerField(default=171, verbose_name="UT1 Power")
pw_at = models.IntegerField(default=203, verbose_name="AT Power") pw_at = models.IntegerField(default=203, verbose_name="AT Power")
+24
View File
@@ -0,0 +1,24 @@
{% extends "newbase.html" %}
{% load static %}
{% load rowerfilters %}
{% block title %}Planned Sessions{% endblock %}
{% block main %}
<h1>Load current week</h1>
<form enctype="multipart/form-data" method="post">
<table>
{{ form.as_table }}
</table>
{% csrf_token %}
<input type="submit" value="Submit">
</form>
{% endblock %}
{% block sidebar %}
{% include 'menu_plan.html' %}
{% endblock %}
Binary file not shown.
+2 -2
View File
@@ -4257,12 +4257,12 @@ def currentweekplan_view(request):
}, },
{ {
'url': reverse('currentweekplan_view'), 'url': reverse('currentweekplan_view'),
'name': "Next week" 'name': "Current week"
}, },
] ]
return render(request, return render(request,
'loadnextweek.html', 'loadcurrentweek.html',
{'rower': r, {'rower': r,
'form': form, 'form': form,
'active': active, 'active': active,