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

View File

@@ -17,9 +17,9 @@ def weightfromrecord(row,metricchoice):
return 0 # pragma: no cover
def getfatigues(df, fatigues, fitnesses, dates, impulses, startdate, kfatigue, kfitness):
fatigue = 0
fitness = 0
def getfatigues(df, fatigues, fitnesses, dates, impulses, startdate, kfatigue, kfitness,actualfitness=0, actualfatigue=0):
fatigue = actualfatigue
fitness = actualfitness
impulses = []
for f in fatigues:
@@ -57,13 +57,28 @@ def getfatigues(df, fatigues, fitnesses, dates, impulses, startdate, kfatigue, k
return fatigues, fitnesses, dates, impulses
def calculate_fitness(rower):
workouts = Workout.objects.filter(user=rower, date__gte=datetime.date.today() - datetime.timedelta(days=90),
duplicate=False).order_by('date')
def calculate_fitness(rower, reset=False):
try:
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
kfatigue = rower.kfatigue
actualfitness = rower.actualfit
actualfatigue = rower.actualfatigue
records = []
@@ -81,13 +96,15 @@ def calculate_fitness(rower):
df = pl.from_records(records)
if df.is_empty():
return 0, 0
return actualfitness, actualfatigue
dates = [arrow.get(w.date).datetime for w in workouts]
impulses = [np.nan for w in workouts]
fitnesses = [np.nan for w in workouts]
fatigues = [np.nan for w in workouts]
fatigues, fitnesses, dates, impulses = getfatigues(
df,
fatigues,
@@ -95,7 +112,9 @@ def calculate_fitness(rower):
dates,
impulses,
datetime.date.today()-datetime.timedelta(days=90),
kfatigue, kfitness
kfatigue, kfitness,
actualfitness=actualfitness,
actualfatigue=actualfatigue,
)
df = pl.DataFrame({
@@ -105,8 +124,15 @@ def calculate_fitness(rower):
'impulse': impulses,
})
endfitness = fitnesses[-2]
endfatigue = fatigues[-2]
endfitness = fitnesses[-1]
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

View File

@@ -1129,6 +1129,10 @@ class Rower(models.Model):
showfit = 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_ut1 = models.IntegerField(default=171, verbose_name="UT1 Power")
pw_at = models.IntegerField(default=203, verbose_name="AT Power")

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.

View File

@@ -4257,12 +4257,12 @@ def currentweekplan_view(request):
},
{
'url': reverse('currentweekplan_view'),
'name': "Next week"
'name': "Current week"
},
]
return render(request,
'loadnextweek.html',
'loadcurrentweek.html',
{'rower': r,
'form': form,
'active': active,