diff --git a/digitaleagentur/utils.py b/digitaleagentur/utils.py index fb35bea..2750adf 100644 --- a/digitaleagentur/utils.py +++ b/digitaleagentur/utils.py @@ -46,32 +46,60 @@ def getAbsenceForOneDay(user, day): - Abwesenheit ist der komplette Tag, dann wird dieser Arbeitstag gelöscht, wenn es is_time false ist, sprich die Zeiterfassung soll nicht angefasst werden - Abwesenheit ist kompletter Tag und die Abwesenheit soll Zeiterfassung beeinflussen (z.B. Gleitzeit) dann wird der Arbeitstag nicht verändert. Ist die Gleitzeit ein halber Tag, wird die Zielarbeitszeit halbiert. ''' +''' +def checkAbsenceWorkdayCollide(absence): + # Alle einzelnen Tage der Abwesenheit werden durchgegangen: + # TODO: Hier einmal testen ob das korrekto ist + for day in daterange(absence.start, absence.end): + # Arbeitstage an diesem Tag werden geladen + #workdays = Workday.objects.filter(user=absence.user, start__day=absence.start.day, start__month=absence.start.month, start__year=absence.start.year) + workdays = Workday.objects.filter(user=absence.user, start__day=day.day, start__month=day.month, start__year=day.year) + # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat. + for workday in workdays: + # Arbeitstag in Tag ohne Zeit umwandeln + # Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. + #if absence.reason.is_time == False: + if absence.reason.is_time == True: + # Prüfung, ob der Tag halb ist oder nicht. Wenn ja, dann Zielarbeitszeit des Tages um die Hälfte reduzieren. + #if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): + if(getIsAbsenceStartEndHalf(absence)): + workday.target = workday.target / 2 + workday.save() + # Ganzer Tag vorhanden, Arbeitstag wird als löschen markiert, aber nicht gelöscht + else: + if workday.delflag == True: + workday.delflag = False + workday.save() + else: + workday.delflag = True + workday.save() + +''' def checkAbsenceWorkdayCollide(absence): # Alle einzelnen Tage der Abwesenheit werden durchgegangen: for day in daterange(absence.start, absence.end): # Arbeitstage an diesem Tag werden geladen - workdays = Workday.objects.filter(user=absence.user, start__day=absence.start.day, start__month=absence.start.month, start__year=absence.start.year) + workdays = Workday.objects.filter(user=absence.user, start__day=day.day, start__month=day.month, start__year=day.year) # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat. for workday in workdays: # Arbeitstag in Tag ohne Zeit umwandeln # Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. - if absence.reason.is_time == False: + if absence.reason.is_time == True: # Prüfung, ob der Tag halb ist oder nicht. Wenn ja, dann Zielarbeitszeit des Tages um die Hälfte reduzieren. - if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): - if(getIsAbsenceStartEndHalf(absence)): - workday.target = workday.target / 2 - workday.save() - # Ganzer Tag vorhanden, Arbeitstag wird als löschen markiert, aber nicht gelöscht - else: - workday.delflag = True - workday.save() - else: - # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen - if workday.delflag == True: - workday.delflag = False + #if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): + if(getIsAbsenceStartEndHalf(absence)): + workday.target = workday.target / 2 workday.save() + # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen + if workday.delflag == True: + workday.delflag = False + workday.save() + else: + workday.delflag = True + workday.save() +''' def checkAbsenceWorkdayCollideDelete(absence): # Alle einzelnen Tage der Abwesenheit werden durchgegangen: for day in daterange(absence.start, absence.end): @@ -97,9 +125,34 @@ def checkAbsenceWorkdayCollideDelete(absence): if workday.delflag == True: workday.delflag = False workday.save() +''' +def checkAbsenceWorkdayCollideDelete(absence): + # Alle einzelnen Tage der Abwesenheit werden durchgegangen: + for day in daterange(absence.start, absence.end): + # Arbeitstage an diesem Tag werden geladen + workdays = Workday.objects.filter(user=absence.user, start__day=day.day, start__month=day.month, start__year=day.year) + + # Wenn es Arbeitstage gibt, dann wird geprüft, ob die Abwesenheit diesen verändert hat. + for workday in workdays: + # Arbeitstag in Tag ohne Zeit umwandeln + # Wenn die Abwesenheit die Zeiterfassung NICHT ändert, muss diese ggf. geändert werden. Ansonsten bleibt sie gleich. + if absence.reason.is_time == True: + # Prüfung, ob der Tag halb ist oder nicht. Wenn ja, dann Zielarbeitszeit des Tages um die Hälfte reduzieren. + #if (workday.start.day == absence.start.day and workday.start.month == absence.start.month and workday.start.year == absence.start.year) or (workday.end.day == absence.end.day and workday.end.month == absence.end.month and workday.end.year == absence.end.year): + if(getIsAbsenceStartEndHalf(absence)): + workday.target = workday.target / 2 + workday.save() + # Sollte der ganze Tag mal als zu löschen markiert worden sein, wird dies hier zurückgenommen + if workday.delflag == True: + workday.delflag = False + workday.save() + else: + workday.delflag = True + workday.save() + # NC LOGIN ''' diff --git a/users/templates/users/base.html b/users/templates/users/base.html index a7f7aef..e85134a 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -334,7 +334,7 @@ -