From 6d89d5f40d0eb946edc6775f5330e0b010df0171 Mon Sep 17 00:00:00 2001 From: "holger.trampe" Date: Thu, 7 Jan 2021 19:12:41 +0100 Subject: [PATCH] Bugfixing Cronjob ohne try --- dump.rdb | Bin 34155 -> 133684 bytes users/views.py | 134 +++++++++++++++++++++++++------------------------ 2 files changed, 69 insertions(+), 65 deletions(-) diff --git a/dump.rdb b/dump.rdb index 3670352e75ad9326dfc784eafa9e0f2449e7f9e1..390c354f4b19a79984a4122eca6619a0bfcd1ed9 100644 GIT binary patch literal 133684 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 TP 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 W+B-{wO#xu{s)n~!eN%ALmj4CW+h)K3 delta 108 zcmV-y0F(c;lnCpJ0+28$wleo$`UrJ%Wn?XFWo^Rn?GOO^3}J6(EpT#WVQpe;WxxRb z0Q&?4mymS58v|K=! 0): returnstat = True @@ -1432,81 +1433,84 @@ def cronactionsdaily(request, code): today = date.today() for user in allusers: # REST URLAUB BERECHNUNG - try: - usertimedata = UserTime.objects.get(user=user) - day_tocheck = usertimedata.loose_holidedate.split(".")[0] - month_tocheck = usertimedata.loose_holidedate.split(".")[1] - month = today.month + #try: + usertimedata = UserTime.objects.get(user=user) + day_tocheck = usertimedata.loose_holidedate.split(".")[0] + month_tocheck = usertimedata.loose_holidedate.split(".")[1] + month = today.month + day = today.day + if month < 10: + month = "0" + str(month) day = today.day - if month < 10: - month = "0" + str(month) - day = today.day - else: - month = month + else: + month = month - if day < 10: - day = "0" + str(day) - else: - day = day - # Restetag erreicht, Reste ins nächste Jahr übertragen - if(str(day_tocheck) == str(day) and str(month_tocheck) == str(month)): - sourceyear = today.year - this_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear, user=user))[0] - next_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear+1, user=user))[0] - next_year.restdays = this_year.days - this_year.days_inuse - next_year.save() + if day < 10: + day = "0" + str(day) + else: + day = day + + # Restetag erreicht, Reste ins nächste Jahr übertragen + if(str(day_tocheck) == str(day) and str(month_tocheck) == str(month)): + sourceyear = today.year + this_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear, user=user))[0] + next_year = list(UserYearAbsenceInfo.objects.filter(year=sourceyear+1, user=user))[0] + next_year.restdays = this_year.days - this_year.days_inuse + next_year.save() - if(user.usertime.usetime): - workdays = Workday.objects.filter(user=user, end=None) - for wd in workdays: - wd.end = datetime(wd.start.year, wd.start.month, wd.start.day, 23, 59) - wd.save() + if(user.usertime.usetime): + workdays = Workday.objects.filter(user=user, end=None) + for wd in workdays: + wd.end = datetime(wd.start.year, wd.start.month, wd.start.day, 23, 59) + wd.save() - yesterday = date.today() - timedelta(days=1) - weekday = yesterday.weekday() - workdays_yesterday = len(Workday.objects.filter(user=user, start__day=yesterday.day, start__month=yesterday.month, start__year=yesterday.year)) + yesterday = date.today() - timedelta(days=1) + weekday = yesterday.weekday() - targettworktime = 0.0 - # 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 + workdays_yesterday = len(Workday.objects.filter(user=user, start__day=yesterday.day, start__month=yesterday.month, start__year=yesterday.year)) - # 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() + targettworktime = 0.0 + # 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 + 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 - one_week_later = date.today() + timedelta(days=7) - 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): - sendMailNoti(" in einer Woche startet Ihre Vertretung für " + r.user.first_name + " " + r.user.last_name + "!", user) + # Erinnerungsmails/Push bei Vertretung verschicken + one_week_later = date.today() + timedelta(days=7) + + 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): + 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): - newnotification = UserNotification(touser=user, notificationtext="Erinnerung für Abwesenheitsvertretung!", notificationtype="", elementid=r.pk) - newnotification.save() + if(r.representator.usernotifications.absence_user_is_rep_reminder_push): + newnotification = UserNotification(touser=user, notificationtext="Erinnerung für Abwesenheitsvertretung!", notificationtype="", elementid=r.pk) + newnotification.save() - 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 + "!"}) - - data.update({"status " + str(user.pk) : "ok"}) - except ObjectDoesNotExist: - data.update({"status" + str(user.pk) : "no usertime found for " + user.get_full_name()}) + 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 + "!"}) + + data.update({"status " + str(user.pk) : "ok"}) + #except ObjectDoesNotExist: + # data.update({"status" + str(user.pk) : "no usertime found for " + user.get_full_name()}) else: print("API CODE FAILED") data.update({"status" : "failed"})