Esempio n. 1
0
 def get_number(obj: Lecture) -> Union[int, str, None]:
     """
     Vypočítá pořadové číslo lekce.
     Pokud se jedná o předplacenou lekci, vrátí None.
     Pokud se nedá číslo dopočítat kvůli chybějícímu výchozímu stavu účasti, vrátí upozornění.
     """
     # vrat null pokud se jedna o predplacenou lekci
     if obj.start is None:
         return None
     # proved jednoduchy vypocet poradoveho cisla pro skupinu
     if obj.group is not None:
         prev_lectures_cnt = Lecture.objects.filter(
             group=obj.group, start__isnull=False, start__lt=obj.start, canceled=False
         ).count()
     else:
         # proved vypocet poradoveho cisla pro jednotlivce
         try:
             # je potreba najit vychozi stav
             attendancestate_default_pk = LectureHelpers.find_default_state()
         except ObjectDoesNotExist:
             # pokud neni vychozi stav zvoleny, vrat misto toho upozorneni
             return LectureHelpers.DEFAULT_STATE_MISSING
         prev_lectures_cnt = Attendance.objects.filter(
             client=obj.attendances.get().client_id,
             lecture__course=obj.course,
             lecture__start__isnull=False,
             lecture__group__isnull=True,
             lecture__start__lt=obj.start,
             lecture__canceled=False,
             attendancestate=attendancestate_default_pk,
         ).count()
     # vrat poradove cislo aktualni lekce (tedy +1 k poctu minulych lekci)
     return prev_lectures_cnt + 1
Esempio n. 2
0
    def get_number(obj: Attendance) -> Union[int, str, None]:
        """
        Vypočítá pořadové číslo lekce pro daného klienta skupiny.
        Pro jednotlivce se pole nezobrazuje, tedy neni treba nic pocitat.
        Pokud se nedá číslo dopočítat kvůli chybějícímu výchozímu stavu účasti, vrátí upozornění.
        """
        # pro lekce jednotlivcu pole neukazujeme, tedy nic neni treba pocitat
        if not obj.lecture.group:
            return None
        # proved vypocet poradoveho cisla pro ucastnika skupinove lekce
        try:
            # je potreba najit vychozi stav
            attendancestate_default_pk = LectureHelpers.find_default_state()
        except ObjectDoesNotExist:
            # pokud neni vychozi stav zvoleny, vrat misto toho upozorneni
            return LectureHelpers.DEFAULT_STATE_MISSING
        prev_lectures_cnt = Attendance.objects.filter(
            client=obj.client,
            lecture__course=obj.lecture.course,
            lecture__group=obj.lecture.group,
            lecture__start__lt=obj.lecture.start,
            lecture__canceled=False,
            attendancestate=attendancestate_default_pk,
        ).count()

        # vrat poradove cislo aktualni lekce (tedy +1 k poctu minulych lekci)
        return prev_lectures_cnt + 1