Create a new `ClubStatistics` class to store data
This will allow to make the location/views.py file more readable
This commit is contained in:
parent
67b2b0ccd6
commit
1a3c62d12b
|
@ -153,6 +153,21 @@ def chooseStatistics(request):
|
|||
return render(request, "club_statistics.html", context)
|
||||
|
||||
|
||||
class GymnastStatistics():
|
||||
def __init__(self, gymnast):
|
||||
self.gymnast = gymnast
|
||||
self.number_of_courses_by_week = 0
|
||||
self.number_of_hours_by_week = timedelta()
|
||||
self.number_of_trainings = 0
|
||||
self.number_of_attendance = 0
|
||||
self.number_of_absences = 0
|
||||
self.number_of_training_hours = 0
|
||||
self.number_of_attendance_hours = timedelta()
|
||||
self.percentage_of_attendance = 0
|
||||
self.number_of_hours_of_absence = 0
|
||||
self.percentage_of_absence = 0
|
||||
|
||||
|
||||
@login_required
|
||||
def club_statistics(request, clubid):
|
||||
"""
|
||||
|
@ -172,6 +187,7 @@ def club_statistics(request, clubid):
|
|||
gymnastsDict = {}
|
||||
gymnasts = []
|
||||
courseList = []
|
||||
|
||||
for course in courses:
|
||||
nbtrainer = course.trainers.count()
|
||||
list_of_gymnasts = Gymnast.objects.filter(to_gym__in=course.to_subgroup.all())
|
||||
|
@ -215,43 +231,25 @@ def club_statistics(request, clubid):
|
|||
)
|
||||
|
||||
for gymnast in list_of_gymnasts:
|
||||
# print(gymnast)
|
||||
if gymnast.id not in gymnastsDict:
|
||||
gymnastsDict[gymnast.id] = {
|
||||
"gymnast": gymnast,
|
||||
"nbcoursebyweek": 0,
|
||||
"nbhourbyweek": timedelta(),
|
||||
"nbtraining": 0,
|
||||
"nbattendance": 0,
|
||||
"nbabsence": 0,
|
||||
"nbhourtraining": 0,
|
||||
"nbhourattendance": timedelta(),
|
||||
"percentageattendance": 0,
|
||||
"nbhourabsence": 0,
|
||||
"percentageabsence": 0,
|
||||
}
|
||||
|
||||
attendanceList = Training.objects.filter(course=course, gymnast=gymnast)
|
||||
nbattendance = len(attendanceList)
|
||||
gymnast_stats = gymnastsDict.setdefault(gymnast.id, GymnastStatistics(gymnast))
|
||||
|
||||
# print(str(gymnast) + ' : ' + str(nbattendance) + ' for ' + str(course) )
|
||||
attendance_list = Training.objects.filter(course=course, gymnast=gymnast)
|
||||
number_of_attendance = attendance_list.count()
|
||||
|
||||
gymnastsDict[gymnast.id]["nbcoursebyweek"] += 1
|
||||
gymnastsDict[gymnast.id]["nbhourbyweek"] += nbhour # timedelta
|
||||
gymnastsDict[gymnast.id]["nbtraining"] += counted
|
||||
gymnastsDict[gymnast.id]["nbattendance"] += nbattendance
|
||||
gymnastsDict[gymnast.id]["nbhourtraining"] += totalHourForCourse
|
||||
gymnastsDict[gymnast.id]["nbhourattendance"] += (
|
||||
nbhour * nbattendance
|
||||
) # timedelta
|
||||
|
||||
# print(gymnastsDict[gymnast.id])
|
||||
gymnast_stats.number_of_courses_by_week += 1
|
||||
gymnast_stats.number_of_hours_by_week += nbhour
|
||||
gymnast_stats.number_of_trainings += counted
|
||||
gymnast_stats.number_of_attendance += number_of_attendance
|
||||
gymnast_stats.number_of_training_hours += totalHourForCourse
|
||||
gymnast_stats.number_of_attendance_hours += (
|
||||
nbhour * number_of_attendance
|
||||
)
|
||||
|
||||
# tous les cours ont été traités
|
||||
totalHoursByWeek = totalHoursByWeek / 3600
|
||||
|
||||
gymnasts = set(gymnasts)
|
||||
# print(gymnasts)
|
||||
|
||||
for gymnast in gymnasts:
|
||||
tmp = int(gymnastsDict[gymnast.id]["nbhourbyweek"].seconds / 3600)
|
||||
|
|
Loading…
Reference in New Issue