From 40c59cbe229dc780d08380d541887b9e0948f850 Mon Sep 17 00:00:00 2001 From: Fred Date: Wed, 23 Jun 2021 20:37:27 +0200 Subject: [PATCH] Starts clubs statistics --- src/location/models.py | 11 ++++++++++- src/planning/models.py | 6 ++++++ src/planning/tests/tests_models.py | 17 +++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/location/models.py b/src/location/models.py index 18a7b44..415d218 100644 --- a/src/location/models.py +++ b/src/location/models.py @@ -131,11 +131,20 @@ class Club(models.Model): Returns: Une structure (dict) reprenant les informations suivantes: + + { + "total_hours_paid": + } + * La liste des cours associés à ce club et à la saison passée en paramètre * Des informations statistiques concernant les gymnastes associés à chacun de ces cours * Le nombre total de cours réellement donnés - * Le nombre + * Le nombre d'heures réellement passées pour l'ensemble des cours """ courses = self.courses.filter(season=season) + + return { + "total_hours_paid": sum[x.total_number_of_paid_hours for x in courses] + } diff --git a/src/planning/models.py b/src/planning/models.py index 5798ab9..49e4440 100644 --- a/src/planning/models.py +++ b/src/planning/models.py @@ -336,6 +336,12 @@ class Course(Markdownizable, Temporizable): """ return self.get_number_of_real_occurrences * self.number_of_hours + @property + def total_number_of_paid_hours(self) -> timedelta: + """Retourne le temps total consacré à ce cours par le(s) entraineur(s) + """ + return self.total_number_of_hours * self.number_of_trainers + @property def get_number_of_planned_occurrences(self): return self.get_total_occurence() diff --git a/src/planning/tests/tests_models.py b/src/planning/tests/tests_models.py index cf7f946..8d03165 100644 --- a/src/planning/tests/tests_models.py +++ b/src/planning/tests/tests_models.py @@ -124,6 +124,23 @@ class TestCourse(TestCase): self.assertEqual(course.number_of_trainers, 2) + def test_total_number_of_paid_hours(self): + course = Course.objects.create( + iso_day_number=2, + datebegin=datetime(2021, 1, 1), + dateend=datetime(2021, 9, 30), + hour_begin=time(hour=19, minute=0), + hour_end=time(hour=22, minute=0), + club=self.club + ) + + course.trainers.add(self.user1) + course.trainers.add(self.user2) + + self.assertEqual(course.total_number_of_paid_hours, timedelta(days=4, seconds=75600) * 2) + + + def test_number_of_course_hours(self): course = Course.objects.create( iso_day_number=2,