rendered paste bodyPerson infoVilleAddress E-post Telefon type Times HoursPractice 1 09:33Keikka 0 Talko 2 09:33Meeting 1 02:00Practices:Lasta slädan, 01:30, OvningÅrsmöte, 02:00, MoteTalkoo, 04:00, Talkoasd, 05:33, Talko#######################################def practice_count(self): return self.practice_set.filter(type='O').count() def meeting_count(self): return self.practice_set.filter(type='M').count() def keikka_count(self): return self.practice_set.filter(type='K').count() def talko_count(self): return self.practice_set.filter(type='T').count() def practice_duration(self): practis = self.practice_set.filter(type='O') return (practis.aggregate(Sum('duration'))['duration__sum']) def meeting_duration(self): practis = self.practice_set.filter(type='M') return self.format_count(practis.aggregate(Sum('duration'))['duration__sum']) def keikka_duration(self): practis = self.practice_set.filter(type='K') return self.format_count(practis.aggregate(Sum('duration'))['duration__sum']) def talko_duration(self): practis = self.practice_set.filter(type='T') return self.format_count(practis.aggregate(Sum('duration'))['duration__sum']) def format_count(self, minuts): hours = minuts/60 mins = minuts % 60 return str(hours).rjust(2,'0')+":"+str(mins).rjust(2,'0')