From 5a633c5dd2c129924203541beae22f8bb9e4dbc9 Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Fri, 29 May 2020 23:14:09 +0200 Subject: [PATCH] Abewesenheit logik fertig inkl. Rest fuer naechstes Jahr usw. --- dasettings/views.py | 12 +- .../__pycache__/counter_tag.cpython-38.pyc | Bin 12704 -> 12942 bytes standards/templatetags/counter_tag.py | 11 +- timemanagement/forms.py | 7 +- timemanagement/models.py | 12 +- .../timemanagement/rendered_table.html | 141 ++++++++++++++---- .../timemanagement/tm_ab_management.html | 52 +++---- .../timemanagement/tm_ab_userown.html | 68 +++++++-- timemanagement/views.py | 83 ++++++++--- users/signals.py | 72 ++++++--- users/templates/users/base.html | 3 +- users/templates/users/support.html | 10 +- users/usersforms.py | 2 +- users/views.py | 2 +- 14 files changed, 355 insertions(+), 120 deletions(-) diff --git a/dasettings/views.py b/dasettings/views.py index b569c00..dc1b2fb 100644 --- a/dasettings/views.py +++ b/dasettings/views.py @@ -272,9 +272,15 @@ class AbsenceReasonDeleteView(LoginRequiredMixin, DeleteView): template_name = 'dasettings/absencereason_confirm_delete.html' def delete(self, request, *args, **kwargs): - response = super(AbsenceReasonDeleteView, self).delete(request, *args, **kwargs) - messages.success(request, f'Abwesenheitskategorie wurde gelöscht!') - return response + try: + response = super(AbsenceReasonDeleteView, self).delete(request, *args, **kwargs) + messages.success(request, f'Abwesenheitskategorie wurde gelöscht!') + return response + except: + + messages.success(request, f'Abwesenheitskategorie kann nicht gelöscht werden, da Abwesenheiten eingetragen wurden.') + return redirect('dasettings') + def get_context_data(self, **kwargs): context = super(AbsenceReasonDeleteView, self).get_context_data(**kwargs) diff --git a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc index da4d7078e9139f072a7b4979f1fc719d2b86a832..490536267f4665c9889900caae038dbdee58053a 100644 GIT binary patch delta 5564 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 delta 5071 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 + + {% elif startdatecheck == False %} + {% elif da.weekday == 5 or da.weekday == 6 %} @@ -38,40 +41,83 @@ {% if abday.confirm_status == 0 %} {% if user|usergperm:"absencemanager" %} - - {% else %} + {% elif abday.user == user %} - {% endif %} + {% endif %} data-toggle="tooltip" data-placement="top" title="{% if abday.user == user %} {{abday.reason.name}} {% else %} Abwesend {% endif %} {% if abday.representator != None %} | Vertreter {{abday.representator.first_name}} {{abday.representator.last_name}} {% endif %} "> + {% else %} + + {% endif %} {% elif abday.confirm_status == 1 %} {% if user|usergperm:"absencemanager" %} {% else %} + {% endif %} data-toggle="tooltip" data-placement="top" title="Nicht bestätigt | {% if abday.user == user %} {{abday.reason.name}} {% else %} Abwesend {% endif %} {% if abday.representator != None %} | Vertreten durch {{abday.representator.first_name}} {{abday.representator.last_name}} {% endif %}"> {% endif %} {% else %} @@ -309,11 +361,16 @@ function recalculateChoosenDays(){ userid : userid, startdate : date_start.getFullYear() + "__" + (date_start.getMonth()+1) + "__" + date_start.getDate(), enddate : date_end.getFullYear() + "__" + (date_end.getMonth()+1) + "__" + date_end.getDate(), - start_half : $("#id_start_ishalf").prop("checked"), - end_half : $("#id_end_ishalf").prop("checked"), + //start_half : $("#id_start_ishalf").prop("checked"), + //end_half : $("#id_end_ishalf").prop("checked"), + startday_info : $("#id_startday_info").val(), + endday_info : $("#id_endday_info").val(), }, success : function(data){ + + console.log(data); + $("#startAbsenceProgress").modal("show"); @@ -322,10 +379,11 @@ function recalculateChoosenDays(){ $("#detail_rest").html(data["restholiday_thisyear"]); $("#detail_resthol").html(data["restholiday_lastyear"]); $("#detail_next").html(data["restholiday_nextyear"]); - + $("#detail_next_rest").html(data["restholiday_nextyear_rest"]); $("#detail_tocontract").html(data["need_days"]); - - $("#detail_sum").html(data["restholiday_thisyear"]+data["restholiday_lastyear"]+data["restholiday_nextyear"]); + $("#detail_tocontract_overall").html(data["need_days"]); + + $("#detail_sum").html(data["restholiday_thisyear"]+data["restholiday_lastyear"]+data["restholiday_nextyear"]+data["restholiday_nextyear_rest"]); if(data["restholiday_thisyear"] < 0 || data["restholiday_lastyear"] < 0 || data["restholiday_nextyear"] < 0){ $("#start_absence_contract").prop("disabled", true); @@ -336,15 +394,17 @@ function recalculateChoosenDays(){ if(seldates.length == 1){ $("#div_id_end").hide(); - $("#div_id_end_ishalf").hide(); + $("#div_id_endday_info").hide(); + } + else{ + $("#div_id_end").show(); + $("#div_id_endday_info").show(); } } }); } function recalculateChoosenDaysAfterInit(){ - console.log(sameday); - new_start = $("#id_start").datepicker().val(); new_end = $("#id_end").datepicker().val(); @@ -368,19 +428,36 @@ function recalculateChoosenDaysAfterInit(){ userid : userid, startdate : new_start[2] + "__" + new_start[1] + "__" + new_start[0], enddate : new_end[2] + "__" + new_end[1] + "__" + new_end[0], - start_half : $("#id_start_ishalf").prop("checked"), - end_half : $("#id_end_ishalf").prop("checked"), + //start_half : $("#id_start_ishalf").prop("checked"), + //end_half : $("#id_end_ishalf").prop("checked"), + startday_info : $("#id_startday_info").val(), + endday_info : $("#id_endday_info").val(), }, success : function(data){ - + console.log(data); $("#restholidays").html(data["restholiday_thisyear"]); $("#detail_rest").html(data["restholiday_thisyear"]); $("#detail_resthol").html(data["restholiday_lastyear"]); $("#detail_next").html(data["restholiday_nextyear"]); $("#holidayyear").html(new_start[2]); - $("#detail_sum").html(data["restholiday_thisyear"]+data["restholiday_lastyear"]+data["restholiday_nextyear"]); + $("#detail_sum").html(data["restholiday_thisyear"]+data["restholiday_lastyear"]+data["restholiday_nextyear"]+data["restholiday_nextyear_rest"]); $("#detail_tocontract").html(data["need_days"]); + $("#detail_tocontract_overall").html(data["need_days"]); + + if(data["two_years"] == true){ + $("#detail_tocontract").html(data["need_days_this"]); + $("#two_years").show(); + $("#holidayyear_next").html(new_end[2]); + $("#detail_next_rest").html(data["restholiday_nextyear_rest"]); + $("#detail_next").html(data["restholiday_nextyear"]); + $("#detail_tocontract_next").html(data["need_days_next"]); + $("#restholidays_next").html(data["restholiday_nextyear"]); + $("#detail_tocontract_overall").html(data["need_days_next"]+data["need_days_this"]); + } + else{ + $("#two_years").hide(); + } behindcheck = false; if(+behindcheck_start == +behindcheck_end){ @@ -415,6 +492,7 @@ $("#id_end").blur(function(){ recalculateChoosenDaysAfterInit(); }) +/* $("#id_start_ishalf").change(function(){ recalculateChoosenDaysAfterInit(); }) @@ -422,6 +500,14 @@ $("#id_start_ishalf").change(function(){ $("#id_end_ishalf").change(function(){ recalculateChoosenDaysAfterInit(); }) +*/ +$("#id_startday_info").change(function(){ + recalculateChoosenDaysAfterInit(); +}) + +$("#id_endday_info").change(function(){ + recalculateChoosenDaysAfterInit(); +}) $( function() { @@ -537,3 +623,4 @@ $( function() { + diff --git a/timemanagement/templates/timemanagement/tm_ab_management.html b/timemanagement/templates/timemanagement/tm_ab_management.html index f5aae5c..d06d1ae 100644 --- a/timemanagement/templates/timemanagement/tm_ab_management.html +++ b/timemanagement/templates/timemanagement/tm_ab_management.html @@ -89,9 +89,18 @@