This commit is contained in:
Gregory Trullemans 2022-10-14 10:35:40 +02:00
parent dcf30a486c
commit fded1c8db2
1 changed files with 46 additions and 5 deletions

View File

@ -17,12 +17,13 @@ from reportlab.lib.units import cm
from reportlab.pdfgen.canvas import Canvas
from reportlab.platypus import Paragraph, Table, TableStyle
from ultron.followup.models import (
Accident,
Chrono,
HeightWeight,
MindState,
Plan,
Point
Point,
Chrono,
Accident,
MindState,
HeightWeight,
LearnedSkill,
)
from ultron.followup.models import LEARNING_STEP_CHOICES
from ultron.objective.models import Skill
@ -190,6 +191,7 @@ class GymnastReportDocument(PDFDocument):
self.add_gymnast_active_routine(gymnast)
# self.add_gymnast_level_information(gymnast)
self.add_gymnast_next_skills(gymnast)
self.add_gymnast_last_learned_skill(gymnast)
self.add_gymnast_next_events(gymnast)
self.add_gymnast_week_notes(gymnast)
@ -522,6 +524,45 @@ class GymnastReportDocument(PDFDocument):
"routine defined."
)
def add_gymnast_last_learned_skill(self, gymnast):
""" Ajoute les derniers skill appris par le gymnaste
Args:
gymnast <Gymnast> gymnaste
Returns:
Ne retourne rien
"""
self.y = 17*cm
self.add_new_line(
7*cm,
"New learned skills",
font_decoration="Bold",
)
self.add_vspace(-3)
# le double F ne fonctionne qu'en précisant le distinct, sinon ca dédouble les résultats.
# qui lui même ne fonctionne que sur un champ présent dans le `order_by` (que le premier champ ?)
#
learned_skills = (
LearnedSkill.objects.filter(gymnast=gymnast.id)
.annotate(skill_notation=F("skill__notation"))
.order_by("skill_notation", "-date").distinct('skill_notation')[:5]
)
if learned_skills:
for learned_skill in learned_skills:
self.add_new_line(
7*cm, learned_skill.skill.short_label + " " + str(LEARNING_STEP_CHOICES[learned_skill.learning_step][1]).lower() + " (" + learned_skill.skill.notation + "), " + learned_skill.date.strftime("%d-%m-%Y")
)
else:
self.add_new_line(
X,
"No skill to learn this week.",
)
def add_gymnast_next_skills(self, gymnast):
""" Ajoute les prochains skill (skill planifié) à apprendre