[WIP] refactoring/location-club-statistics #71
|
@ -153,6 +153,21 @@ def chooseStatistics(request):
|
||||||
return render(request, "club_statistics.html", context)
|
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
|
@login_required
|
||||||
def club_statistics(request, clubid):
|
def club_statistics(request, clubid):
|
||||||
"""
|
"""
|
||||||
|
@ -172,6 +187,7 @@ def club_statistics(request, clubid):
|
||||||
gymnastsDict = {}
|
gymnastsDict = {}
|
||||||
gymnasts = []
|
gymnasts = []
|
||||||
courseList = []
|
courseList = []
|
||||||
|
|
||||||
for course in courses:
|
for course in courses:
|
||||||
nbtrainer = course.trainers.count()
|
nbtrainer = course.trainers.count()
|
||||||
list_of_gymnasts = Gymnast.objects.filter(to_gym__in=course.to_subgroup.all())
|
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:
|
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)
|
gymnast_stats = gymnastsDict.setdefault(gymnast.id, GymnastStatistics(gymnast))
|
||||||
nbattendance = len(attendanceList)
|
|
||||||
|
|
||||||
# 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
|
gymnast_stats.number_of_courses_by_week += 1
|
||||||
gymnastsDict[gymnast.id]["nbhourbyweek"] += nbhour # timedelta
|
gymnast_stats.number_of_hours_by_week += nbhour
|
||||||
gymnastsDict[gymnast.id]["nbtraining"] += counted
|
gymnast_stats.number_of_trainings += counted
|
||||||
gymnastsDict[gymnast.id]["nbattendance"] += nbattendance
|
gymnast_stats.number_of_attendance += number_of_attendance
|
||||||
gymnastsDict[gymnast.id]["nbhourtraining"] += totalHourForCourse
|
gymnast_stats.number_of_training_hours += totalHourForCourse
|
||||||
gymnastsDict[gymnast.id]["nbhourattendance"] += (
|
gymnast_stats.number_of_attendance_hours += (
|
||||||
nbhour * nbattendance
|
nbhour * number_of_attendance
|
||||||
) # timedelta
|
)
|
||||||
|
|
||||||
# print(gymnastsDict[gymnast.id])
|
|
||||||
|
|
||||||
# tous les cours ont été traités
|
# tous les cours ont été traités
|
||||||
totalHoursByWeek = totalHoursByWeek / 3600
|
totalHoursByWeek = totalHoursByWeek / 3600
|
||||||
|
|
||||||
gymnasts = set(gymnasts)
|
gymnasts = set(gymnasts)
|
||||||
# print(gymnasts)
|
|
||||||
|
|
||||||
for gymnast in gymnasts:
|
for gymnast in gymnasts:
|
||||||
tmp = int(gymnastsDict[gymnast.id]["nbhourbyweek"].seconds / 3600)
|
tmp = int(gymnastsDict[gymnast.id]["nbhourbyweek"].seconds / 3600)
|
||||||
|
|
Loading…
Reference in New Issue