From 9719fe6457849c1968191c73afeaab0465b4e68c Mon Sep 17 00:00:00 2001 From: Holger Trampe Date: Sat, 30 May 2020 01:27:40 +0200 Subject: [PATCH] Zeiterfassung vorbereitet, Abwesenheit fehlt noch bearbeiten --- dasettings/forms.py | 26 +++++++------------ .../modulesettings_timemanagement.html | 2 +- .../templates/dasettings/user_usprof.html | 14 +++++++--- dasettings/views.py | 15 ++++++----- .../timemanagement/rendered_confirmform.html | 12 ++++++++- .../timemanagement_management.html | 2 +- .../templates/timemanagement/tm_ab_all.html | 6 +++-- .../timemanagement/tm_ab_userown.html | 4 +-- timemanagement/views.py | 20 +++++++++++--- users/models.py | 4 ++- users/templates/users/base.html | 6 ++--- 11 files changed, 72 insertions(+), 39 deletions(-) diff --git a/dasettings/forms.py b/dasettings/forms.py index 011a41e..b227296 100644 --- a/dasettings/forms.py +++ b/dasettings/forms.py @@ -7,16 +7,6 @@ from bootstrap_datepicker_plus import DatePickerInput from django.utils.translation import gettext as _ from timemanagement.models import AbsenceReason -class AgencyTimeManagement(forms.ModelForm): - class Meta: - model = Agency - - fields = ['module_timemanagement_ze'] - - labels = { - 'module_timemanagement_ze' : "Zeiterfassung aktivieren" - } - class AgencyOrganigrammForm(forms.ModelForm): class Meta: model = Agency @@ -36,7 +26,6 @@ class AgencyNetworkForm(forms.ModelForm): "publicjoin" : "Beitritt ohne Bestätigung" } - # Change logged Users Data (Usernamen an Email) NUR HIER MÖGLICH! class UsersSelfChangeForm(forms.ModelForm): email = forms.EmailField() @@ -74,16 +63,21 @@ class UserTimeForm(forms.ModelForm): "wd_tu" : "Dienstag", "wd_we" : "Mittwoch", "wd_th" : "Donnerstag", - "wd_fr" : "Freitag", + "wd_fr" : "Freitag", + "usetime" : "Zeiterfassung" , + "usetime_start" : "Zeiterfassung ab" } - fields = ["startdate", "wd_mo", "wd_tu", "wd_we", "wd_th", "wd_fr", "loose_holidedate"] + fields = ["startdate", "usetime", "usetime_start", "wd_mo", "wd_tu", "wd_we", "wd_th", "wd_fr", "loose_holidedate"] widgets = { - "startdate" : DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}) + "startdate" : DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}), + "usetime_start" : DatePickerInput(options={"format":'DD.MM.YYYY', "locale":'de'}) } def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['startdate'].required = True + self.fields['usetime_start'].required = False + self.fields['usetime'].required = False # PERMISSION GROUPS FORM @@ -116,8 +110,8 @@ class AgencyModulsForm(forms.ModelForm): 'module_organigramm' : "Organigramm", 'module_messages' : "Mitteilungen", 'module_chat' : "Chat", - #'module_timemanagement' : "Abwesenheits- und Zeiterfassung", - 'module_timemanagement' : "Abwesenheitsplanung", + 'module_timemanagement' : "Abwesenheits- und Zeiterfassung", + #'module_timemanagement' : "Abwesenheitsplanung", } fields = ['module_news','module_organizer','module_files','module_organigramm', 'module_messages', 'module_chat', 'module_timemanagement'] diff --git a/dasettings/templates/dasettings/modulesettings_timemanagement.html b/dasettings/templates/dasettings/modulesettings_timemanagement.html index e1afd01..0a73032 100644 --- a/dasettings/templates/dasettings/modulesettings_timemanagement.html +++ b/dasettings/templates/dasettings/modulesettings_timemanagement.html @@ -48,7 +48,7 @@ type: "GET", url: "{% url 'modsettings-tm' %}", data:{ - aze: $("#id_module_timemanagement_ze").prop('checked') + //aze: $("#id_module_timemanagement_ze").prop('checked') }, success: function( data ) { diff --git a/dasettings/templates/dasettings/user_usprof.html b/dasettings/templates/dasettings/user_usprof.html index 88a2929..8e34672 100644 --- a/dasettings/templates/dasettings/user_usprof.html +++ b/dasettings/templates/dasettings/user_usprof.html @@ -164,9 +164,17 @@
{% csrf_token %} - -
Arbeitszeiten 
-
+
Zeiterfassung 
+
+
+ {{usertime_form.usetime|as_crispy_field}} +
+
+ {{usertime_form.usetime_start|as_crispy_field}} +
+
+
Arbeitszeiten 
+
diff --git a/dasettings/views.py b/dasettings/views.py index dc1b2fb..8642d5f 100644 --- a/dasettings/views.py +++ b/dasettings/views.py @@ -1,7 +1,7 @@ from django.shortcuts import render, redirect from django.contrib.auth.decorators import login_required from django.http import HttpResponseRedirect,HttpResponse, JsonResponse -from .forms import UsersSelfChangeForm, UsersNotificationForm, AgencyGroupPerms, AgencyModulsForm, UserNewUserForm, UserProfileForm, AgencyNetworkForm, AgencyOrganigrammForm, UserTimeForm, AgencyTimeManagement, AbsenceReasonForm +from .forms import UsersSelfChangeForm, UsersNotificationForm, AgencyGroupPerms, AgencyModulsForm, UserNewUserForm, UserProfileForm, AgencyNetworkForm, AgencyOrganigrammForm, UserTimeForm, AbsenceReasonForm from django.contrib import messages from django.contrib.auth import update_session_auth_hash from django.contrib.auth.forms import PasswordChangeForm @@ -78,8 +78,8 @@ def getAllForms(request, context): context.update({'modsettings_organigramm' : modsettings_organigramm}) #Modulsettings ABWESENHEIT- UND ZEITERFASSUNG - modsettings_tm = AgencyTimeManagement(instance=request.user.profile.agency) - context.update({'modsettings_tm' : modsettings_tm}) + #modsettings_tm = AgencyTimeManagement(instance=request.user.profile.agency) + #context.update({'modsettings_tm' : modsettings_tm}) context.update({"modsettings_tm_abcat" : AbsenceReason.objects.filter(agency=request.user.profile.agency).order_by("name") }) @@ -335,7 +335,7 @@ def SettingsAgencyModuls(request, context): # Check, if Timemanagement is deactivate, to deactivate Zeiterfassung if(request.user.profile.agency.module_timemanagement == False): ag = request.user.profile.agency - ag.module_timemanagement_ze = False + #ag.module_timemanagement_ze = False if(request.user.has_perm("users.modulesconfig")): FreeDays.objects.filter(agency=request.user.profile.agency).delete() @@ -1282,9 +1282,12 @@ def ModSettingsOrga(request): return JsonResponse({}) else: return JsonResponse({}) - + + @login_required def ModSettingsTm(request): + return JsonResponse({}) + ''' if request.method == 'GET' and request.user.has_perm("users.modulesconfig"): if(request.GET['aze'] == "true"): ag = request.user.profile.agency @@ -1297,4 +1300,4 @@ def ModSettingsTm(request): return JsonResponse({}) else: return JsonResponse({}) - + ''' diff --git a/timemanagement/templates/timemanagement/rendered_confirmform.html b/timemanagement/templates/timemanagement/rendered_confirmform.html index 6db32f0..27f9fe6 100644 --- a/timemanagement/templates/timemanagement/rendered_confirmform.html +++ b/timemanagement/templates/timemanagement/rendered_confirmform.html @@ -1,6 +1,6 @@ {% load crispy_forms_tags %} {% load mathfilters %} -
Abwesenheit für {{absence.user.first_name}} {{absence.user.last_name}} annehmen oder ablehnen
+
Abwesenheit für {{absence.user.first_name}} {{absence.user.last_name}} annehmen/ablehnen

