from datetime import timedelta from timemanagement.models import * ''' Hier sind alle Methoden gesammelt, die bei der Zeiterfassung eine Rolle spielen. daterange() - Gibt jeden Tag zwischen zwei Daten zurück @param: date1 - Startdatum date2 - Enddatum @return: Array mit den entsprechenden Tagen getIsAbsenceStartEndHalf() - Gibt True zurücke, wenn der Anfang oder das Ende einer Abwesenheit nur ein halber Tag ist, ansonsten False @param: absence - Die zu prüfende Abwesenheit @return: True -> Ist nur ein halber Tag False -> Ist ein ganzer Tag isfreedaycheck() - Gibt True/False zurück, wenn der übergebene Tag innerhalb oder an einem Feiertag/freien Tag der Agentur lirgt. @param user - Benutzer, um über user.profile.agency die entsprechende Agentur abzufragen day - Tag, welcher geprüft werden soll @return: True -> Übergebener Tag ist kein freier Tag oder kein Feiertag False -> Übergebener Tag ist ein freier Tag oder ein Feiertag ''' # Gibt die Woche als Wochentage zurück def daterange(date1, date2): for n in range(int ((date2 - date1).days)+1): yield date1 + timedelta(n) # Gibt True zurück, wenn eine Tag einer Abwesenheit nur ein halber Tag ist def getIsAbsenceStartEndHalf(absence): if absence.startday_info == "1" or absence.startday_info == "2" or absence.endday_info == "1" or absence.endday_info == "2": return True else: return False # Gibt True zurück, wenn dieser Tag nicht an einem freien Tag liegt. def isfreedaycheck(user, day): if len(FreeDays.objects.filter(agency=user.profile.agency, day=day)) > 0: return False else: return True