diff --git a/areas/__pycache__/__init__.cpython-38.pyc b/areas/__pycache__/__init__.cpython-38.pyc index 3b12d3e..68d63ec 100644 Binary files a/areas/__pycache__/__init__.cpython-38.pyc and b/areas/__pycache__/__init__.cpython-38.pyc differ diff --git a/cloud/migrations/__pycache__/__init__.cpython-38.pyc b/cloud/migrations/__pycache__/__init__.cpython-38.pyc index cd4f676..751a18e 100644 Binary files a/cloud/migrations/__pycache__/__init__.cpython-38.pyc and b/cloud/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/dasettings/__pycache__/__init__.cpython-38.pyc b/dasettings/__pycache__/__init__.cpython-38.pyc index 91a913d..551679f 100644 Binary files a/dasettings/__pycache__/__init__.cpython-38.pyc and b/dasettings/__pycache__/__init__.cpython-38.pyc differ diff --git a/dasettings/migrations/__pycache__/__init__.cpython-38.pyc b/dasettings/migrations/__pycache__/__init__.cpython-38.pyc index e66e7ab..992ddbf 100644 Binary files a/dasettings/migrations/__pycache__/__init__.cpython-38.pyc and b/dasettings/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/dasettings/views.py b/dasettings/views.py index fa3e558..d7dbbb0 100644 --- a/dasettings/views.py +++ b/dasettings/views.py @@ -15,7 +15,7 @@ from django.template.loader import render_to_string from users.usersforms import UsersPermForm from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import CreateView -from users.models import Profile +from users.models import Profile, UserNotifications, UserTime from areas.models import Areas from tasks.models import Tasks import webcolors @@ -51,8 +51,8 @@ def checkForGroupName(request, newgroupname): @login_required def getAllForms(request, context): # USERFORMS - userform = UsersSelfChangeForm(instance=request.user) - passwordform = PasswordChangeForm(request.user) + userform = UsersSelfChangeForm(instance=request.user) + passwordform = PasswordChangeForm(request.user) context.update({'userform' : userform}) context.update({'passwordform' : passwordform}) @@ -62,7 +62,7 @@ def getAllForms(request, context): context.update({'notificationforms_standard' : notificationforms_standard}) notificationforms_news = UsersNotificationFormNews(instance=request.user.usernotifications) - context.update({'notificationforms_news' : notificationforms_news}) + context.update({'notificationforms_news' : notificationforms_news}) notificationforms_files = UsersNotificationFormFiles(instance=request.user.usernotifications) context.update({'notificationforms_files' : notificationforms_files}) @@ -74,42 +74,42 @@ def getAllForms(request, context): context.update({'notificationforms_messages' : notificationforms_messages}) notificationforms_chat = UsersNotificationFormChat(instance=request.user.usernotifications) - context.update({'notificationforms_chat' : notificationforms_chat}) + context.update({'notificationforms_chat' : notificationforms_chat}) notificationforms_abtime = UsersNotificationFormAbTime(instance=request.user.usernotifications) - context.update({'notificationforms_abtime' : notificationforms_abtime}) + context.update({'notificationforms_abtime' : notificationforms_abtime}) notificationforms_groups = UsersNotificationFormGroups(instance=request.user.usernotifications) - context.update({'notificationforms_groups' : notificationforms_groups}) + context.update({'notificationforms_groups' : notificationforms_groups}) notificationforms_agn = UsersNotificationFormAgn(instance=request.user.usernotifications) - context.update({'notificationforms_agn' : notificationforms_agn}) - + context.update({'notificationforms_agn' : notificationforms_agn}) + notificationforms_task = UsersNotificationFormTasks(instance=request.user.usernotifications) - context.update({'notificationforms_task' : notificationforms_task}) - - - + context.update({'notificationforms_task' : notificationforms_task}) + + + # AGENCY UPDATE FORMS agencyform = AgencyUpdateForm(instance=request.user.profile.agency) - context.update({'agencyform' : agencyform}) + context.update({'agencyform' : agencyform}) #PERMS perms = AgencyGroupPerms() - context.update({'perms' : perms}) + context.update({'perms' : perms}) #MODULFORMS modulform = AgencyModulsForm(instance=request.user.profile.agency) - context.update({'modulform' : modulform}) + context.update({'modulform' : modulform}) #MODULSETTUNGS #Modulsettings ORGANIGRAMM modsettings_organigramm = AgencyOrganigrammForm(instance=request.user.profile.agency) - context.update({'modsettings_organigramm' : modsettings_organigramm}) + context.update({'modsettings_organigramm' : modsettings_organigramm}) #Modulsettings ABWESENHEIT- UND ZEITERFASSUNG #modsettings_tm = AgencyTimeManagement(instance=request.user.profile.agency) - #context.update({'modsettings_tm' : modsettings_tm}) + #context.update({'modsettings_tm' : modsettings_tm}) context.update({"modsettings_tm_abcat" : AbsenceReason.objects.filter(agency=request.user.profile.agency).order_by("name") }) @@ -127,7 +127,7 @@ def DASettings(request): # CHECK FOR EVERY USER YEAR-DATA uina = User.objects.filter(profile__agency=request.user.profile.agency) - today = date.today() + today = date.today() for u in uina: # NO YEARS FOUND @@ -136,7 +136,7 @@ def DASettings(request): UserYearAbsenceInfo(agency=request.user.profile.agency, user=u, year=today.year).save() UserYearAbsenceInfo(agency=request.user.profile.agency, user=u, year=today.year+1).save() UserYearAbsenceInfo(agency=request.user.profile.agency, user=u, year=today.year+2).save() - + # CREATE DATE FOR YEAR PLUS 2 #elif len(UserYearAbsenceInfo.objects.filter(agency=user.profile.agency, year=today.year+2)) == 0: # uina = User.objects.filter(profile__agency=user.profile.agency) @@ -144,10 +144,10 @@ def DASettings(request): # for u in uina: # UserYearAbsenceInfo(agency=user.profile.agency, user=u, year=today.year+2).save() - - context = { + + context = { 'active_link' : 'dasettings', 'baseurl' : settings.BASE_URL } @@ -167,7 +167,7 @@ def DASettings(request): # LOAD AREAS agencyareas = Areas.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('areaorder') context.update({"agencyareas" : agencyareas}) - + # LOAD AGENCYNETWORKS #agencynetworks = AgencyNetwork.objects.filter(creator_agency=request.user.profile.agency) | AgencyNetwork.objects.filter(adminagencys__in=[request.user.profile.agency.pk]) | AgencyNetwork.objects.filter(members__in=[request.user.profile.agency.pk]) | AgencyNetwork.objects.filter(sharemembers__in=[request.user.profile.agency.pk]) @@ -178,70 +178,70 @@ def DASettings(request): for a in agencynetworks_all: if request.user.profile.agency in a.adminagencys.all() or request.user.profile.agency in a.members.all() or request.user.profile.agency in a.sharemembers.all(): - agencynetworks.append(a) + agencynetworks.append(a) context.update({"agencynetworks" : agencynetworks}) # LOAD TASKS alltasks = Tasks.objects.filter(agency__pk=request.user.profile.agency.pk).order_by('name') context.update({"alltasks" : alltasks}) - - if request.method == 'POST' and request.POST.get("settings_area") == "profil": - return SettingsProfilManagement(request, context) - elif request.method == 'POST' and request.POST.get("settings_area") == "agency": - return SettingsAgency(request, context) - elif request.method == 'POST' and request.POST.get("settings_area") == "moduls": - return SettingsAgencyModuls(request, context) - - + if request.method == 'POST' and request.POST.get("settings_area") == "profil": + return SettingsProfilManagement(request, context) + elif request.method == 'POST' and request.POST.get("settings_area") == "agency": + return SettingsAgency(request, context) + elif request.method == 'POST' and request.POST.get("settings_area") == "moduls": + return SettingsAgencyModuls(request, context) + + + # Returning the data from database for normal-loading Settings - else: - # DEFAULT DATA FORM-INFOS + else: + # DEFAULT DATA FORM-INFOS # Hier müssen alle Standard-Formulare rein, damit die Seite Settings # generell geladen werden kann. # PROFILE FORMS - userform = UsersSelfChangeForm(instance=request.user) - passwordform = PasswordChangeForm(request.user) + userform = UsersSelfChangeForm(instance=request.user) + passwordform = PasswordChangeForm(request.user) context.update({'userform' : userform}) context.update({'passwordform' : passwordform}) ############################### NOTIFIFORMS START ########################################## notificationforms_standard = UsersNotificationFormStandard(instance=request.user.usernotifications) - context.update({'notificationforms_standard' : notificationforms_standard}) + context.update({'notificationforms_standard' : notificationforms_standard}) notificationforms_news = UsersNotificationFormNews(instance=request.user.usernotifications) - context.update({'notificationforms_news' : notificationforms_news}) + context.update({'notificationforms_news' : notificationforms_news}) notificationforms_files = UsersNotificationFormFiles(instance=request.user.usernotifications) - context.update({'notificationforms_files' : notificationforms_files}) + context.update({'notificationforms_files' : notificationforms_files}) notificationforms_organizer = UsersNotificationFormOrganizer(instance=request.user.usernotifications) context.update({'notificationforms_organizer' : notificationforms_organizer}) notificationforms_messages = UsersNotificationFormMessages(instance=request.user.usernotifications) - context.update({'notificationforms_messages' : notificationforms_messages}) + context.update({'notificationforms_messages' : notificationforms_messages}) notificationforms_chat = UsersNotificationFormChat(instance=request.user.usernotifications) - context.update({'notificationforms_chat' : notificationforms_chat}) + context.update({'notificationforms_chat' : notificationforms_chat}) notificationforms_abtime = UsersNotificationFormAbTime(instance=request.user.usernotifications) - context.update({'notificationforms_abtime' : notificationforms_abtime}) + context.update({'notificationforms_abtime' : notificationforms_abtime}) notificationforms_groups = UsersNotificationFormGroups(instance=request.user.usernotifications) - context.update({'notificationforms_groups' : notificationforms_groups}) + context.update({'notificationforms_groups' : notificationforms_groups}) notificationforms_agn = UsersNotificationFormAgn(instance=request.user.usernotifications) context.update({'notificationforms_agn' : notificationforms_agn}) notificationforms_task = UsersNotificationFormTasks(instance=request.user.usernotifications) - context.update({'notificationforms_task' : notificationforms_task}) + context.update({'notificationforms_task' : notificationforms_task}) ############################### NOTIFIFORMS END ############################################ # AGENCY UPDATE FORMS agencyform = AgencyUpdateForm(instance=request.user.profile.agency) - context.update({'agencyform' : agencyform}) - + context.update({'agencyform' : agencyform}) + return render(request, 'dasettings/settings.html', context) ''' @@ -252,19 +252,19 @@ Hier werden die Agenturinfos ink. Agenturcropper für das Agenturbild angepasst. ''' @login_required -def SettingsAgency(request, context): - if request.POST.get("form_type") == "agencyform": +def SettingsAgency(request, context): + if request.POST.get("form_type") == "agencyform": agencyform = AgencyUpdateForm(request.POST, instance=request.user.profile.agency) if agencyform.is_valid(): - if 'agencypic' in request.FILES: + if 'agencypic' in request.FILES: request.user.profile.agency.agencypic = request.FILES['agencypic'] agencyform.save() context['agencyform'] = AgencyUpdateForm(instance=request.user.profile.agency) - messages.success(request, f'Agenturdaten aktualisiert!') + messages.success(request, f'Agenturdaten aktualisiert!') return render(request, 'dasettings/settings.html', context) else: - messages.success(request, f'Daten falsch eingegeben!') - context['agencyform'] = AgencyUpdateForm(instance=request.user.profile.agency) + messages.success(request, f'Daten falsch eingegeben!') + context['agencyform'] = AgencyUpdateForm(instance=request.user.profile.agency) return render(request, 'dasettings/settings.html', context) from django.db.models import F, Func, Value @@ -279,9 +279,9 @@ def FreeDaysManagemenet(request, initload=0): return render(request, 'dasettings/freedays_management.html', context) else: context = { - 'active_link' : 'dasettings', - 'freedays' : FreeDays.objects.filter(agency=request.user.profile.agency).order_by("-day") - } + 'active_link' : 'dasettings', + 'freedays' : FreeDays.objects.filter(agency=request.user.profile.agency).order_by("-day") + } return render(request, 'dasettings/freedays_management.html', context) @login_required @@ -290,11 +290,11 @@ def FreeDayAdd(request): freedayform = AddFreeDayForm(request.POST, instance=request.user.profile.agency) if freedayform.is_valid(): - fd = FreeDays(agency=request.user.profile.agency, day=freedayform.cleaned_data['day'], year=freedayform.cleaned_data['day'].year, name=freedayform.cleaned_data['name']).save() + fd = FreeDays(agency=request.user.profile.agency, day=freedayform.cleaned_data['day'], year=freedayform.cleaned_data['day'].year, name=freedayform.cleaned_data['name']).save() messages.success(request, f'Freier Tag hinzugefügt') context = { - "active_link" : "dasettings", + "active_link" : "dasettings", } return redirect("tm-managemenetfreedays") else: @@ -302,18 +302,18 @@ def FreeDayAdd(request): return redirect("tm-managemenetfreedays") else: context = { - "active_link" : "dasettings", + "active_link" : "dasettings", "form" : AddFreeDayForm() } return render(request, 'dasettings/freedays_add.html', context) - + class FreeDayDeleteView(LoginRequiredMixin, DeleteView): model = FreeDays - success_url = reverse_lazy('tm-managemenetfreedays') - template_name = 'dasettings/freedays_confirm_delete.html' - - def delete(self, request, *args, **kwargs): + success_url = reverse_lazy('tm-managemenetfreedays') + template_name = 'dasettings/freedays_confirm_delete.html' + + def delete(self, request, *args, **kwargs): response = super(FreeDayDeleteView, self).delete(request, *args, **kwargs) messages.success(request, f'Freier Tag wurde gelöscht!') return response @@ -326,19 +326,19 @@ class FreeDayDeleteView(LoginRequiredMixin, DeleteView): class AbsenceReasonDeleteView(LoginRequiredMixin, DeleteView): model = AbsenceReason - success_url = reverse_lazy('dasettings') - template_name = 'dasettings/absencereason_confirm_delete.html' - - def delete(self, request, *args, **kwargs): + success_url = reverse_lazy('dasettings') + template_name = 'dasettings/absencereason_confirm_delete.html' + + def delete(self, request, *args, **kwargs): 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') - + return redirect('dasettings') + def get_context_data(self, **kwargs): context = super(AbsenceReasonDeleteView, self).get_context_data(**kwargs) @@ -349,36 +349,36 @@ class AbsenceReasonAddView(LoginRequiredMixin, CreateView): model = AbsenceReason success_url = reverse_lazy('dasettings') form_class = AbsenceReasonForm - template_name = 'dasettings/absencereason_add.html' - + template_name = 'dasettings/absencereason_add.html' + def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({'active_link' : 'dasettings'}) return context - - def form_valid(self, form): + + def form_valid(self, form): # Send message to the site messages.success(self.request, f'Abwesenheitskategorie angelegt!') - form.instance.color = form.cleaned_data["rgb_color"] + form.instance.color = form.cleaned_data["rgb_color"] # SAVE OBJECTS TO SIGNALE! form.instance.agency = self.request.user.profile.agency return super().form_valid(form) class AbsenceReasonUpdateView(LoginRequiredMixin, UpdateView): - model = AbsenceReason + model = AbsenceReason template_name = 'dasettings/absencereason_update.html' - success_url = reverse_lazy('dasettings') + success_url = reverse_lazy('dasettings') form_class = AbsenceReasonForm - - def form_valid(self, form): - # Send message to the site + + def form_valid(self, form): + # Send message to the site messages.success(self.request, f'Abwesenheitskategorie aktualisiert!') - self.object.color = form.cleaned_data["rgb_color"] - self.object.save() + self.object.color = form.cleaned_data["rgb_color"] + self.object.save() return super().form_valid(form) def get_context_data(self, **kwargs): - context = super(AbsenceReasonUpdateView, self).get_context_data(**kwargs) + context = super(AbsenceReasonUpdateView, self).get_context_data(**kwargs) context['active_link'] = 'dasettings' return context @@ -389,7 +389,7 @@ def SettingsAgencyModuls(request, context): if agencymoduleform.is_valid(): agencymoduleform.save() - + # Check, if Timemanagement is deactivate, to deactivate Zeiterfassung if(request.user.profile.agency.module_timemanagement == False): ag = request.user.profile.agency @@ -404,7 +404,7 @@ def SettingsAgencyModuls(request, context): if(request.user.profile.agency.module_timemanagement and len(temp_freedays) == 0): messages.success(request, f'Moduleinstellungen aktualisiert! Bitte prüfen Sie Ihre Feiertagseinstellungen') - return redirect('tm-initload', 1) + return redirect('tm-initload', 1) else: context['modulform'] = AgencyModulsForm(instance=request.user.profile.agency) messages.success(request, f'Moduleinstellungen aktualisiert!') @@ -429,22 +429,22 @@ def SettingsProfilManagement(request, context): if request.POST.get("form_type") == "userform": userform = UsersSelfChangeForm(request.POST, instance=request.user) if userform.is_valid(): - usert = User.objects.get(pk=request.user.pk) - userform.save() - usert.username = userform.cleaned_data.get("email") - usert.email = userform.cleaned_data.get("email") + usert = User.objects.get(pk=request.user.pk) + userform.save() + usert.username = userform.cleaned_data.get("email") + usert.email = userform.cleaned_data.get("email") usert.save() messages.success(request, f'E-Mailadresse aktualisiert!') passwordform = PasswordChangeForm(request.user) - context['userform'] = userform + context['userform'] = userform context['passwordform'] = passwordform return render(request, 'dasettings/settings.html', context) else: - messages.success(request, f'Keine E-Mailadresse eingegeben oder E-Mail bereits vorhanden!') + messages.success(request, f'Keine E-Mailadresse eingegeben oder E-Mail bereits vorhanden!') passwordform = PasswordChangeForm(request.user) userform = UsersSelfChangeForm(instance=request.user) - context['userform'] = userform - context['passwordform'] = passwordform + context['userform'] = userform + context['passwordform'] = passwordform return render(request, 'dasettings/settings.html', context) # PASSWORDFORM elif request.POST.get("form_type") == "passwordform": @@ -453,16 +453,16 @@ def SettingsProfilManagement(request, context): passwordform.save() update_session_auth_hash(request, request.user) userform = UsersSelfChangeForm(instance=request.user) - context['userform'] = userform + context['userform'] = userform context['passwordform'] = passwordform - messages.success(request, f'Passwort aktualisiert!') + messages.success(request, f'Passwort aktualisiert!') return render(request, 'dasettings/settings.html', context) else: - messages.success(request, f'Passwort falsch eingegeben!') + messages.success(request, f'Passwort falsch eingegeben!') passwordform = PasswordChangeForm(request.user) userform = UsersSelfChangeForm(instance=request.user) - context['userform'] = userform - context['passwordform'] = passwordform + context['userform'] = userform + context['passwordform'] = passwordform return render(request, 'dasettings/settings.html', context) @login_required @@ -473,28 +473,28 @@ def SettingsAjaxRouter(request): ''' if request.method == 'GET' and request.GET['action'] == "update_notifications" : success = False - new_stat = request.GET['new_stat'] - field_to_change = getattr(request.user.profile, request.GET['fieldname']) - if(field_to_change or not field_to_change): - if(new_stat == "1"): + new_stat = request.GET['new_stat'] + field_to_change = getattr(request.user.profile, request.GET['fieldname']) + if(field_to_change or not field_to_change): + if(new_stat == "1"): setattr(request.user.profile, request.GET['fieldname'], True) else: - setattr(request.user.profile, request.GET['fieldname'], False) - request.user.profile.save() + setattr(request.user.profile, request.GET['fieldname'], False) + request.user.profile.save() success = True ''' if request.method == 'GET' and request.GET['action'] == "update_notifications" : success = False - new_stat = request.GET['new_stat'] - field_to_change = getattr(request.user.usernotifications, request.GET['fieldname']) - if(field_to_change or not field_to_change): - if(new_stat == "1"): + new_stat = request.GET['new_stat'] + field_to_change = getattr(request.user.usernotifications, request.GET['fieldname']) + if(field_to_change or not field_to_change): + if(new_stat == "1"): setattr(request.user.usernotifications, request.GET['fieldname'], True) else: - setattr(request.user.usernotifications, request.GET['fieldname'], False) - request.user.usernotifications.save() + setattr(request.user.usernotifications, request.GET['fieldname'], False) + request.user.usernotifications.save() success = True - # UPDATE TOOLTUP + # UPDATE TOOLTUP elif request.method == 'GET' and request.GET['action'] == "change_showtooltips" : newtooltipvalue = False user = User.objects.get(pk=request.user.pk, profile__agency=request.user.profile.agency) @@ -512,22 +512,22 @@ def SettingsAjaxRouter(request): job_value = request.GET['newvalue'] tempjob = AgencyJob.objects.get(pk=job_id, agency=request.user.profile.agency) tempjob.name = job_value - tempjob.save() + tempjob.save() success = True # DELETE AGENVY JOB FUNC - RETURN ONLY NAME FOR CONFIRM elif request.method == 'GET' and request.GET['action'] == "get_agencyfunc" : job_id = request.GET['id'] - tempjob = AgencyJob.objects.get(pk=job_id, agency=request.user.profile.agency) + tempjob = AgencyJob.objects.get(pk=job_id, agency=request.user.profile.agency) data = {"funcname" : tempjob.name} success = True # DELETE FINAL AGECY JOB elif request.method == 'GET' and request.GET['action'] == "delete_agencyfunc" : job_id = request.GET['id'] - tempjob = AgencyJob.objects.get(pk=job_id, agency=request.user.profile.agency) + tempjob = AgencyJob.objects.get(pk=job_id, agency=request.user.profile.agency) tempjob.delete() success = True - elif request.method == 'GET' and request.GET['action'] == "add_agencyfunc" : - tempjob = AgencyJob(name="", agency=request.user.profile.agency) + elif request.method == 'GET' and request.GET['action'] == "add_agencyfunc" : + tempjob = AgencyJob(name="", agency=request.user.profile.agency) tempjob.save() data = {"new_id" : tempjob.pk} success = True @@ -546,7 +546,7 @@ def SettingsAjaxRouter(request): group = AgencyGroup.objects.get(pk=request.GET['id'], agency=request.user.profile.agency) data = {"groupname" : group.agencygroupname} success = True - elif request.method == 'GET' and request.GET['action'] == "add_group" : + elif request.method == 'GET' and request.GET['action'] == "add_group" : if(checkForGroupName(request, request.GET['newvalue'])): tempgroup = Group(name=str(request.user.profile.agency.pk) + "_" + randomString(8)) tempgroup.save() @@ -561,8 +561,8 @@ def SettingsAjaxRouter(request): group_to_del = groupag.group group_to_del.delete() success = True - # PERMISSIONS ON GROUP! - elif request.method == 'GET' and request.GET['action'] == "change_perm_group" : + # PERMISSIONS ON GROUP! + elif request.method == 'GET' and request.GET['action'] == "change_perm_group" : success = True group_id = request.GET['id'] perm_name = request.GET['perm'] @@ -571,57 +571,57 @@ def SettingsAjaxRouter(request): # CHECK IF REQUESTED USER IS IN THIS AGENCY if(request.user.profile.agency.pk == aggroup.agency.pk): if(val == "true"): - tempperm = Permission.objects.get(codename=perm_name) - aggroup.group.permissions.add(tempperm) - else: - tempperm = Permission.objects.get(codename=perm_name) + tempperm = Permission.objects.get(codename=perm_name) + aggroup.group.permissions.add(tempperm) + else: + tempperm = Permission.objects.get(codename=perm_name) aggroup.group.permissions.remove(tempperm) else: - success = False + success = False # REMOVE USER FROM GROUP - elif request.method == 'GET' and request.GET['action'] == "remove_user_from_group" : + elif request.method == 'GET' and request.GET['action'] == "remove_user_from_group" : success = True groupid = request.GET['groupid'] userid = request.GET['userid'] aggroup = AgencyGroup.objects.get(pk=groupid, agency=request.user.profile.agency) usertoremove = User.objects.get(pk=userid, profile__agency=request.user.profile.agency) - # CHECK IF REQUESTED USER IS IN THIS AGENCY + # CHECK IF REQUESTED USER IS IN THIS AGENCY if(request.user.profile.agency.pk == aggroup.agency.pk): if aggroup.group in usertoremove.groups.all(): - aggroup.group.user_set.remove(usertoremove) - + aggroup.group.user_set.remove(usertoremove) + data = {"userid" : usertoremove.pk, "groupid" : aggroup.pk, "user_fname" : usertoremove.first_name, "user_lname" : usertoremove.last_name} else: - success = False + success = False # ADD USER TO GROUP - elif request.method == 'GET' and request.GET['action'] == "add_user_to_group" : + elif request.method == 'GET' and request.GET['action'] == "add_user_to_group" : success = True groupid = request.GET['groupid'] userid = request.GET['userid'] aggroup = AgencyGroup.objects.get(pk=groupid, agency=request.user.profile.agency) - usertoadd = User.objects.get(pk=userid, profile__agency=request.user.profile.agency) + usertoadd = User.objects.get(pk=userid, profile__agency=request.user.profile.agency) # CHECK IF REQUESTED USER IS IN THIS AGENCY if(request.user.profile.agency.pk == aggroup.agency.pk): - aggroup.group.user_set.add(usertoadd) + aggroup.group.user_set.add(usertoadd) data = {"userid" : usertoadd.pk, "groupid" : aggroup.pk, "user_fname" : usertoadd.first_name, "user_lname" : usertoadd.last_name} else: - success = False + success = False # AREA # AREANAMEN HOLEN elif request.method == 'GET' and request.GET['action'] == "get_areaname" : area = Areas.objects.get(pk=request.GET['id'], agency=request.user.profile.agency) data = {"areaname" : area.name, "areacolor" : area.color} - success = True + success = True # ARENAMEN UPDATE elif request.method == 'GET' and request.GET['action'] == "update_areaname" : area = Areas.objects.get(pk=request.GET['id'], agency=request.user.profile.agency) area.name = request.GET['newvalue'] - area.color = request.GET['color'] + area.color = request.GET['color'] area.save() data = {"newvalue" : area.name, "color" : area.color} - success = True + success = True # ADD AREA - elif request.method == 'GET' and request.GET['action'] == "add_area" : + elif request.method == 'GET' and request.GET['action'] == "add_area" : area = Areas(created_area_by=request.user, agency=request.user.profile.agency, name=request.GET["newvalue"], color=request.GET['color']) area.save() success = True @@ -638,13 +638,13 @@ def SettingsAjaxRouter(request): s.save() tasks = Tasks.objects.filter(agency=request.user.profile.agency, area=todelarea).delete() - todelarea.delete() - success = True + todelarea.delete() + success = True else: - success = False + success = False # ADD TASK - elif request.method == 'GET' and request.GET['action'] == "add_task" : + elif request.method == 'GET' and request.GET['action'] == "add_task" : task = Tasks(created_area_by=request.user, area=Areas.objects.get(pk=request.GET['areaid']), agency=request.user.profile.agency, name=request.GET["newvalue"]) task.save() taskcreator_fullname = task.created_area_by.first_name + " " + task.created_area_by.last_name @@ -653,7 +653,7 @@ def SettingsAjaxRouter(request): # TASKNAME VISIBLE UND USERS HOLEN elif request.method == 'GET' and request.GET['action'] == "get_taskname" : task = Tasks.objects.get(pk=request.GET['id'], agency=request.user.profile.agency) - # User still in Area + # User still in Area # Get all Users from same Agency which are NOT in context_added_users added_users = task.usersfield.all() addus = {} @@ -671,10 +671,10 @@ def SettingsAjaxRouter(request): posus.update({ k : {"fullname" : us.first_name + " " + us.last_name, "userid" : us.pk}}) k += 1 data = {"taskname" : task.name, "visible" : task.visible, "added_users" : addus, "addedl" : i, "possl" : k, "possible_users" : posus, "taskarea" : task.area.pk} - success = True + success = True # REMOVE Task - elif request.method == 'GET' and request.GET['action'] == "remove_task" : - + elif request.method == 'GET' and request.GET['action'] == "remove_task" : + todeltask = Tasks.objects.get(pk=request.GET['id'], agency=request.user.profile.agency) # REMOVE STANDARDS AREA tempstandards = Standards.objects.filter(agency=request.user.profile.agency, task=todeltask) @@ -683,24 +683,24 @@ def SettingsAjaxRouter(request): s.task = None s.public = False s.save() - todeltask.delete() - success = True + todeltask.delete() + success = True else: - success = False + success = False #success = True # UPDATE TASK VISIBLE - elif request.method == 'GET' and request.GET['action'] == "update_visible_taskname" : + elif request.method == 'GET' and request.GET['action'] == "update_visible_taskname" : task = Tasks.objects.get(pk=request.GET['id'], agency=request.user.profile.agency) if(task.visible): task.visible = False; else: task.visible = True; task.save() - success = True + success = True # UPDATE TASKNAME - elif request.method == 'GET' and request.GET['action'] == "change_taskname" : + elif request.method == 'GET' and request.GET['action'] == "change_taskname" : task = Tasks.objects.get(pk=request.GET['id']) - task.name = request.GET["newvalue"] + task.name = request.GET["newvalue"] data = {"newvalue" : task.name} newareaid = request.GET["newareaid"] standardsmoved = False @@ -713,12 +713,12 @@ def SettingsAjaxRouter(request): data = {"newvalue" : task.name, "smoved" : standardsmoved} success = True # UPDATE USER MAIL - elif request.method == 'GET' and request.GET['action'] == "update_usermail" : + elif request.method == 'GET' and request.GET['action'] == "update_usermail" : tempuser = User.objects.get(pk=request.GET['userid']) if(request.user.profile.agency == tempuser.profile.agency and request.user.has_perm('users.usermanager')): tempmail = tempuser.email regex = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$' - if(re.search(regex,request.GET['newmail'])): + if(re.search(regex,request.GET['newmail'])): newmail = request.GET['newmail'] usertest = User.objects.filter(email=newmail) if(len(usertest) > 0): @@ -735,11 +735,11 @@ def SettingsAjaxRouter(request): else: success = False # UPDATE USERNAME - elif request.method == 'GET' and request.GET['action'] == "update_usernames" : + elif request.method == 'GET' and request.GET['action'] == "update_usernames" : tempuser = User.objects.get(pk=request.GET['userid']) if(request.user.profile.agency == tempuser.profile.agency and request.user.has_perm('users.usermanager')): regex = '^[a-zA-Z0-9_.-üöäÜÖÄ ]+$' - if(re.search(regex,request.GET['new_first_name']) and re.search(regex,request.GET['new_last_name'])): + if(re.search(regex,request.GET['new_first_name']) and re.search(regex,request.GET['new_last_name'])): tempuser.first_name = request.GET['new_first_name'] tempuser.last_name = request.GET['new_last_name'] tempuser.save() @@ -752,29 +752,29 @@ def SettingsAjaxRouter(request): data = {"userfullname" : tempuser.first_name + " " + tempuser.last_name} success = False # UPDATE FREEDAYS - elif request.method == 'GET' and request.GET['action'] == "initloadfreedays" : + elif request.method == 'GET' and request.GET['action'] == "initloadfreedays" : if(request.user.has_perm('users.modulesconfig')): temp_freedays = FreeDays.objects.filter(agency=request.user.profile.agency) - if(len(temp_freedays) == 0): - tempdays_thisyear = loadingFreeDays(request.user.profile.agency.plz, date.today().year) - tempdays_lastyear = loadingFreeDays(request.user.profile.agency.plz, date.today().year - 1) - tempdays_nextyear = loadingFreeDays(request.user.profile.agency.plz, date.today().year + 1) - + if(len(temp_freedays) == 0): + tempdays_thisyear = loadingFreeDays(request.user.profile.agency.plz, date.today().year) + tempdays_lastyear = loadingFreeDays(request.user.profile.agency.plz, date.today().year - 1) + tempdays_nextyear = loadingFreeDays(request.user.profile.agency.plz, date.today().year + 1) + if(tempdays_thisyear != False): - for k in tempdays_lastyear.keys(): + for k in tempdays_lastyear.keys(): tempdate = tempdays_lastyear[k]["datum"].split("-") FreeDays(agency=request.user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=date.today().year-1).save() - for k in tempdays_thisyear.keys(): + for k in tempdays_thisyear.keys(): tempdate = tempdays_thisyear[k]["datum"].split("-") FreeDays(agency=request.user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=date.today().year).save() - - for k in tempdays_nextyear.keys(): + + for k in tempdays_nextyear.keys(): tempdate = tempdays_nextyear[k]["datum"].split("-") FreeDays(agency=request.user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=date.today().year+1).save() - messages.success(request, f'Feiertage erfolgreich gespeichert!') + messages.success(request, f'Feiertage erfolgreich gespeichert!') success = True else: success = False @@ -783,45 +783,45 @@ def SettingsAjaxRouter(request): success = False # LOAD MULTIPLE FREEDAYS - elif request.method == 'GET' and request.GET['action'] == "initloadfreedaysmulti" : + elif request.method == 'GET' and request.GET['action'] == "initloadfreedaysmulti" : if(request.user.has_perm('users.modulesconfig')): - + #tempdays_year = False if(request.GET["land"] == "true"): tempdays_year = loadingFreeDaysMulti(request.user.profile.agency.plz, request.GET["year"], True) - - + + if(tempdays_year != False): for k in tempdays_year.keys(): tempdate = tempdays_year[k].split("-") FreeDays(agency=request.user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=int(request.GET["year"])).save() - - messages.success(request, f'Feiertage erfolgreich gespeichert!') + + messages.success(request, f'Feiertage erfolgreich gespeichert!') success = True else: success = False else: tempdays_year = loadingFreeDaysMulti(request.user.profile.agency.plz, request.GET["year"], False) - + if(tempdays_year != False): - for k in tempdays_year.keys(): + for k in tempdays_year.keys(): tempdate = tempdays_year[k]["datum"].split("-") FreeDays(agency=request.user.profile.agency, name=k, day=datetime.datetime(int(tempdate[0]),int(tempdate[1]),int(tempdate[2])), year=int(request.GET["year"])).save() - - messages.success(request, f'Feiertage erfolgreich gespeichert!') + + messages.success(request, f'Feiertage erfolgreich gespeichert!') success = True else: - success = False + success = False else: data = {"userfullname" : tempuser.first_name + " " + tempuser.last_name} success = False # DELETE ALL FREE DAYS - elif request.method == 'GET' and request.GET['action'] == "delallfreedays" : + elif request.method == 'GET' and request.GET['action'] == "delallfreedays" : if(request.user.has_perm('users.modulesconfig')): - FreeDays.objects.filter(agency=request.user.profile.agency).delete() - messages.success(request, f'Feiertage erfolgreich entfernt!') + FreeDays.objects.filter(agency=request.user.profile.agency).delete() + messages.success(request, f'Feiertage erfolgreich entfernt!') success = True else: data = {"userfullname" : tempuser.first_name + " " + tempuser.last_name} @@ -829,13 +829,13 @@ def SettingsAjaxRouter(request): #return render(request, 'dasettings/change_absence_yeardata.html', context) # HOLIDAYS UPDATE - elif request.method == 'GET' and request.GET['action'] == "update_holidays" : + elif request.method == 'GET' and request.GET['action'] == "update_holidays" : context = { "user_years" : UserYearAbsenceInfo.objects.filter(user=User.objects.get(pk=request.GET["userid"])), - } - return render(request, 'dasettings/change_absence_yeardata.html', context) + } + return render(request, 'dasettings/change_absence_yeardata.html', context) # UPDATE HOLIDAYS SAVE - elif request.method == 'GET' and request.GET['action'] == "update_holidays_save" : + elif request.method == 'GET' and request.GET['action'] == "update_holidays_save" : # GET ELEMENTS newHolidayData = request.GET["new_data_info"].split("___") # EVERY ELEMENT GET ID AND SAVE NEW DAY-INFO @@ -850,38 +850,38 @@ def SettingsAjaxRouter(request): temp_year.days = ele_elements[1] elif(ele_type == "rest"): temp_year.restdays = ele_elements[1] - temp_year.save() + temp_year.save() context = { "user_years" : UserYearAbsenceInfo.objects.filter(user=User.objects.get(pk=request.GET["userid"])), - } + } return render(request, 'dasettings/data_absence_yeardata.html', context) else: success = False - return JsonResponse({"success" : success, "data" : data}) + return JsonResponse({"success" : success, "data" : data}) 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=';') + with open(file_path, 'rt') as csvfile: + filecsv = csv.reader(csvfile, delimiter=';') for row in filecsv: if str(row[1]) == str(plz): land = row[6] break; - + if(land != False): 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 @@ -890,27 +890,27 @@ def loadingFreeDays(plz, year): def loadingFreeDaysMulti(plz, year, onlyland): # Getting land file_path = os.path.join(settings.STATIC_ROOT, 'users/extra/plz_short.csv') - + if(onlyland == False): land = False - with open(file_path, 'rt') as csvfile: - filecsv = csv.reader(csvfile, delimiter=';') + with open(file_path, 'rt') as csvfile: + filecsv = csv.reader(csvfile, delimiter=';') for row in filecsv: if str(row[1]) == str(plz): land = row[6] break; - + 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() elif(onlyland == True): URL = "https://feiertage-api.de/api/" PARAMS = {'jahr':year,'nur_daten':1} - r = requests.get(url = URL, params = PARAMS) + r = requests.get(url = URL, params = PARAMS) return r.json() else: return False @@ -923,36 +923,36 @@ def loadingFreeDaysMulti(plz, year, onlyland): ''' @login_required -def UserProfileUpdate(request, pk, newuser=0): +def UserProfileUpdate(request, pk, newuser=0): usertochange = User.objects.get(pk=pk) user_fullname = usertochange.first_name + " " + usertochange.last_name - parentuser = "" + parentuser = "" if(usertochange.profile.parent != None): parentuser = usertochange.profile.parent.pk if request.method == 'POST': - if 'image' in request.FILES: - usertochange.profile.image = request.FILES['image'] + if 'image' in request.FILES: + usertochange.profile.image = request.FILES['image'] formtosave = False - + if(request.POST["form_type"] == "profileform"): - formtosave = UserProfileForm(request.POST, instance=usertochange.profile) - - if formtosave.is_valid(): + formtosave = UserProfileForm(request.POST, instance=usertochange.profile) + + if formtosave.is_valid(): try: usertochange.profile.parent = User.objects.get(pk=request.POST['usertoparent'], profile__agency=request.user.profile.agency) - usertochange.save() + usertochange.save() except Exception as e: usertochange.profile.parent = None - usertochange.save() - + usertochange.save() + formtosave.save() messages.success(request, f'Profil gespeichert!') return redirect('dasettings') else: messages.success(request, f'Fehlerhafte Eingabe!') - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'first_name' : usertochange.first_name, @@ -972,10 +972,10 @@ def UserProfileUpdate(request, pk, newuser=0): formtosave = UserTimeForm(request.POST, instance=UserTime.objects.get(user=usertochange)) if(formtosave.is_valid()): - # CHECK IF HOLIDAYS_LOOSE IS CORRECT - if(not re.match(r"^([1-9]{1}|0[0-9]{1}|1[0-9]{1}|2[0-9]{1}|3[0-1]{1}).([1-9]{1}|0[0-9]{1}|1[0-2]{1}).$", formtosave.cleaned_data["loose_holidedate"])): + # CHECK IF HOLIDAYS_LOOSE IS CORRECT + if(not re.match(r"^([1-9]{1}|0[0-9]{1}|1[0-9]{1}|2[0-9]{1}|3[0-1]{1}).([1-9]{1}|0[0-9]{1}|1[0-2]{1}).$", formtosave.cleaned_data["loose_holidedate"])): messages.success(request, f'Fehlerhafte Eingabe! Das Verfallsdatum der Urlaubstage ist ungültig oder das Format wurde nicht beachtet (TAG.MONAT.).') - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'first_name' : usertochange.first_name, @@ -1001,7 +1001,7 @@ def UserProfileUpdate(request, pk, newuser=0): return redirect('dasettings') except: messages.success(request, f'Fehlerhafte Eingabe! Das Verfallsdatum der Urlaubstage ist ungültig!') - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'first_name' : usertochange.first_name, @@ -1019,7 +1019,7 @@ def UserProfileUpdate(request, pk, newuser=0): return render(request, 'dasettings/user_usprof.html', context) else: messages.success(request, f'Fehlerhafte Eingabe! Das Verfallsdatum muss im Format TAG.MONAT. sein und existieren!') - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'first_name' : usertochange.first_name, @@ -1035,8 +1035,8 @@ def UserProfileUpdate(request, pk, newuser=0): 'usertoparent' : User.objects.filter(profile__agency__pk=usertochange.profile.agency.pk, profile__visible=True) } return render(request, 'dasettings/user_usprof.html', context) - - else: + + else: usertime = "" try: usertime = UserTimeForm(instance=UserTime.objects.get(user=usertochange)) @@ -1046,11 +1046,11 @@ def UserProfileUpdate(request, pk, newuser=0): usertime = UserTimeForm(instance=UserTime.objects.get(user=usertochange)) - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'usertime_form' : UserTimeForm(instance=UserTime.objects.get(user=usertochange)), - 'user_years' : UserYearAbsenceInfo.objects.filter(user=usertochange), + 'user_years' : UserYearAbsenceInfo.objects.filter(user=usertochange), 'first_name' : usertochange.first_name, 'last_name' : usertochange.last_name, 'newuser' : newuser, @@ -1070,7 +1070,7 @@ def UserChangeMain(request, pk): usertochange = User.objects.get(pk=pk, profile__agency=request.user.profile.agency) user_fullname = usertochange.first_name + " " + usertochange.last_name if request.method == 'POST': - formtosave = UserNewUserForm(request.POST, instance=usertochange) + formtosave = UserNewUserForm(request.POST, instance=usertochange) if formtosave.is_valid(): formtosave.save() formtosave.save() @@ -1078,14 +1078,14 @@ def UserChangeMain(request, pk): return redirect('dasettings') else: messages.success(request, f'Fehlerhafte Eingabe! Mailadresse bereits vorhanden!') - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'userform' : UserNewUserForm(request.POST, instance=usertochange), } return render(request, 'dasettings/user_changemaindata.html', context) else: - context = { + context = { 'active_link' : 'dasettings', 'user_fullname' : user_fullname, 'userform' : UserNewUserForm(instance=usertochange), @@ -1095,52 +1095,54 @@ def UserChangeMain(request, pk): # Method for first User-Creation-Step @login_required def NewUserFirstStep(request): + context = { + 'active_link' : 'dasettings' + } + if request.method == 'POST': + newuserform = UserNewUserForm(request.POST) + if newuserform.is_valid(): + if(request.POST.get("sendmailnewuser")): + msg_html = render_to_string('users/register_mail.html', {'username': newuserform.cleaned_data.get('first_name') + " " + newuserform.cleaned_data.get('last_name')}) + send_mail(request.user.profile.agency.name + ' Account', 'Hallo ' + newuserform.cleaned_data.get('first_name') + ' ' + newuserform.cleaned_data.get('last_name') + '! Bitte setzen sie sich auf https://digitale-agentur.com/password-reset/ ein Passwort.','noreply@digitale-agentur.com',[newuserform.cleaned_data.get('email')],html_message=msg_html,fail_silently=True) + newuser = newuserform.save(commit=False) + newuser.username = newuser.email + newprofile = Profile(agency=request.user.profile.agency, parent=None) + newprofile.save() + newuser.profile = newprofile + newuser.save() - context = { - 'active_link' : 'dasettings' - } + # USERTIME + user_time = UserTime(user=newuser) + user_time.save() + # USER NOTIFICATIONS + user_notifications = UserNotifications(user=newuser) + user_notifications.save() - if request.method == 'POST': - newuserform = UserNewUserForm(request.POST) - if newuserform.is_valid(): - if(request.POST.get("sendmailnewuser")): - msg_html = render_to_string('users/register_mail.html', {'username': newuserform.cleaned_data.get('first_name') + " " + newuserform.cleaned_data.get('last_name')}) - send_mail( - request.user.profile.agency.name + ' Account', - 'Hallo ' + newuserform.cleaned_data.get('first_name') + ' ' + newuserform.cleaned_data.get('last_name') + '! Bitte setzen sie sich auf https://digitale-agentur.com/password-reset/ ein Passwort.', - 'noreply@digitale-agentur.com', - [newuserform.cleaned_data.get('email')], - html_message=msg_html, - fail_silently=True, - ) - newuser = newuserform.save(commit=False) - newuser.username = newuser.email - newprofile = Profile(agency=request.user.profile.agency, parent=None) - newprofile.save() - newuser.profile = newprofile - newuser.save() - newuser_id = newuser.id - messages.success(request, f'Benutzer angelegt!') - today = date.today() - UserYearAbsenceInfo(agency=request.user.profile.agency, user=newuser, year=today.year).save() - UserYearAbsenceInfo(agency=request.user.profile.agency, user=newuser, year=today.year+1).save() - UserYearAbsenceInfo(agency=request.user.profile.agency, user=newuser, year=today.year+2).save() + newuser.usernotifications = user_notifications + newuser.usertime = user_time - getadmingroup = AgencyGroup.objects.filter(savefordel=True, is_admin=False, agency=request.user.profile.agency) - for g in getadmingroup: - g.group.user_set.add(newuser) - return redirect('/dasettings/usprof/'+str(newuser_id)+'/1') - else: - messages.success(request, f'Daten falsch eingegeben!') - context['newuserform'] = UserNewUserForm(request.POST) - return render(request, 'dasettings/user_newuser_step1.html', context) - - # Returning the data from database for normal-loading Settings - else: - newuserform = UserNewUserForm() - context.update({'newuserform' : newuserform}) - - return render(request, 'dasettings/user_newuser_step1.html', context) + + newuser_id = newuser.id + messages.success(request, f'Benutzer angelegt!') + today = date.today() + UserYearAbsenceInfo(agency=request.user.profile.agency, user=newuser, year=today.year).save() + UserYearAbsenceInfo(agency=request.user.profile.agency, user=newuser, year=today.year+1).save() + UserYearAbsenceInfo(agency=request.user.profile.agency, user=newuser, year=today.year+2).save() + + getadmingroup = AgencyGroup.objects.filter(savefordel=True, is_admin=False, agency=request.user.profile.agency) + for g in getadmingroup: + g.group.user_set.add(newuser) + return redirect('/dasettings/usprof/'+str(newuser_id)+'/1') + else: + messages.success(request, f'Daten falsch eingegeben!') + context['newuserform'] = UserNewUserForm(request.POST) + return render(request, 'dasettings/user_newuser_step1.html', context) + + # Returning the data from database for normal-loading Settings + else: + newuserform = UserNewUserForm() + context.update({'newuserform' : newuserform}) + return render(request, 'dasettings/user_newuser_step1.html', context) # NEUER AGENTURVERBUND @@ -1152,10 +1154,10 @@ def AddAgencyNetwork(request): newagn_object = AgencyNetwork(name=newagn.cleaned_data.get("name"), publicjoin=newagn.cleaned_data.get("publicjoin"), creator=request.user, creator_agency=request.user.profile.agency, networkid=randomString(20)) newagn_object.save() newagn_object.adminagencys.add(request.user.profile.agency) - messages.success(request, f'Agenturverbund ' + newagn_object.name + ' angelegt!') + messages.success(request, f'Agenturverbund ' + newagn_object.name + ' angelegt!') return redirect('dasettings') else: - context = { + context = { 'active_link' : 'dasettings', 'form' : AgencyNetworkForm(), } @@ -1171,10 +1173,10 @@ def UpdateAgencyNetwork(request, pk): agn.publicjoin= formdata.cleaned_data.get("publicjoin") agn.save() #newagn_object.adminagencys.add(request.user.profile.agency) - messages.success(request, f'Agenturverbund ' + agn.name + ' aktualisiert!') + messages.success(request, f'Agenturverbund ' + agn.name + ' aktualisiert!') return redirect('dasettings') else: - context = { + context = { 'active_link' : 'dasettings', 'form' : AgencyNetworkForm(instance=AgencyNetwork.objects.get(pk=pk)), } @@ -1183,16 +1185,16 @@ def UpdateAgencyNetwork(request, pk): @login_required def DelAgencyNetwork(request, pk): agn = AgencyNetwork.objects.get(pk=pk) - if request.method == 'POST': + if request.method == 'POST': if request.user.profile.agency in agn.adminagencys.all(): agn.delete() - messages.success(request, f'Agenturverbund erfolgreich gelöscht!') + messages.success(request, f'Agenturverbund erfolgreich gelöscht!') return redirect('dasettings') else: - messages.success(request, f'Sie dürfen diesen Agenturverbund nicht löschen!') + messages.success(request, f'Sie dürfen diesen Agenturverbund nicht löschen!') return redirect('dasettings') else: - context = { + context = { 'active_link' : 'dasettings', 'agn' : agn } @@ -1203,10 +1205,10 @@ def AddMyAgencyToAgn(request, networkid): agn = AgencyNetwork.objects.filter(networkid=networkid) if len(agn) == 0: - messages.info(request, f'Agenturverbund nicht gefunden!') - return redirect('dasettings') + messages.info(request, f'Agenturverbund nicht gefunden!') + return redirect('dasettings') else: - context = { + context = { 'active_link' : 'dasettings', 'agn' : list(agn)[0] } @@ -1236,13 +1238,13 @@ def JoinAGN(request, pk): if IsAgencyInAgNetwork(request.user.profile.agency.pk, pk): messages.success(request, f'Ihre Agentur ist bereits in diesem Verbund!') else: - agn = AgencyNetwork.objects.get(pk=pk) + agn = AgencyNetwork.objects.get(pk=pk) if(agn.publicjoin): messages.success(request, f'Verbund erfolgreich beigetreten!') agn.members.add(request.user.profile.agency) # Benachrichtigung senden, dass eine neue Agentur dem Verbund beitreten will. DIe Info geht an alle administrativen Agenturen. - for adminagencys in agn.adminagencys.all(): + for adminagencys in agn.adminagencys.all(): usersofagency = Users.objects.filter(profile__agency=adminagencys) for u in usersofagency: @@ -1258,14 +1260,14 @@ def JoinAGN(request, pk): channel_layer = channels.layers.get_channel_layer() async_to_sync(channel_layer.group_send)("user_" + str(u.pk), {'type' : 'pushhandler', 'pushtext' : "pushnotification__Agenturverbund | Eine neue Agentur ist dem Verbund " + agn.name + " beigetreten."}) else: - - # STATUS + + # STATUS # 1 WANTED AG ASKED TO TARGET NETWORK agnp = AgencyNetworkPreperation(target_network=AgencyNetwork.objects.get(pk=pk), wanted_agency=request.user.profile.agency, status=1) agnp.save() # Benachrichtigung senden, dass eine neue Agentur dem Verbund beitreten will. DIe Info geht an alle administrativen Agenturen. - for adminagencys in agn.adminagencys.all(): + for adminagencys in agn.adminagencys.all(): usersofagency = Users.objects.filter(profile__agency=adminagencys) for u in usersofagency: @@ -1291,23 +1293,23 @@ def ManageAgInAgn(request, pk): agn = AgencyNetwork.objects.filter(pk=pk) if len(agn) == 0: - messages.info(request, f'Agenturverband nicht gefunden!') - return redirect('dasettings') + messages.info(request, f'Agenturverband nicht gefunden!') + return redirect('dasettings') else: network = list(agn)[0] - + allagofagn = [] for a in network.members.all(): allagofagn.append(a) for a in network.sharemembers.all(): allagofagn.append(a) - + for a in network.adminagencys.all(): - allagofagn.append(a) - - context = { + allagofagn.append(a) + + context = { 'active_link' : 'dasettings', 'agn' : list(agn)[0], 'outstanding': AgencyNetworkPreperation.objects.filter(target_network=list(agn)[0]) , @@ -1319,22 +1321,22 @@ def ManageAgInAgn(request, pk): def AddAgToNetwork(request, network, targetag, aginvpk): if IsAgencyInAgNetwork(Agency.objects.get(pk=targetag).pk, network): - messages.info(request, f'Sie sind bereits im Agenturverbund!') + messages.info(request, f'Sie sind bereits im Agenturverbund!') return redirect('dasettings') else: - messages.info(request, f'Einladung angenommen!') + messages.info(request, f'Einladung angenommen!') agn = AgencyNetwork.objects.get(pk=network) agn.members.add(Agency.objects.get(pk=targetag)) AgencyNetworkPreperation.objects.get(pk=aginvpk).delete() - return redirect('managagn', network) + return redirect('managagn', network) @login_required def DelAgInv(request, pk): AgencyNetworkPreperation.objects.get(pk=pk).delete() - messages.info(request, f'Einladung abgelehnt!') + messages.info(request, f'Einladung abgelehnt!') return redirect('dasettings') @login_required @@ -1355,7 +1357,7 @@ def AgencyNetworkAjaxSettings(request): agencynetwork.sharemembers.remove(agency) success = True - # Benachrichtigung senden, dass eine neue Agentur dem Verbund beitreten will. DIe Info geht an alle administrativen Agenturen. + # Benachrichtigung senden, dass eine neue Agentur dem Verbund beitreten will. DIe Info geht an alle administrativen Agenturen. usersofagency = Users.objects.filter(profile__agency=agency) for u in usersofagency: if u.has_perm('users.agencynetwork') and u.has_perm('users.agencynetwork'): @@ -1374,7 +1376,7 @@ def AgencyNetworkAjaxSettings(request): AgencyNetworkPreperation.objects.get(pk=request.GET['agn_inv']).delete() success = True elif request.method == 'GET' and request.GET['action'] == "changeagrights": - agency = Agency.objects.get(pk=request.GET['agency']) + agency = Agency.objects.get(pk=request.GET['agency']) agn = AgencyNetwork.objects.get(pk=request.GET['agnid']) if(agency != None and agn != None): agn.members.remove(agency) @@ -1406,7 +1408,7 @@ def AgencyNetworkAjaxSettings(request): return JsonResponse(data) @login_required -def ModSettingsOrga(request): +def ModSettingsOrga(request): if request.method == 'GET' and request.user.has_perm("users.modulesconfig"): if(request.GET['dynorga'] == "true"): ag = request.user.profile.agency @@ -1423,7 +1425,7 @@ def ModSettingsOrga(request): @login_required def ModSettingsTm(request): - return JsonResponse({}) + return JsonResponse({}) ''' if request.method == 'GET' and request.user.has_perm("users.modulesconfig"): if(request.GET['aze'] == "true"): diff --git a/digitaleagentur/__pycache__/__init__.cpython-38.pyc b/digitaleagentur/__pycache__/__init__.cpython-38.pyc index 3df1199..8f5ab13 100644 Binary files a/digitaleagentur/__pycache__/__init__.cpython-38.pyc and b/digitaleagentur/__pycache__/__init__.cpython-38.pyc differ diff --git a/digitaleagentur/__pycache__/settings.cpython-38.pyc b/digitaleagentur/__pycache__/settings.cpython-38.pyc index a4c2892..e97313d 100644 Binary files a/digitaleagentur/__pycache__/settings.cpython-38.pyc and b/digitaleagentur/__pycache__/settings.cpython-38.pyc differ diff --git a/digitaleagentur/__pycache__/urls.cpython-38.pyc b/digitaleagentur/__pycache__/urls.cpython-38.pyc index 0e2666d..6646c23 100644 Binary files a/digitaleagentur/__pycache__/urls.cpython-38.pyc and b/digitaleagentur/__pycache__/urls.cpython-38.pyc differ diff --git a/digitaleagentur/__pycache__/views.cpython-38.pyc b/digitaleagentur/__pycache__/views.cpython-38.pyc index 6f1462b..40b283e 100644 Binary files a/digitaleagentur/__pycache__/views.cpython-38.pyc and b/digitaleagentur/__pycache__/views.cpython-38.pyc differ diff --git a/message/__pycache__/__init__.cpython-38.pyc b/message/__pycache__/__init__.cpython-38.pyc index 412fdf6..d3687b2 100644 Binary files a/message/__pycache__/__init__.cpython-38.pyc and b/message/__pycache__/__init__.cpython-38.pyc differ diff --git a/message/migrations/__pycache__/__init__.cpython-38.pyc b/message/migrations/__pycache__/__init__.cpython-38.pyc index daae7aa..d987d49 100644 Binary files a/message/migrations/__pycache__/__init__.cpython-38.pyc and b/message/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/news/__pycache__/__init__.cpython-38.pyc b/news/__pycache__/__init__.cpython-38.pyc index a38a98c..32a487f 100644 Binary files a/news/__pycache__/__init__.cpython-38.pyc and b/news/__pycache__/__init__.cpython-38.pyc differ diff --git a/news/models.py b/news/models.py index 4bf8dd4..4db2990 100644 --- a/news/models.py +++ b/news/models.py @@ -13,22 +13,22 @@ class News(models.Model): name = models.CharField(max_length=200, blank=False, default="") #content = RichTextUploadingField(blank=True, verbose_name='Inhalt') content = models.TextField(blank=True, verbose_name='Inhalt', default="") - + created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True) created_date = models.DateTimeField(default=timezone.now, blank=True) - + go_online_on = models.DateTimeField(default=timezone.now, blank=True) # Default date plus two weeks - go_offline_on = models.DateTimeField(default=timezone.now()+timedelta(days=14), blank=True) + go_offline_on = models.DateTimeField(default=timezone.now()+timedelta(days=14), blank=True, null=True) last_modified_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='news_mod_by', default=None) last_modified_on = models.DateTimeField(default=timezone.now, blank=True) agnotify = models.BooleanField(default=True) - + def __str__(self): return f'{self.name}' # Hier Path für Templates des Models mit Parametern def get_absolute_url(self): - return reverse('news-update', kwargs={'pk':self.pk}) \ No newline at end of file + return reverse('news-update', kwargs={'pk':self.pk}) diff --git a/news/views.py b/news/views.py index 78365d1..40b52e0 100644 --- a/news/views.py +++ b/news/views.py @@ -16,8 +16,8 @@ class NewsManagement(LoginRequiredMixin, ListView): # Adding active_link # Loading only user same agency # Change context and return for template-data - def get_context_data(self, **kwargs): - filterdate = timezone.now() + def get_context_data(self, **kwargs): + filterdate = timezone.now() news = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_online_on__lt=filterdate).filter(go_offline_on__gt=filterdate).order_by('-created_date') news_arch = News.objects.filter(agency__pk=self.request.user.profile.agency.pk).filter(go_offline_on__lt=filterdate).order_by('-created_date') @@ -28,7 +28,7 @@ class NewsManagement(LoginRequiredMixin, ListView): return context ''' class NewsAddNews(LoginRequiredMixin, CreateView): - model = News + model = News fields = ['name', 'content','go_online_on', 'go_offline_on'] success_url = '/dashboard/news/' ''' @@ -37,18 +37,18 @@ def NewsAdd(request): if request.method == 'POST': normalForm = NewsAddNews(request.POST, instance=request.user) #editorForm = NewsAddNewsEditor(request.POST, instance=request.user) - + #if editorForm.is_valid() and normalForm.is_valid(): if normalForm.is_valid(): normalForm.agency = request.user.profile.agency normalForm.created_by = request.user normalForm.last_modified_by = request.user normalForm.save() - #editorForm.save() - new_news = News() + #editorForm.save() + new_news = News() new_news.agency = request.user.profile.agency new_news.created_by = request.user - + new_news.last_modified_by = request.user new_news.created_date = datetime.now() new_news.last_modified_on = datetime.now() @@ -57,15 +57,15 @@ def NewsAdd(request): new_news.content = normalForm.cleaned_data['content'] new_news.go_online_on = normalForm.cleaned_data['go_online_on'] new_news.go_offline_on = normalForm.cleaned_data['go_offline_on'] - + new_news.save() - messages.success(request, f'News gespeichert!') - return redirect('users-dashboard') - + messages.success(request, f'News gespeichert!') + return redirect('users-dashboard') + else: normalForm = NewsAddNews(instance=request.user) #editorForm = NewsAddNewsEditor(instance=request.user) - + context = { 'normalForm' : normalForm, @@ -80,23 +80,23 @@ def NewsUpdate(request, id): if request.method == 'POST': normalForm = NewsAddNews(request.POST, instance=news) #editorForm = NewsAddNewsEditor(request.POST, instance=news) - + if normalForm.is_valid(): - news = News.objects.get(pk=id, agency=request.user.profile.agency) + news = News.objects.get(pk=id, agency=request.user.profile.agency) news.last_modified_by = request.user news.last_modified_on = datetime.now() news.go_online_on = normalForm.cleaned_data['go_online_on'] news.go_offline_on = normalForm.cleaned_data['go_offline_on'] news.name = normalForm.cleaned_data['name'] - news.content = normalForm.cleaned_data['content'] + news.content = normalForm.cleaned_data['content'] news.save() - messages.success(request, f'News aktualisiert!') - return redirect('/news') + messages.success(request, f'News aktualisiert!') + return redirect('/news') else: normalForm = NewsAddNews(instance=news) #editorForm = NewsAddNewsEditor(instance=news) - + context = { 'normalForm' : normalForm, @@ -109,20 +109,20 @@ def NewsUpdate(request, id): class NewsDeleteView(LoginRequiredMixin, DeleteView): model = News success_url = '/news' - template_name = 'news/news_confirm_delete.html' + template_name = 'news/news_confirm_delete.html' def get_context_data(self, **kwargs): - context = super(NewsDeleteView, self).get_context_data(**kwargs) + context = super(NewsDeleteView, self).get_context_data(**kwargs) context['active_link'] = 'newsmanagement' return context - + @login_required def NewsSingle(request, pk): - news = News.objects.get(pk=pk, agency=request.user.profile.agency) + news = News.objects.get(pk=pk, agency=request.user.profile.agency) context = { 'active_link':'dashboard', 'news' : news - } - - return render(request, 'news/news_single.html', context) \ No newline at end of file + } + + return render(request, 'news/news_single.html', context) diff --git a/notificsys/migrations/__pycache__/__init__.cpython-38.pyc b/notificsys/migrations/__pycache__/__init__.cpython-38.pyc index b974de7..794917d 100644 Binary files a/notificsys/migrations/__pycache__/__init__.cpython-38.pyc and b/notificsys/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/orga/__pycache__/__init__.cpython-38.pyc b/orga/__pycache__/__init__.cpython-38.pyc index fd7c630..f88666b 100644 Binary files a/orga/__pycache__/__init__.cpython-38.pyc and b/orga/__pycache__/__init__.cpython-38.pyc differ diff --git a/orga/__pycache__/admin.cpython-38.pyc b/orga/__pycache__/admin.cpython-38.pyc index 32acd7c..e569895 100644 Binary files a/orga/__pycache__/admin.cpython-38.pyc and b/orga/__pycache__/admin.cpython-38.pyc differ diff --git a/orga/__pycache__/apps.cpython-38.pyc b/orga/__pycache__/apps.cpython-38.pyc index 4c17580..0c3f746 100644 Binary files a/orga/__pycache__/apps.cpython-38.pyc and b/orga/__pycache__/apps.cpython-38.pyc differ diff --git a/orga/__pycache__/models.cpython-38.pyc b/orga/__pycache__/models.cpython-38.pyc index e3c3be7..c8a3917 100644 Binary files a/orga/__pycache__/models.cpython-38.pyc and b/orga/__pycache__/models.cpython-38.pyc differ diff --git a/orga/__pycache__/urls.cpython-38.pyc b/orga/__pycache__/urls.cpython-38.pyc index 6d35242..e9b9f8c 100644 Binary files a/orga/__pycache__/urls.cpython-38.pyc and b/orga/__pycache__/urls.cpython-38.pyc differ diff --git a/orga/__pycache__/views.cpython-38.pyc b/orga/__pycache__/views.cpython-38.pyc index 00b6116..ffcbdad 100644 Binary files a/orga/__pycache__/views.cpython-38.pyc and b/orga/__pycache__/views.cpython-38.pyc differ diff --git a/organizer/__pycache__/__init__.cpython-38.pyc b/organizer/__pycache__/__init__.cpython-38.pyc index 91f9100..b17aa84 100644 Binary files a/organizer/__pycache__/__init__.cpython-38.pyc and b/organizer/__pycache__/__init__.cpython-38.pyc differ diff --git a/organizer/migrations/__pycache__/__init__.cpython-38.pyc b/organizer/migrations/__pycache__/__init__.cpython-38.pyc index 6372da3..3803d69 100644 Binary files a/organizer/migrations/__pycache__/__init__.cpython-38.pyc and b/organizer/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/standards/__pycache__/__init__.cpython-38.pyc b/standards/__pycache__/__init__.cpython-38.pyc index eae63dc..3e2f839 100644 Binary files a/standards/__pycache__/__init__.cpython-38.pyc and b/standards/__pycache__/__init__.cpython-38.pyc differ diff --git a/standards/templatetags/__pycache__/__init__.cpython-38.pyc b/standards/templatetags/__pycache__/__init__.cpython-38.pyc index fb4baf6..25883cd 100644 Binary files a/standards/templatetags/__pycache__/__init__.cpython-38.pyc and b/standards/templatetags/__pycache__/__init__.cpython-38.pyc differ diff --git a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc index 5cc09d7..e6341fb 100644 Binary files a/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc and b/standards/templatetags/__pycache__/counter_tag.cpython-38.pyc differ diff --git a/standards/templatetags/counter_tag.py b/standards/templatetags/counter_tag.py index afd28ed..ba57844 100644 --- a/standards/templatetags/counter_tag.py +++ b/standards/templatetags/counter_tag.py @@ -427,15 +427,16 @@ def isfreedayname(user, daytocheck): # RETURN ALL ABSENCE ELEMENTS FOR THAT DAY @register.simple_tag def getabscenceday(loggeduser, user, daytocheck): - returnstat = False if(loggeduser.has_perm("users.absencemanager")): absencedays = Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, start=daytocheck) | (Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, start__lt=daytocheck) & Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(confirm_status=0, agency=user.profile.agency, user=user, end=daytocheck) else: - absencedays = (Absence.objects.filter(agency=user.profile.agency, user=loggeduser, confirm_status=1) | 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, confirm_status=0) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck, confirm_status=0) ) + absencedays = (Absence.objects.filter(agency=user.profile.agency, user=loggeduser, confirm_status=1) | 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, confirm_status=0) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck, confirm_status=0)) | ((Absence.objects.filter(agency=user.profile.agency, user=user, start__lt=daytocheck, confirm_status=1) & Absence.objects.filter(agency=user.profile.agency, user=user, end__gt=daytocheck)) | Absence.objects.filter(agency=user.profile.agency, user=user, end=daytocheck, confirm_status=1)) if(len(absencedays) > 0): returnstat = list(absencedays)[0] + print(absencedays) + return returnstat @register.simple_tag diff --git a/tasks/__pycache__/__init__.cpython-38.pyc b/tasks/__pycache__/__init__.cpython-38.pyc index fb81050..7b9ccb4 100644 Binary files a/tasks/__pycache__/__init__.cpython-38.pyc and b/tasks/__pycache__/__init__.cpython-38.pyc differ diff --git a/timemanagement/__pycache__/__init__.cpython-38.pyc b/timemanagement/__pycache__/__init__.cpython-38.pyc index 1c4eb95..62070bd 100644 Binary files a/timemanagement/__pycache__/__init__.cpython-38.pyc and b/timemanagement/__pycache__/__init__.cpython-38.pyc differ diff --git a/timemanagement/migrations/__pycache__/__init__.cpython-38.pyc b/timemanagement/migrations/__pycache__/__init__.cpython-38.pyc index 3f62c36..e6a8acc 100644 Binary files a/timemanagement/migrations/__pycache__/__init__.cpython-38.pyc and b/timemanagement/migrations/__pycache__/__init__.cpython-38.pyc differ diff --git a/users/__pycache__/__init__.cpython-38.pyc b/users/__pycache__/__init__.cpython-38.pyc index 8a2e35a..2365642 100644 Binary files a/users/__pycache__/__init__.cpython-38.pyc and b/users/__pycache__/__init__.cpython-38.pyc differ diff --git a/users/templates/users/base.html b/users/templates/users/base.html index 3d572d9..50c4860 100644 --- a/users/templates/users/base.html +++ b/users/templates/users/base.html @@ -239,7 +239,7 @@ - {% endfor %} - - {% for pass in res_pass %}