diff --git a/digitaleagentur/timemanagement_utils.py b/digitaleagentur/timemanagement_utils.py index 4b097b5..c909071 100644 --- a/digitaleagentur/timemanagement_utils.py +++ b/digitaleagentur/timemanagement_utils.py @@ -1,5 +1,5 @@ from datetime import timedelta - +from timemanagement.models import * ''' Hier sind alle Methoden gesammelt, die bei der Zeiterfassung eine Rolle spielen. @@ -25,6 +25,18 @@ from datetime import timedelta 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 @@ -38,4 +50,15 @@ 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 \ No newline at end of file + 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 + + + + diff --git a/dump.rdb b/dump.rdb index 6c9e157..0e01809 100644 Binary files a/dump.rdb and b/dump.rdb differ diff --git a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc index 40e7208..4dc78b4 100644 Binary files a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc and b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc differ diff --git a/timemanagement/templates/timemanagement/timemanagement_singleview.html b/timemanagement/templates/timemanagement/timemanagement_singleview.html index fb85cd5..d4b7392 100644 --- a/timemanagement/templates/timemanagement/timemanagement_singleview.html +++ b/timemanagement/templates/timemanagement/timemanagement_singleview.html @@ -36,13 +36,16 @@ {% for da in days_this_month %} - + {% isfreedayname request.user da as isfreename %} + {% getabscenceday request.user request.user da as abday %} - - {% if abday != False %} - {{abday.reason}} + + {% if abday != False or isfreename != False %} + {% if isfreename != False %} + {{isfreename}} + {% else %} + {{abday.reason}} + {% endif %} {% if abday.start == da%} {% if abday.startday_info == "1" %} (nur Vormittags) @@ -213,7 +220,7 @@ {% endif %} {% endif %} - {% if abday == False %} + {% if abday == False and isfreename == False %} {% counterWDreset %} diff --git a/users/views.py b/users/views.py index 31b12a9..8850f53 100644 --- a/users/views.py +++ b/users/views.py @@ -49,6 +49,7 @@ from django.contrib.auth.models import User, Group from users.signals import adjust_group_notifications_permission from django.core.exceptions import ObjectDoesNotExist from digitaleagentur.utils import * +from digitaleagentur.timemanagement_utils import * from organizer.models import QuickLinks from areas.models import Areas from tasks.models import Tasks @@ -1641,9 +1642,9 @@ def cronactionsdaily(request, code): if(getAbsenceForOneDay(user, yesterday) != False): targettworktime = targettworktime / 2 day_half_found = True - + # Es wird nur ein Arbeitstag erstellt, wenn KEINE Abwesenheiten vorliegen und der Nutzer an diesem Tag arbeiten muss - if(workdays_yesterday == 0 and (absencecheck(user, yesterday) == False or day_half_found) and targettworktime > 0.0 and user.usertime.usetime_start < today): + if(workdays_yesterday == 0 and (absencecheck(user, yesterday) == False or day_half_found) and isfreedaycheck(user, yesterday) and targettworktime > 0.0 and user.usertime.usetime_start < today): workdaytemp = Workday(user=user, agency=user.profile.agency, start=datetime(yesterday.year, yesterday.month, yesterday.day, 8, 0), end=datetime(yesterday.year, yesterday.month, yesterday.day, 8, 0), target=targettworktime) workdaytemp.save() except: