Retrieve original version of club_statistics view
This commit is contained in:
parent
0a515fdf3a
commit
107b364028
|
@ -145,7 +145,7 @@ def chooseStatistics(request):
|
|||
|
||||
|
||||
@login_required
|
||||
def club_statistics(request, clubid):
|
||||
def club_statistics_new(request, clubid):
|
||||
"""Construit les statistiques d'un club, pour une saison choisie
|
||||
|
||||
Questions:
|
||||
|
@ -266,3 +266,150 @@ def club_statistics(request, clubid):
|
|||
"totalHoursPaid": totalHoursPaid,
|
||||
}
|
||||
return context
|
||||
|
||||
@login_required
|
||||
def club_statistics(request, clubid):
|
||||
"""
|
||||
Renvoie les statistiques d'un club pour une saison choisie.
|
||||
.. todo:: tenir compte de la saison.
|
||||
"""
|
||||
|
||||
courses = Course.objects.filter(club__in=clubid).order_by(
|
||||
"iso_day_number", "hour_begin"
|
||||
)
|
||||
|
||||
totalHours = 0
|
||||
totalCourses = 0
|
||||
totalHoursByWeek = 0
|
||||
totalHoursPaid = 0
|
||||
gymnastsDict = {}
|
||||
gymnasts = []
|
||||
courseList = []
|
||||
for course in courses:
|
||||
nbtrainer = course.trainers.count()
|
||||
list_of_gymnasts = Gymnast.objects.filter(to_gym__in=course.to_subgroup.all())
|
||||
gymnasts.extend(list_of_gymnasts)
|
||||
nbgymnast = len(list_of_gymnasts)
|
||||
# gymnasts = set(gymnasts.extend(Gymnast.objects.filter(to_gym__in=course.to_subgroup.all())))
|
||||
|
||||
nbhour = __diffTime(course.hour_end, course.hour_begin) # timedelta
|
||||
totalHoursByWeek += nbhour.seconds
|
||||
|
||||
counted = course.get_total_occurence()
|
||||
|
||||
# select tous les unavailables liés au cours
|
||||
unavailabilities = Unavailability.objects.filter(course=course)
|
||||
for unavailable in unavailabilities:
|
||||
counted -= unavailable.get_total_occurence()
|
||||
|
||||
totalCourses += counted
|
||||
totalTimeForCourse = nbhour * counted # timedelta
|
||||
totalHourForCourse = (totalTimeForCourse.days * 24) + (
|
||||
totalTimeForCourse.seconds / 3600
|
||||
)
|
||||
totalHours += totalHourForCourse
|
||||
totalHoursPaidForCourse = totalHourForCourse * nbtrainer
|
||||
totalHoursPaid += totalHoursPaidForCourse
|
||||
|
||||
# tmp = int(nbhour.seconds/3600)
|
||||
# hour = "%d:%02d" % (tmp, (nbhour.seconds - (tmp * 3600)) / 60)
|
||||
hour = nbhour.seconds / 3600
|
||||
|
||||
courseList.append(
|
||||
(
|
||||
course,
|
||||
nbtrainer,
|
||||
nbgymnast,
|
||||
hour,
|
||||
counted,
|
||||
totalHourForCourse,
|
||||
totalHoursPaidForCourse,
|
||||
)
|
||||
)
|
||||
|
||||
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)
|
||||
|
||||
# print(str(gymnast) + ' : ' + str(nbattendance) + ' for ' + str(course) )
|
||||
|
||||
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])
|
||||
|
||||
# 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)
|
||||
gymnastsDict[gymnast.id]["nbhourbyweek"] = "%d:%02d" % (
|
||||
tmp,
|
||||
(gymnastsDict[gymnast.id]["nbhourbyweek"].seconds - (tmp * 3600)) / 60,
|
||||
)
|
||||
|
||||
gymnastsDict[gymnast.id]["nbabsence"] = (
|
||||
gymnastsDict[gymnast.id]["nbtraining"]
|
||||
- gymnastsDict[gymnast.id]["nbattendance"]
|
||||
)
|
||||
|
||||
# tmp = (gymnastsDict[gymnast.id]['nbhourattendance'].days * 24) + (gymnastsDict[gymnast.id]['nbhourattendance'].seconds/3600)
|
||||
gymnastsDict[gymnast.id]["nbhourattendance"] = (
|
||||
gymnastsDict[gymnast.id]["nbhourattendance"].days * 24
|
||||
) + (gymnastsDict[gymnast.id]["nbhourattendance"].seconds / 3600)
|
||||
|
||||
gymnastsDict[gymnast.id]["nbhourabsence"] = (
|
||||
gymnastsDict[gymnast.id]["nbhourtraining"]
|
||||
- gymnastsDict[gymnast.id]["nbhourattendance"]
|
||||
)
|
||||
|
||||
gymnastsDict[gymnast.id]["percentageattendance"] = int(
|
||||
(
|
||||
gymnastsDict[gymnast.id]["nbhourattendance"]
|
||||
/ gymnastsDict[gymnast.id]["nbhourtraining"]
|
||||
)
|
||||
* 100
|
||||
)
|
||||
gymnastsDict[gymnast.id]["percentageabsence"] = int(
|
||||
(
|
||||
gymnastsDict[gymnast.id]["nbhourabsence"]
|
||||
/ gymnastsDict[gymnast.id]["nbhourtraining"]
|
||||
)
|
||||
* 100
|
||||
)
|
||||
|
||||
context = {
|
||||
"courses": courseList,
|
||||
"gymnasts": gymnastsDict,
|
||||
"totalHoursByWeek": totalHoursByWeek,
|
||||
"totalCourses": totalCourses,
|
||||
"totalHours": totalHours,
|
||||
"totalHoursPaid": totalHoursPaid,
|
||||
}
|
||||
return context
|
||||
|
||||
|
|
Loading…
Reference in New Issue