Informationen der Abwesenheit
Von: {{absence.start|date:"d.m Y"}}
@@ -25,6 +25,16 @@ Informationen: {{absence.info}}
{{usertime_form.wd_mo|as_crispy_field}}
+{% if other_absences_string != False %} +
+
+
Andere Abwesenheiten in diesem Zeitraum
+ {% for ele in other_absences_string %} + {{ele}}
+ {% endfor %} +
+
+{% endif %} {% csrf_token %} diff --git a/timemanagement/templates/timemanagement/timemanagement_management.html b/timemanagement/templates/timemanagement/timemanagement_management.html index 585bceb..601fd96 100644 --- a/timemanagement/templates/timemanagement/timemanagement_management.html +++ b/timemanagement/templates/timemanagement/timemanagement_management.html @@ -1,7 +1,7 @@ {% extends "users/base.html" %} {% block content %} {% load counter_tag %} -{% if request.user.profile.agency.module_timemanagement_ze %} +{% if request.user.profile.agency.module_timemanagement %}

Zeiterfassung 


diff --git a/timemanagement/templates/timemanagement/tm_ab_all.html b/timemanagement/templates/timemanagement/tm_ab_all.html index a904ef1..97c6651 100644 --- a/timemanagement/templates/timemanagement/tm_ab_all.html +++ b/timemanagement/templates/timemanagement/tm_ab_all.html @@ -3,7 +3,8 @@ - + + @@ -15,7 +16,8 @@ {% for abday in allabsences %} - + + diff --git a/timemanagement/templates/timemanagement/tm_ab_userown.html b/timemanagement/templates/timemanagement/tm_ab_userown.html index f6d52c0..412dee9 100644 --- a/timemanagement/templates/timemanagement/tm_ab_userown.html +++ b/timemanagement/templates/timemanagement/tm_ab_userown.html @@ -5,12 +5,12 @@
-
Urlaubsübersicht
+
Urlaubsübersicht {{activeyear}}

-
Übersicht nach Abwesenheitskategorien
+
Übersicht nach Abwesenheitskategorien {{activeyear}}
diff --git a/timemanagement/views.py b/timemanagement/views.py index 0fab956..0fe0f4b 100644 --- a/timemanagement/views.py +++ b/timemanagement/views.py @@ -167,10 +167,11 @@ def AbsenceManagmenet(request, activemonth=False, activeyear=False): # ABSENCE AUFLISTUNG NACH GRUND + allreasons = AbsenceReason.objects.filter(agency=request.user.profile.agency).order_by("name") final_reasons = [] for ar in allreasons: - tempabsece = Absence.objects.filter(reason=ar, user=request.user) + tempabsece = Absence.objects.filter(reason=ar, user=request.user, start__year=activeyear) temp_sum = 0.0 for t in tempabsece: temp_sum += calculatingHolidaysByAbsence(request, t) @@ -379,7 +380,7 @@ def TimeAjax(request): } # GET FORM FOR CONFIRM ABSENCE elif request.GET["action"] == "getrenderedform": - + absence = Absence.objects.get(pk=request.GET["abscenceid"]) timeinfo_thisyear = list(UserYearAbsenceInfo.objects.filter(year=absence.start.year, user=absence.user))[0] try: @@ -387,9 +388,21 @@ def TimeAjax(request): except: timeinfo_nextyear = False + + # POrüfen, ob es in diesem Zeitraum noch andere Abwesenheiten gibt + other_absences = Absence.objects.filter(start__lte=absence.start, end__gte=absence.end, agency=request.user.profile.agency).exclude(user=absence.user) + + other_absences_string = False + if (len(other_absences) > 0): + other_absences_string = [] + for a in other_absences: + other_absences_string.append(a.user.first_name + " " + a.user.last_name + " - Vom " + a.start.strftime("%d.%m.%Y") + " bis " + a.end.strftime("%d.%m.%Y")) + + context = { "confirmform" : ConfirmAbsenceForm(instance=request.user), "absence" : absence, + "other_absences_string" : other_absences_string, "timeinfo_thisyear" : timeinfo_thisyear, "timeinfo_nextyear" : timeinfo_nextyear } @@ -516,7 +529,8 @@ def TimeAjax(request): days_nextyear_rest = need_days_next + temprest days_nextyear_normal = temprest * -1 - other_absences = Absence.objects.filter(start__lte=start_day_obj, end__gte=end_day_obj, agency=request.user.profile.agency) | Absence.objects.filter(start__lte=start_day_obj, end__lte=end_day_obj, agency=request.user.profile.agency) | Absence.objects.filter(start__gte=start_day_obj, end__lte=start_day_obj, agency=request.user.profile.agency) | Absence.objects.filter(start__lte=end_day_obj, end__gte=end_day_obj, agency=request.user.profile.agency) + # POrüfen, ob es in diesem Zeitraum noch andere Abwesenheiten gibt + other_absences = Absence.objects.filter(start__lte=start_day_obj, end__gte=end_day_obj, agency=request.user.profile.agency) other_absences_string = False if (len(other_absences) > 0): diff --git a/users/models.py b/users/models.py index 0c886ab..a28523c 100644 --- a/users/models.py +++ b/users/models.py @@ -107,7 +107,7 @@ class Agency(models.Model): module_timemanagement = models.BooleanField(default=False) module_timemanagement_price = models.FloatField(default=10.0, max_length=9, blank=True) # Zeiterfassung Ja/Nein - module_timemanagement_ze = models.BooleanField(default=False) + #module_timemanagement_ze = models.BooleanField(default=False) vve = models.CharField(default="", max_length=200, blank=True) @@ -262,6 +262,8 @@ class UserTime(models.Model): wd_fr = models.FloatField(default=8.0) loose_holidedate = models.CharField(default="30.04.", max_length=6) startdate = models.DateField(default=None, blank=True, null=True) + usetime = models.BooleanField(default=False) + usetime_start = models.DateField(default=None, blank=True, null=True) class UserYearAbsenceInfo(models.Model): diff --git a/users/templates/users/base.html b/users/templates/users/base.html index 1b0c11e..4680b6e 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -180,7 +180,7 @@ {% endif %} - {% if request.user.profile.agency.module_timemanagement_ze %} + {% if request.user.usertime.usetime %} {% if active_link == 'timemanagement' %}
MitarbeiterVornameNachname Start Ende Grund
{{abday.user.first_name}} {{abday.user.last_name}}{{abday.user.first_name}}{{abday.user.last_name}} {{abday.start|date:"d.M Y"}} {{abday.end|date:"d.M Y"}} {{abday.reason.name}}