From 15348b2d25eaf64f1f13127b01fec64542507035 Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Fri, 22 May 2020 01:55:48 +0200 Subject: [PATCH] Abwesenheit und Chat --- chat/templates/chat/chat_content.html | 57 ++++-- chat/templates/chat/chat_othermessage.html | 2 +- chat/templates/chat/chat_ownmessage.html | 2 +- chat/templates/chat/chatmanagement.html | 10 +- cloud/templates/cloud/cloud_main.html | 2 +- dasettings/forms.py | 38 +++- .../dasettings/absencereason_add.html | 20 ++ .../absencereason_confirm_delete.html | 23 +++ .../dasettings/absencereason_update.html | 20 ++ .../templates/dasettings/freedays_add.html | 20 ++ .../dasettings/freedays_confirm_delete.html | 24 +++ .../dasettings/freedays_management.html | 138 +++++++++++++ .../modulesettings_timemanagement.html | 48 ++++- .../templates/dasettings/user_usprof.html | 18 +- dasettings/urls.py | 8 + dasettings/views.py | 193 +++++++++++++++++- .../__pycache__/settings.cpython-38.pyc | Bin 4750 -> 4750 bytes digitaleagentur/settings.py | 1 + .../organizer/quicklinks_content.html | 3 +- .../standards/standards_management.html | 7 +- .../__pycache__/counter_tag.cpython-38.pyc | Bin 11669 -> 11992 bytes standards/templatetags/counter_tag.py | 21 +- timemanagement/forms.py | 26 ++- timemanagement/models.py | 10 +- .../timemanagement/rendered_confirmform.html | 4 +- .../timemanagement/rendered_table.html | 107 ++++++++-- .../timemanagement_management.html | 9 +- .../templates/timemanagement/tm_ab_all.html | 5 +- .../timemanagement/tm_ab_management.html | 66 +++++- timemanagement/views.py | 161 ++++++++++++++- users/models.py | 2 +- users/signals.py | 48 ++--- users/templates/users/base.html | 19 +- 33 files changed, 963 insertions(+), 149 deletions(-) create mode 100644 dasettings/templates/dasettings/absencereason_add.html create mode 100644 dasettings/templates/dasettings/absencereason_confirm_delete.html create mode 100644 dasettings/templates/dasettings/absencereason_update.html create mode 100644 dasettings/templates/dasettings/freedays_add.html create mode 100644 dasettings/templates/dasettings/freedays_confirm_delete.html create mode 100644 dasettings/templates/dasettings/freedays_management.html diff --git a/chat/templates/chat/chat_content.html b/chat/templates/chat/chat_content.html index 86752e4..a30783a 100644 --- a/chat/templates/chat/chat_content.html +++ b/chat/templates/chat/chat_content.html @@ -1,3 +1,4 @@ +{% load counter_tag %} {% if roomdata.creator == user %}

Gespräch mit {{roomdata.chatmember_single.first_name}} {{roomdata.chatmember_single.last_name}}

{% else %} @@ -8,43 +9,57 @@
-
- - Unterhaltung gestartet am {{roomdata.chatroom_createddate}} - +
+ Unterhaltung gestartet am {{roomdata.chatroom_createddate}}

- +
+ {% for message in roomdata.messages.all %} + + {% if forloop.counter0 == 0 %} + {% setMessageDayInfo message %} + {% else %} + {% getMessageDayInfo message as newday %} + {% if newday == True %} +
+
+
+ {{message.sendtime|date:"d.m.Y"}} +
+
+ {% endif %} + {% endif %} - {% for message in roomdata.messages.all %} {% if message.author == request.user %}
-
-
{{message.author.first_name}} {{message.author.last_name}}, {{message.sendtime}}
+
+
{{message.sendtime|date:"H:m"}}
- {{message.content}} - -
+ {{message.content}} + +
{% else %}
-
- -
-
{{message.author.first_name}} {{message.author.last_name}}, {{message.sendtime}}
-
- - {{message.content}} - +
+ +
+
{{message.author.first_name}} {{message.author.last_name}}, {{message.sendtime|date:"H:m"}}
+
+ + {{message.content}} + +
-
- {% endif %} + + + {% endfor %} diff --git a/chat/templates/chat/chat_othermessage.html b/chat/templates/chat/chat_othermessage.html index 7f8fc6c..b56cc25 100644 --- a/chat/templates/chat/chat_othermessage.html +++ b/chat/templates/chat/chat_othermessage.html @@ -2,7 +2,7 @@
-
{{newmessage.author.first_name}} {{newmessage.author.last_name}}, {{newmessage.sendtime}}
+
{{newmessage.author.first_name}} {{newmessage.author.last_name}}, {{newmessage.sendtime|date:"H:m"}}
{{newmessage.content}} diff --git a/chat/templates/chat/chat_ownmessage.html b/chat/templates/chat/chat_ownmessage.html index e695ff6..3ee7ff0 100644 --- a/chat/templates/chat/chat_ownmessage.html +++ b/chat/templates/chat/chat_ownmessage.html @@ -2,7 +2,7 @@
-
{{newmessage.author.first_name}} {{newmessage.author.last_name}}, {{newmessage.sendtime}}
+
{{newmessage.sendtime|date:"H:m"}}
{{newmessage.content}} diff --git a/chat/templates/chat/chatmanagement.html b/chat/templates/chat/chatmanagement.html index b992f9c..42c4877 100644 --- a/chat/templates/chat/chatmanagement.html +++ b/chat/templates/chat/chatmanagement.html @@ -25,11 +25,15 @@ position: absolute; } +.chatmessageele_breaker +{ + float: right; +} .chatmessageele_me { padding: 5px; border-radius: 15px; - background-color: #f8f9fc; + background-color: #cfe6f4; float: right; text-align: right; } @@ -38,10 +42,10 @@ { padding: 5px; border-radius: 15px; - background-color: #858796; + background-color: #f8f9fc; float: left; text-align: left; - color: #ffffff; + color: #000000; } .scroll { diff --git a/cloud/templates/cloud/cloud_main.html b/cloud/templates/cloud/cloud_main.html index ce4cd69..a9932eb 100644 --- a/cloud/templates/cloud/cloud_main.html +++ b/cloud/templates/cloud/cloud_main.html @@ -420,7 +420,7 @@ a.disabled {
diff --git a/dasettings/forms.py b/dasettings/forms.py index 3deda84..d07ed72 100644 --- a/dasettings/forms.py +++ b/dasettings/forms.py @@ -5,6 +5,7 @@ from users.models import AgencyGroup, Agency, Profile, AgencyJob, AgencyNetwork, from PIL import Image from bootstrap_datepicker_plus import DatePickerInput from django.utils.translation import gettext as _ +from timemanagement.models import AbsenceReason class AgencyTimeManagement(forms.ModelForm): class Meta: @@ -71,15 +72,16 @@ class UserTimeForm(forms.ModelForm): "loose_holidedate" : "Urlaubstage aus Vorjahr verfallen am", "startdate" : "Einstellungsdatum", "holiday_start" : "Urlaubstage bei Einstellung", - "wd_mo" : "Montag", - "wd_tu" : "Dienstag", - "wd_we" : "Mittwoch", - "wd_th" : "Donnerstag", - "wd_fr" : "Freitag", + #"wd_mo" : "Montag", + #"wd_tu" : "Dienstag", + #"wd_we" : "Mittwoch", + #"wd_th" : "Donnerstag", + #"wd_fr" : "Freitag", } - fields = ["startdate", "wd_mo", "wd_tu", "wd_we", "wd_th", "wd_fr", "holiday", "loose_holidedate", "holiday_start", ] + #fields = ["startdate", "wd_mo", "wd_tu", "wd_we", "wd_th", "wd_fr", "holiday", "loose_holidedate", "holiday_start", ] + fields = ["startdate", "holiday", "loose_holidedate", "holiday_start", ] widgets = { - 'loose_holidedate': DatePickerInput(options={"format":'DD.MM.', "locale":'de'}), + 'loose_holidedate': DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}), "startdate" : DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}) } @@ -117,15 +119,17 @@ class AgencyModulsForm(forms.ModelForm): 'module_files' : "Dateien", 'module_organigramm' : "Organigramm", 'module_messages' : "Mitteilungen", - 'module_timemanagement' : "Abwesenheits- und Zeiterfassung", + 'module_chat' : "Chat", + #'module_timemanagement' : "Abwesenheits- und Zeiterfassung", + 'module_timemanagement' : "Abwesenheitsplanung", } - fields = ['module_news','module_organizer','module_files','module_organigramm', 'module_messages', 'module_timemanagement'] + fields = ['module_news','module_organizer','module_files','module_organigramm', 'module_messages', 'module_chat', 'module_timemanagement'] # RAUSNHEMEN WENN DEV DONE def __init__(self, *args, **kwargs): super(AgencyModulsForm, self).__init__(*args, **kwargs) - self.fields['module_timemanagement'].widget.attrs['readonly'] = True - self.fields['module_timemanagement'].widget.attrs['disabled'] = True + #self.fields['module_timemanagement'].widget.attrs['readonly'] = True + #self.fields['module_timemanagement'].widget.attrs['disabled'] = True # NEW USER FORM @@ -187,3 +191,15 @@ class UserProfileForm(forms.ModelForm): except: print("no photo") + +class AbsenceReasonForm(forms.ModelForm): + class Meta: + model = AbsenceReason + labels = { + "name" : "Bezeichnung", + "need_confirm" : "Muss bestätigt werden", + "need_rep" : "Muss vertreten werden", + "is_holiday" : "Geht vom Urlaub ab", + "color" : "Farbe" + } + fields = ["name", "need_confirm", "need_rep", "is_holiday", "color"] \ No newline at end of file diff --git a/dasettings/templates/dasettings/absencereason_add.html b/dasettings/templates/dasettings/absencereason_add.html new file mode 100644 index 0000000..2eabca0 --- /dev/null +++ b/dasettings/templates/dasettings/absencereason_add.html @@ -0,0 +1,20 @@ +{% extends "users/base.html" %} +{% load crispy_forms_tags %} +{% block content %} +{% if request.user.profile.agency.module_timemanagement %} +
+

Abwesenheitskategorie anlegen

+
+
+ {% csrf_token %} + {{ form|crispy }} +
+   + Abbrechen +
+
+{% else %} +

Das Modul Abwesenheitsplanung wurden in ihrer Agentur deaktiviert.

+{% endif %} +{% endblock content %} + diff --git a/dasettings/templates/dasettings/absencereason_confirm_delete.html b/dasettings/templates/dasettings/absencereason_confirm_delete.html new file mode 100644 index 0000000..79b2989 --- /dev/null +++ b/dasettings/templates/dasettings/absencereason_confirm_delete.html @@ -0,0 +1,23 @@ +{% extends "users/base.html" %} +{% load crispy_forms_tags %} +{% block content %} +{% if request.user.profile.agency.module_timemanagement %} +
+
+
+ +
+
+
+
+ {% csrf_token %} +
+   + Abbrechen +
+
+
+{% else %} +

Das Modul Abwesenheitsplanung wurden in ihrer Agentur deaktiviert.

+{% endif %} +{% endblock content %} \ No newline at end of file diff --git a/dasettings/templates/dasettings/absencereason_update.html b/dasettings/templates/dasettings/absencereason_update.html new file mode 100644 index 0000000..5616b7a --- /dev/null +++ b/dasettings/templates/dasettings/absencereason_update.html @@ -0,0 +1,20 @@ +{% extends "users/base.html" %} +{% load crispy_forms_tags %} +{% block content %} +{% if request.user.profile.agency.module_timemanagement %} +
+

Abwesenheitskategorie aktualisieren

+
+
+ {% csrf_token %} + {{ form|crispy }} +
+   + Abbrechen +
+
+{% else %} +

Das Modul Abwesenheitsplanung wurden in ihrer Agentur deaktiviert.

+{% endif %} +{% endblock content %} + diff --git a/dasettings/templates/dasettings/freedays_add.html b/dasettings/templates/dasettings/freedays_add.html new file mode 100644 index 0000000..21cb54b --- /dev/null +++ b/dasettings/templates/dasettings/freedays_add.html @@ -0,0 +1,20 @@ +{% extends "users/base.html" %} +{% load crispy_forms_tags %} +{% block content %} +{% if request.user.profile.agency.module_timemanagement %} +
+

Freien Tag anlegen

+
+
+ {% csrf_token %} + {{form.media}} + {{ form|crispy }} +
+   + Abbrechen +
+
+{% else %} +

Das Modul Abwesenheitsplanung wurden in ihrer Agentur deaktiviert.

+{% endif %} +{% endblock content %} diff --git a/dasettings/templates/dasettings/freedays_confirm_delete.html b/dasettings/templates/dasettings/freedays_confirm_delete.html new file mode 100644 index 0000000..2bfd368 --- /dev/null +++ b/dasettings/templates/dasettings/freedays_confirm_delete.html @@ -0,0 +1,24 @@ +{% extends "users/base.html" %} +{% load crispy_forms_tags %} +{% block content %} +{% if request.user.profile.agency.module_timemanagement %} +
+
+
+ +
+
+
+ +
+ {% csrf_token %} +
+   + Abbrechen +
+
+
+{% else %} +

Das Modul Abwesenheitsplanung wurden in ihrer Agentur deaktiviert.

+{% endif %} +{% endblock content %} \ No newline at end of file diff --git a/dasettings/templates/dasettings/freedays_management.html b/dasettings/templates/dasettings/freedays_management.html new file mode 100644 index 0000000..ff533ec --- /dev/null +++ b/dasettings/templates/dasettings/freedays_management.html @@ -0,0 +1,138 @@ +{% extends "users/base.html" %} +{% load counter_tag %} +{% block content %} +
+ +

Feiertage und Schließtage{% if request.user.profile.showtooltips %} {% endif %} +  Freier Tag +

+
+
+
+ + + + + + + {% if user|usergperm:"moduleorganizer" %} + + {% endif %} + + + + {% for fd in freedays %} + + + + + + {% endfor %} + +
NameTag 
{{ fd.name }}{{ fd.day|date:"d. F Y" }} + {% if user|usergperm:"moduleorganizer" %} + + + + {% endif %} +
+
+
+ + + + + + +{% endblock content %} \ No newline at end of file diff --git a/dasettings/templates/dasettings/modulesettings_timemanagement.html b/dasettings/templates/dasettings/modulesettings_timemanagement.html index eec387a..c8d24fa 100644 --- a/dasettings/templates/dasettings/modulesettings_timemanagement.html +++ b/dasettings/templates/dasettings/modulesettings_timemanagement.html @@ -1,11 +1,45 @@ {% load crispy_forms_tags %} -
- {% csrf_token %} - {{modsettings_tm|crispy}} -
- {% for ab in modsettings_tm_abcat %} - {{ab.name}}
- {% endfor %} +{% load counter_tag %} +

Abwesenheitskategorien{% if request.user.profile.showtooltips %} {% endif %} +  Kategorie +

+   + + + + + + + + + + + + {% for ab in modsettings_tm_abcat %} + + + + + + + + {% endfor %} + +
BezeichnungMuss bestätigt werdenMuss vertreten werdenUrlaubstag 
{{ab.name}}{% if ab.need_confirm %} Bedarf Bestätigung {% else %} Ohne Bestätigung {% endif %}{% if ab.need_rep %} Muss vertreten werden {% else %} Ohne Vertretung {% endif %}{% if ab.is_holiday %} Urlaub {% endif %} + {% if user|usergperm:"moduleorganizer" %} + + + + + + + + + {% endif %} +
+ Abwesenheitskategorien legen fest, wie sich eine Abwesenheit bzgl. Bestätigung durch einen Mitarbeiter mit entsprechenden Rechten und eines Vertretes verhält. +
+ Feiertage bearbeiten - {% for ab in allabsences %} diff --git a/timemanagement/templates/timemanagement/tm_ab_management.html b/timemanagement/templates/timemanagement/tm_ab_management.html index 9d47f9a..7406293 100644 --- a/timemanagement/templates/timemanagement/tm_ab_management.html +++ b/timemanagement/templates/timemanagement/tm_ab_management.html @@ -70,9 +70,6 @@ - - -
@@ -362,4 +384,38 @@ $('#absencetabs a').on('click', function (e) { {% else %}

Das Modul Abwesenheits- und Zeiterfassung wurde in ihrer Agentur deaktiviert.

{% endif %} + + + +{% if missinguserdata|length > 0 %} + + +{% endif %} + {% endblock content %} diff --git a/timemanagement/views.py b/timemanagement/views.py index d80a36f..0af6698 100644 --- a/timemanagement/views.py +++ b/timemanagement/views.py @@ -14,7 +14,8 @@ import calendar from .forms import AddAbsence, ConfirmAbsenceForm from django.contrib import messages from users.models import UserFullName - +from users.models import UserTime +from datetime import timedelta def loadingFreeDays(plz): @@ -143,11 +144,20 @@ def AbsenceManagmenet(request, activemonth=False, activeyear=False): else: prevyear = activeyear + missinguserdata = [] + #CHECK, ob alle nötigen Infos zur Urlaubsberechnung vorliegen + for user in User.objects.filter(profile__agency=request.user.profile.agency): + tempTime = UserTime.objects.get(user=user) + + if(tempTime.startdate == None): + missinguserdata.append(user) + context = { "active_link" : "abscence", "usersofagency" : User.objects.filter(profile__agency=request.user.profile.agency).order_by("-last_name"), "days_this_month" : get_datetime_range(activeyear,activemonth), "nextmonth" : nextmonth, + "missinguserdata" : missinguserdata, "prevmonth" : prevmonth, "nextyear" : nextyear, "prevyear" : prevyear, @@ -294,12 +304,21 @@ def TimeAjax(request): prevyear = activeyear - 1 else: prevyear = activeyear - + missinguserdata = [] + #CHECK, ob alle nötigen Infos zur Urlaubsberechnung vorliegen + for user in User.objects.filter(profile__agency=request.user.profile.agency): + tempTime = UserTime.objects.get(user=user) + + if(tempTime.startdate == None): + missinguserdata.append(user) + + context = { "active_link" : "abscence", "usersofagency" : User.objects.filter(profile__agency=request.user.profile.agency).order_by("-last_name"), "days_this_month" : get_datetime_range(activeyear,activemonth), "activemonth" : activemonth, + "missinguserdata" : missinguserdata, "activeyear" : activeyear, "nextmonth" : nextmonth, "prevmonth" : prevmonth, @@ -314,7 +333,8 @@ def TimeAjax(request): if(reason.agency == request.user.profile.agency): data = { "success" : True, - "isreq" : reason.need_rep + "isreq" : reason.need_rep, + "isholiday" : reason.is_holiday } else: data = { @@ -357,6 +377,67 @@ def TimeAjax(request): "activemonth" : request.GET["activemonth"], "activeyear" : request.GET["activeyear"] } + elif request.GET["action"] == "getrestholidays": + user = User.objects.get(pk=request.GET["userid"]) + usertimedata = UserTime.objects.get(user=user) + today = date.today() + if(user.profile.agency == request.user.profile.agency and request.user.has_perm("users.absencemanager")): + + # Alle Abwesenheiten laden, die bestätigt oder angefragt sind UND Urlaub sind + absences = Absence.objects.filter(user=user, confirm_status=0, reason__is_holiday=True) | Absence.objects.filter(user=user, confirm_status=1, reason__is_holiday=True) + + start_day = request.GET["startdate"].split("__") + start_day_ob = datetime.date(int(start_day[0]), int(start_day[1]), int(start_day[2])) + + end_day = request.GET["enddate"].split("__") + end_day_obj = datetime.date(int(end_day[0]), int(end_day[1]), int(end_day[2])) + + start_half = True + if request.GET["start_half"] == "false": + start_half = False + + end_half = True + if request.GET["end_half"] == "false": + end_half = False + + + # USER HAS NO ABSENCE + if(len(absences) == 0): + # Hier Urlaubstage bei Einstellung mit berücksichtigen + if(start_day_ob.year == usertimedata.startdate.year): + + data = { + "restholiday" : calculateHolidays(request, usertimedata.holiday_start + usertimedata.holiday, start_day_ob, end_day_obj, start_half, end_half) + } + # Hier Einstellungstage irrelevant und da noch keine Abwesenheiten eingetragen wurden, einfach aus Profil laden + else: + data = { + "restholiday" : calculateHolidays(request, usertimedata.holiday, start_day_ob, end_day_obj, start_half, end_half) + } + # ABSENCE-Data found, calculating rest-Days + else: + finalholidays = 0 + + # Besteht noch Anspruch aus Einstellungsjahr? + if(start_day_ob.year == usertimedata.startdate.year): + finalholidays += usertimedata.holiday_start + usertimedata.holiday + # Hier Einstellungstage irrelevant und da noch keine Abwesenheiten eingetragen wurden, einfach normal + else: + finalholidays += usertimedata.holiday + + # Berechne pro Abwesenheits die verbrauchen Urlaubstage + for absence in absences: + finalholidays -= calculatingHolidaysByAbsence(request, absence) + + data = { + "restholiday" : calculateHolidays(request, finalholidays, start_day_ob, end_day_obj, start_half, end_half) + } + # REQUEST USER NO RIGHTS + else: + data = { + "success" : False + } + # GET REQUEST ACTION UNKNOWN else: data = { "success" : False @@ -365,3 +446,77 @@ def TimeAjax(request): return JsonResponse(data) +''' + +Gibt einen Integer zurück, welcher die Urlaubstage von Start zu Enddatum auf der Grundlage von Freitagen berechnet. +Berücksichtigt sowohl Wochenende als auch in der Agentur hinterlegte Freitage/Schließtage + +''' +@login_required +def calculateHolidays(request, restdays, start, end, start_half, end_half): + allfreedays = FreeDays.objects.filter(agency=request.user.profile.agency) + if(end == start): + if(start_half): + return restdays - 0.5 + else: + return restdays - 1 + else: + if(end < start): + return False + else: + counter = 0 + if(start_half): + counter -= 0.5 + if(end_half): + counter -= 0.5 + + weekdays = [6,7] + freedaycounter = 0 + for dt in daterange(start, end): + + if dt.isoweekday() not in weekdays: + counter += 1 + for freeday in allfreedays.all(): + if(dt == freeday.day): + freedaycounter += 1 + + + return restdays - counter + freedaycounter + +@login_required +def calculatingHolidaysByAbsence(request, absence): + # Freitage laden, die innerhalb der gewünschten Abwesenheit liegen + allfreedays = FreeDays.objects.filter(agency=request.user.profile.agency, day__gt=absence.start, day__lt=absence.end) + finalholidayinabsence = 0 + + # Start und Ende gleich, nur ein Tag. Checken, ob Halber Tag + if(absence.start == absence.end): + if(absence.start_ishalf): + finalholidayinabsence = 0.5 + else: + finalholidayinabsence = 1 + return finalholidayinabsence + + else: + if(absence.start_ishalf): + finalholidayinabsence -= 0.5 + if(absence.end_ishalf): + finalholidayinabsence -= 0.5 + + weekdays = [6,7] + freedaycounter = 0 + for dt in daterange(absence.start, absence.end): + + if dt.isoweekday() not in weekdays: + finalholidayinabsence += 1 + for freeday in allfreedays.all(): + # FREEDAY FOUND + if(dt == freeday.day): + freedaycounter += 1 + + return finalholidayinabsence - freedaycounter + +# Gibt die Woche als Wochentage zurück +def daterange(date1, date2): + for n in range(int ((date2 - date1).days)+1): + yield date1 + timedelta(n) \ No newline at end of file diff --git a/users/models.py b/users/models.py index c29c0eb..91c5b42 100644 --- a/users/models.py +++ b/users/models.py @@ -268,7 +268,7 @@ class UserTime(models.Model): holiday = models.FloatField(default=24.0) holiday_start = models.FloatField(default=0.0) loose_holidedate = models.DateField(default=datetime.date(datetime.datetime.now().year + 1, 4,30)) - startdate = models.DateTimeField(default=None, blank=True, null=True) + startdate = models.DateField(default=None, blank=True, null=True) ''' diff --git a/users/signals.py b/users/signals.py index 8fd4a62..373ee19 100644 --- a/users/signals.py +++ b/users/signals.py @@ -25,38 +25,43 @@ from datetime import date import channels.layers from asgiref.sync import async_to_sync -def loadingFreeDays(plz): +def loadingFreeDays(plz, year): # Getting land - file_path = os.path.join(settings.STATIC_ROOT, 'users/extra/plz_short.csv') land = False with open(file_path, 'rt') as csvfile: - filecsv = csv.reader(csvfile, delimiter=';') + filecsv = csv.reader(csvfile, delimiter=';') for row in filecsv: - if row[1] == plz: + + if str(row[1]) == str(plz): land = row[6] break; - + if(land != False): - # CALCULATE FREEDAYS AS JSON - year = today = date.today().year - - URL = "https://feiertage-api.de/api/" PARAMS = {'jahr':year,'nur_land':land} - r = requests.get(url = URL, params = PARAMS) + r = requests.get(url = URL, params = PARAMS) return r.json() else: return False # CHECK SOMETHING WHEN USER LOGGED IN @receiver(signal=user_logged_in, sender=User) -def checkForWorkDays(sender, user, request, **kwargs): +def checkForFreeDays(sender, user, request, **kwargs): user.profile.onlinestatus = 0 user.save() today = date.today() + + if len(FreeDays.objects.filter(agency=user.profile.agency, year=today.year+2)) == 0: + tempdays = loadingFreeDays(user.profile.agency.plz, today.year+2) + if(tempdays != False): + for k in tempdays.keys(): + tempdate = tempdays[k]["datum"].split("-") + FreeDays(agency=user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=date.today().year+2).save() + + ''' wd = Workday.objects.filter(user=user, end=None, start__day__lte=today.day) for d in wd: d.end = datetime.datetime(d.start.year, d.start.month, d.start.day, 23, 59, 00) @@ -65,7 +70,7 @@ def checkForWorkDays(sender, user, request, **kwargs): if(b.end == None): b.end = datetime.datetime(d.start.year, d.start.month, d.start.day, 23, 59, 00) b.save() - + ''' # CHECK SOMETHING WHEN USER LOGGED IN @receiver(signal=user_logged_in, sender=User) def checkDefaultAbsenceReasons(sender, user, request, **kwargs): @@ -87,25 +92,6 @@ def checkDefaultAbsenceReasons(sender, user, request, **kwargs): - -@receiver(signal=user_logged_in, sender=User) -def checkAllFreeDaysLoaded(sender, user, request, **kwargs): - pass - ''' - allFreeDays = FreeDays.objects.filter(agency=user.profile.agency, year=date.today().year) - # NO DAYS FOR THIS YEAR - if(len(allFreeDays) == 0): - tempdays = loadingFreeDays(user.profile.agency.plz) - for k in tempdays.keys(): - tempdate = tempdays[k]["datum"].split("-") - FreeDays(agency=user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=date.today().year).save() - ''' - - - - - - # Deletes all Notifications added to to delete news @receiver(pre_delete, sender=News) def del_news_notifications(sender, instance, **kwargs): diff --git a/users/templates/users/base.html b/users/templates/users/base.html index 2f57efb..a8e4d57 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -57,10 +57,9 @@
- - -