from django.shortcuts import render from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import CreateView, ListView, UpdateView, DetailView, DeleteView from .models import QuickLinks, AGContacts, AGPassword, AGContactsCagetory from .forms import OrganizerAddQlForm, OrganizerAddContact, OrganizerUpdateContact, AddAGPassword, OrganizerAddCategoryForm from django.contrib import messages from django.shortcuts import redirect from django.http import HttpResponse, HttpResponseRedirect, JsonResponse from django.contrib.auth.decorators import login_required from django.urls import reverse_lazy from users.models import AgencyGroup class OrganizerManagement(LoginRequiredMixin, ListView): model = QuickLinks # Adding active_link # Loading only user same agency # Change context and return for template-data def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) quicklinks = QuickLinks.objects.filter(agency__pk=self.request.user.profile.agency.pk).order_by('name') context.update({'active_link' : 'organizer', 'quicklinks' : quicklinks, 'contacts' : AGContacts.objects.filter(agency__pk=self.request.user.profile.agency.pk).order_by('personname'), 'agpass' : AGPassword.objects.filter(agency__pk=self.request.user.profile.agency.pk).order_by('name'), 'agencygroups' : AgencyGroup.objects.filter(agency__pk=self.request.user.profile.agency.pk).order_by('agencygroupname'), 'categorys' : AGContactsCagetory.objects.filter(agency__pk=self.request.user.profile.agency.pk).order_by('name')}) return context class OrganizerAdd(LoginRequiredMixin, CreateView): model = QuickLinks success_url = reverse_lazy('organizer-management') form_class = OrganizerAddQlForm def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({'active_link' : 'organizer'}) return context def form_valid(self, form): # Send message to the site messages.success(self.request, f'Quicklink angelegt!') # SAVE OBJECTS TO SIGNALE! form.instance.agency = self.request.user.profile.agency return super().form_valid(form) class OrganizerDeleteView(LoginRequiredMixin, DeleteView): model = QuickLinks success_url = reverse_lazy('organizer-management') template_name = 'organizer/ql_confirm_delete.html' def delete(self, request, *args, **kwargs): response = super(OrganizerDeleteView, self).delete(request, *args, **kwargs) messages.success(request, f'Quicklink wurde gelöscht!') return response def get_context_data(self, **kwargs): context = super(OrganizerDeleteView, self).get_context_data(**kwargs) context['active_link'] = 'organizer' return context class OrganizerUpdateView(LoginRequiredMixin, UpdateView): model = QuickLinks template_name = 'organizer/ql_update.html' success_url = reverse_lazy('organizer-management') form_class = OrganizerAddQlForm def form_valid(self, form): # Send message to the site messages.success(self.request, f'Quicklink aktualisiert!') return super().form_valid(form) def get_context_data(self, **kwargs): context = super(OrganizerUpdateView, self).get_context_data(**kwargs) context['active_link'] = 'organizer' return context # CONTACTS class OrganizerAddContact(LoginRequiredMixin, CreateView): model = AGContacts success_url = reverse_lazy('organizer-management') form_class = OrganizerAddContact def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({'active_link' : 'organizer'}) return context # Pass User to Form to get only categorys from agency def get_form_kwargs(self): kwargs = super(OrganizerAddContact, self).get_form_kwargs() kwargs.update({'user': self.request.user}) return kwargs def form_valid(self, form): # Send message to the site messages.success(self.request, f'Kontakt angelegt!') # SAVE OBJECTS TO SIGNALE! form.instance.agency = self.request.user.profile.agency return super().form_valid(form) class OrganizerDelContact(LoginRequiredMixin, DeleteView): model = AGContacts success_url = reverse_lazy('organizer-management') template_name = 'organizer/contact_delete.html' def delete(self, request, *args, **kwargs): response = super(OrganizerDelContact, self).delete(request, *args, **kwargs) messages.success(request, f'Kontakt wurde gelöscht!') return response def get_context_data(self, **kwargs): context = super(OrganizerDelContact, self).get_context_data(**kwargs) context['active_link'] = 'organizer' return context class OrganizerUpdateContact(LoginRequiredMixin, UpdateView): model = AGContacts template_name = 'organizer/contact_update.html' success_url = reverse_lazy('organizer-management') form_class = OrganizerUpdateContact def form_valid(self, form): # Send message to the site messages.success(self.request, f'Kontakt aktualisiert!') return super().form_valid(form) # Pass User to Form to get only categorys from agency def get_form_kwargs(self): kwargs = super(OrganizerUpdateContact, self).get_form_kwargs() kwargs.update({'user': self.request.user}) return kwargs def get_context_data(self, **kwargs): context = super(OrganizerUpdateContact, self).get_context_data(**kwargs) context['active_link'] = 'organizer' return context # PASSWORDS class OrganizerAddPassword(LoginRequiredMixin, CreateView): model = AGPassword success_url = reverse_lazy('organizer-management') form_class = AddAGPassword def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context.update({'active_link' : 'organizer'}) return context def form_valid(self, form): # Send message to the site messages.success(self.request, f'Passwort angelegt!') # SAVE OBJECTS TO SIGNALE! form.instance.agency = self.request.user.profile.agency return super().form_valid(form) class OrganizerDelPassword(LoginRequiredMixin, DeleteView): model = AGPassword success_url = reverse_lazy('organizer-management') template_name = 'organizer/agpass_delete.html' def delete(self, request, *args, **kwargs): response = super(OrganizerDelPassword, self).delete(request, *args, **kwargs) messages.success(request, f'Passwort wurde gelöscht!') return response def get_context_data(self, **kwargs): context = super(OrganizerDelPassword, self).get_context_data(**kwargs) context['active_link'] = 'organizer' return context class OrganizerUpdatePassword(LoginRequiredMixin, UpdateView): model = AGPassword template_name = 'organizer/agpass_update.html' success_url = reverse_lazy('organizer-management') form_class = AddAGPassword def form_valid(self, form): # Send message to the site messages.success(self.request, f'Kontakt aktualisiert!') return super().form_valid(form) def get_context_data(self, **kwargs): context = super(OrganizerUpdatePassword, self).get_context_data(**kwargs) context['active_link'] = 'organizer' return context @login_required def loaddefaultql(request): if request.method == 'GET': if request.GET['action'] == 'adddefql': defaultlinks = [ ["EASY", "https://easy.ergo.com "], ["ERGO Ansprechpartner Navigator", "http://ansprechpartner-navigator.de/ "], ["ERGO Lokales Marketing", "https://ergo.ergo-mein-lokales-marketing.de/marcapo_platform/WelcomePre.cms "], ["ERGO Meine Druckstücke", "https://www.ergo-meine-druckstuecke.de/?client-check=2 "], ["ERGO Vertriebsportal", "https://vertriebsportal.ergo.com/"], ["myVVE", "https://www.myvve.de/"], ["Wiki", "https://wiki.digitale-agentur.com/"] ] for ele in defaultlinks: print(ele[0] + " " + ele[1]) tempql = QuickLinks(agency=request.user.profile.agency, name=ele[0], link=ele[1]) tempql.save() return redirect("ql-addql") elif request.GET["action"] == "loadpassg": data = {} agpass = list(AGPassword.objects.filter(pk=request.GET["passid"], agency=request.user.profile.agency)) if(len(agpass) == 1): agpass_ele = agpass[0] groupsid = [] for ag in agpass_ele.visibleby.all(): groupsid.append({"id" : ag.pk}) data = {'success' : True, 'passgroups' : groupsid} else: data = {'success' : False} return JsonResponse(data) elif request.GET["action"] == "changepassg": groupid = request.GET.get('groupid') workingpass = request.GET.get('workingpass') value = request.GET.get('value') if(value == "true"): AGPassword.objects.get(pk=workingpass, agency=request.user.profile.agency).visibleby.add(AgencyGroup.objects.get(pk=groupid, agency=request.user.profile.agency)) else: AGPassword.objects.get(pk=workingpass, agency=request.user.profile.agency).visibleby.remove(AgencyGroup.objects.get(pk=groupid, agency=request.user.profile.agency)) data = {'success' : False} return JsonResponse(data) return redirect("ql-addql") @login_required def ajaxorganizer(request): data = {'success' : False} if request.method == 'GET': #UPDATE CATEGORYNAME if request.GET['action'] == 'update_category': workingcat = AGContactsCagetory.objects.get(pk=request.GET['id']) if(request.user.profile.agency == workingcat.agency): workingcat.name = request.GET["newvalue"] workingcat.save() data["success"] = True else: data["success"] = False return JsonResponse(data) # GET CATEGORY NAME elif request.GET['action'] == 'get_catname': workingcat = AGContactsCagetory.objects.get(pk=request.GET['id']) data["catname"] = workingcat.name return JsonResponse(data) # DELETE A CATEGORY elif request.GET['action'] == 'delete_category': workingcat = AGContactsCagetory.objects.get(pk=request.GET['id']) if(request.user.profile.agency == workingcat.agency): workingcat.delete() data["success"] = True else: data["success"] = False return JsonResponse(data) # ADD CATEGORY elif request.GET['action'] == 'add_category': workingcat = AGContactsCagetory(name="", agency=request.user.profile.agency) workingcat.save() data["new_id"] = workingcat.pk return JsonResponse(data) else: return JsonResponse(data)