Automatismen Zeiterfassung DONE

This commit is contained in:
holger.trampe 2021-02-25 19:14:18 +01:00
parent 2059671f3c
commit a70a4e8f6c
5 changed files with 40 additions and 9 deletions

View File

@ -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
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

BIN
dump.rdb

Binary file not shown.

View File

@ -36,13 +36,16 @@
<tbody id="table_contacts" >
{% for da in days_this_month %}
{% isfreedayname request.user da as isfreename %}
{% getabscenceday request.user request.user da as abday %}
<tr id="da_{{da|date:"d-m-y"}}"
{% if da.weekday == 5 or da.weekday == 6 %}
style="background-color: #d3d3d3;"
{% elif abday != False %}
style="background-color: {{abday.reason.color}}; color: #ffffff"
{% elif isfreename != False %}
style="background-color: #d3d3d3;"
{% else %}
{% for workday in workdays %}
{% if workday.start|date:"d-m-y" == da|date:"d-m-y" %}
@ -61,9 +64,13 @@
{{da|date:"d.m.y"}}
</td>
<!-- START -->
<td {% if abday != False %} colspan="3" {% endif %}>
{% if abday != False %}
{{abday.reason}}
<td {% if abday != False or isfreename != False %} colspan="3" {% endif %}>
{% 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 %}
</td>
{% if abday == False %}
{% if abday == False and isfreename == False %}
<!-- ENDE -->
<td>
{% counterWDreset %}

View File

@ -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: