digitaleagenturnc/organizer/views.py

273 lines
9.9 KiB
Python

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)