Bugfixing Cronjob ohne try

This commit is contained in:
holger.trampe 2021-01-07 19:12:41 +01:00
parent 2851cc8807
commit 6d89d5f40d
2 changed files with 69 additions and 65 deletions

BIN
dump.rdb

Binary file not shown.

View File

@ -1415,6 +1415,7 @@ class landingPage(TemplateView):
''' '''
def absencecheck(user, daytocheck): def absencecheck(user, daytocheck):
returnstat = False returnstat = False
print("ABSENCECHECK")
absencedays = Absence.objects.filter(agency=user.profile.agency, user=user, confirm_status=0) & (Absence.objects.filter(agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(agency=user.profile.agency, user=user, start__lt=daytocheck) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck)) absencedays = Absence.objects.filter(agency=user.profile.agency, user=user, confirm_status=0) & (Absence.objects.filter(agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(agency=user.profile.agency, user=user, start__lt=daytocheck) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck))
if(len(absencedays) > 0): if(len(absencedays) > 0):
returnstat = True returnstat = True
@ -1432,81 +1433,84 @@ def cronactionsdaily(request, code):
today = date.today() today = date.today()
for user in allusers: for user in allusers:
# REST URLAUB BERECHNUNG # REST URLAUB BERECHNUNG
try: #try:
usertimedata = UserTime.objects.get(user=user) usertimedata = UserTime.objects.get(user=user)
day_tocheck = usertimedata.loose_holidedate.split(".")[0] day_tocheck = usertimedata.loose_holidedate.split(".")[0]
month_tocheck = usertimedata.loose_holidedate.split(".")[1] month_tocheck = usertimedata.loose_holidedate.split(".")[1]
month = today.month month = today.month
day = today.day
if month < 10:
month = "0" + str(month)
day = today.day day = today.day
if month < 10: else:
month = "0" + str(month) month = month
day = today.day
else:
month = month
if day < 10: if day < 10:
day = "0" + str(day) day = "0" + str(day)
else: else:
day = day day = day
# Restetag erreicht, Reste ins nächste Jahr übertragen
if(str(day_tocheck) == str(day) and str(month_tocheck) == str(month)): # Restetag erreicht, Reste ins nächste Jahr übertragen
sourceyear = today.year if(str(day_tocheck) == str(day) and str(month_tocheck) == str(month)):
this_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear, user=user))[0] sourceyear = today.year
next_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear+1, user=user))[0] this_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear, user=user))[0]
next_year.restdays = this_year.days - this_year.days_inuse next_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear+1, user=user))[0]
next_year.save() next_year.restdays = this_year.days - this_year.days_inuse
next_year.save()
if(user.usertime.usetime): if(user.usertime.usetime):
workdays = Workday.objects.filter(user=user, end=None) workdays = Workday.objects.filter(user=user, end=None)
for wd in workdays: for wd in workdays:
wd.end = datetime(wd.start.year, wd.start.month, wd.start.day, 23, 59) wd.end = datetime(wd.start.year, wd.start.month, wd.start.day, 23, 59)
wd.save() wd.save()
yesterday = date.today() - timedelta(days=1) yesterday = date.today() - timedelta(days=1)
weekday = yesterday.weekday() weekday = yesterday.weekday()
workdays_yesterday = len(Workday.objects.filter(user=user, start__day=yesterday.day, start__month=yesterday.month, start__year=yesterday.year))
targettworktime = 0.0 workdays_yesterday = len(Workday.objects.filter(user=user, start__day=yesterday.day, start__month=yesterday.month, start__year=yesterday.year))
# Mitarbeiter hat für den gestrigen Tag keine Zeiten erfasst, daher automatisch auf null wenn KEINE Abwesenheit eingetragen wurde
if(weekday == 0):
targettworktime = user.usertime.wd_mo
if(weekday == 1):
targettworktime = user.usertime.wd_tu
if(weekday == 2):
targettworktime = user.usertime.wd_we
if(weekday == 3):
targettworktime = user.usertime.wd_th
if(weekday == 4):
targettworktime = user.usertime.wd_fr
if(weekday == 5):
targettworktime = user.usertime.wd_sa
if(weekday == 6):
targettworktime = user.usertime.wd_so
# Es wird nur ein Arbeitstag erstellt, wenn KEINE Abwesenheiten vorliegen und der Nutzer an diesem Tag arbeiten muss targettworktime = 0.0
if(workdays_yesterday == 0 and absencecheck(user, yesterday) == False and targettworktime > 0.0 and user.usertime.usetime_start <= today): # Mitarbeiter hat für den gestrigen Tag keine Zeiten erfasst, daher automatisch auf null wenn KEINE Abwesenheit eingetragen wurde
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) if(weekday == 0):
workdaytemp.save() targettworktime = user.usertime.wd_mo
if(weekday == 1):
targettworktime = user.usertime.wd_tu
if(weekday == 2):
targettworktime = user.usertime.wd_we
if(weekday == 3):
targettworktime = user.usertime.wd_th
if(weekday == 4):
targettworktime = user.usertime.wd_fr
if(weekday == 5):
targettworktime = user.usertime.wd_sa
if(weekday == 6):
targettworktime = user.usertime.wd_so
# 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 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()
# Erinnerungsmails/Push bei Vertretung verschicken # Erinnerungsmails/Push bei Vertretung verschicken
one_week_later = date.today() + timedelta(days=7) one_week_later = date.today() + timedelta(days=7)
repre_absence = Absence.objects.filter(representator=user, start=one_week_later, confirm_status=0)
repre_absence = Absence.objects.filter(representator=user, start=one_week_later, confirm_status=0)
for r in repre_absence:
if(r.representator.usernotifications.absence_user_is_rep_reminder_mail): for r in repre_absence:
sendMailNoti(" in einer Woche startet Ihre Vertretung für " + r.user.first_name + " " + r.user.last_name + "!", user) if(r.representator.usernotifications.absence_user_is_rep_reminder_mail):
sendMailNoti(" in einer Woche startet Ihre Vertretung für " + r.user.first_name + " " + r.user.last_name + "!", user)
if(r.representator.usernotifications.absence_user_is_rep_reminder_push): if(r.representator.usernotifications.absence_user_is_rep_reminder_push):
newnotification = UserNotification(touser=user, notificationtext="Erinnerung für Abwesenheitsvertretung!", notificationtype="", elementid=r.pk) newnotification = UserNotification(touser=user, notificationtext="Erinnerung für Abwesenheitsvertretung!", notificationtype="", elementid=r.pk)
newnotification.save() newnotification.save()
channel_layer = channels.layers.get_channel_layer() channel_layer = channels.layers.get_channel_layer()
async_to_sync(channel_layer.group_send)("user_" + str(user.pk), {'type' : 'pushhandler', 'pushtext' : "pushnotification__Abwesenheit | In einer Woche startet Ihre Vertretung für " + r.user.first_name + " " + r.user.last_name + "!"}) async_to_sync(channel_layer.group_send)("user_" + str(user.pk), {'type' : 'pushhandler', 'pushtext' : "pushnotification__Abwesenheit | In einer Woche startet Ihre Vertretung für " + r.user.first_name + " " + r.user.last_name + "!"})
data.update({"status " + str(user.pk) : "ok"}) data.update({"status " + str(user.pk) : "ok"})
except ObjectDoesNotExist: #except ObjectDoesNotExist:
data.update({"status" + str(user.pk) : "no usertime found for " + user.get_full_name()}) # data.update({"status" + str(user.pk) : "no usertime found for " + user.get_full_name()})
else: else:
print("API CODE FAILED") print("API CODE FAILED")
data.update({"status" : "failed"}) data.update({"status" : "failed"})