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 datetime import timedelta
from timemanagement.models import *
''' '''
Hier sind alle Methoden gesammelt, die bei der Zeiterfassung eine Rolle spielen. 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 True -> Ist nur ein halber Tag
False -> Ist ein ganzer 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 # Gibt die Woche als Wochentage zurück
@ -39,3 +51,14 @@ def getIsAbsenceStartEndHalf(absence):
return True return True
else: 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,6 +36,7 @@
<tbody id="table_contacts" > <tbody id="table_contacts" >
{% for da in days_this_month %} {% for da in days_this_month %}
{% isfreedayname request.user da as isfreename %}
{% getabscenceday request.user request.user da as abday %} {% getabscenceday request.user request.user da as abday %}
<tr id="da_{{da|date:"d-m-y"}}" <tr id="da_{{da|date:"d-m-y"}}"
@ -43,6 +44,8 @@
style="background-color: #d3d3d3;" style="background-color: #d3d3d3;"
{% elif abday != False %} {% elif abday != False %}
style="background-color: {{abday.reason.color}}; color: #ffffff" style="background-color: {{abday.reason.color}}; color: #ffffff"
{% elif isfreename != False %}
style="background-color: #d3d3d3;"
{% else %} {% else %}
{% for workday in workdays %} {% for workday in workdays %}
{% if workday.start|date:"d-m-y" == da|date:"d-m-y" %} {% if workday.start|date:"d-m-y" == da|date:"d-m-y" %}
@ -61,9 +64,13 @@
{{da|date:"d.m.y"}} {{da|date:"d.m.y"}}
</td> </td>
<!-- START --> <!-- START -->
<td {% if abday != False %} colspan="3" {% endif %}> <td {% if abday != False or isfreename != False %} colspan="3" {% endif %}>
{% if abday != False %} {% if abday != False or isfreename != False %}
{% if isfreename != False %}
{{isfreename}}
{% else %}
{{abday.reason}} {{abday.reason}}
{% endif %}
{% if abday.start == da%} {% if abday.start == da%}
{% if abday.startday_info == "1" %} {% if abday.startday_info == "1" %}
(nur Vormittags) (nur Vormittags)
@ -213,7 +220,7 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
</td> </td>
{% if abday == False %} {% if abday == False and isfreename == False %}
<!-- ENDE --> <!-- ENDE -->
<td> <td>
{% counterWDreset %} {% counterWDreset %}

View File

@ -49,6 +49,7 @@ from django.contrib.auth.models import User, Group
from users.signals import adjust_group_notifications_permission from users.signals import adjust_group_notifications_permission
from django.core.exceptions import ObjectDoesNotExist from django.core.exceptions import ObjectDoesNotExist
from digitaleagentur.utils import * from digitaleagentur.utils import *
from digitaleagentur.timemanagement_utils import *
from organizer.models import QuickLinks from organizer.models import QuickLinks
from areas.models import Areas from areas.models import Areas
from tasks.models import Tasks from tasks.models import Tasks
@ -1643,7 +1644,7 @@ def cronactionsdaily(request, code):
day_half_found = True day_half_found = True
# Es wird nur ein Arbeitstag erstellt, wenn KEINE Abwesenheiten vorliegen und der Nutzer an diesem Tag arbeiten muss # 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 = 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() workdaytemp.save()
except: except: