digitaleagenturnc/recoverdir/views.py

409 lines
12 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 *
from .forms import *
from django.urls import reverse_lazy
from django.contrib.auth.decorators import login_required
import os
import sys
from django.conf import settings
from django.http import JsonResponse, HttpResponse, Http404
from django_encrypted_filefield.views import FetchView
import string, random
from itertools import chain
# Create your views here.
class RecoverDirManagement(LoginRequiredMixin, ListView):
model = PersLetter
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
# PERSÖNLICHER BRIEF
persletter = None
if(len(PersLetter.objects.filter(agency=self.request.user.profile.agency)) == 1):
persletter = PersLetter.objects.filter(agency=self.request.user.profile.agency)[0]
context.update({'persletter' : persletter})
# Load Update-Historys
# AREA 1
persletters = PersLetter.objects.filter(agency=self.request.user.profile.agency)
handlungsleitfaden = Handlungsleitfaden.objects.filter(agency=self.request.user.profile.agency)
contactfc = RDContact.objects.filter(agency=self.request.user.profile.agency)
contactstrust = RDTrustPerson.objects.filter(agency=self.request.user.profile.agency)
# DOCUMENTS NOT WORKING Weil das "alte" nicht gespeichert wird sondern lediglich der Datensatz
#documents = Documents.objects.filter(agency=self.request.user.profile.agency, area=1)
# AREA 2
handlungsleitfadenvf = HandlungsleitfadenVF.objects.filter(agency=self.request.user.profile.agency)
finalupdatelist = chain(persletters, handlungsleitfaden, contactfc, contactstrust, handlungsleitfadenvf)
context.update({"history" : finalupdatelist})
# Bereich 1 - Handlungsleitfaden ########## ########## ########## ########## ########## ##########
# Handlungsleitfaden
hl = Handlungsleitfaden.objects.filter(agency=self.request.user.profile.agency)
if(len(hl) == 1):
hl = Handlungsleitfaden.objects.filter(agency=self.request.user.profile.agency)[0]
else:
hl = None
context.update({'area_1_hl' : hl})
# Familien-Freunde
context.update({'area_1_fc' : RDContact.objects.filter(agency=self.request.user.profile.agency)})
# Vertrauensperson
context.update({'area_1_trust' : RDTrustPerson.objects.filter(agency=self.request.user.profile.agency)})
hlfv = HandlungsleitfadenVF.objects.filter(agency=self.request.user.profile.agency)
if(len(hlfv) == 1):
hlfv = HandlungsleitfadenVF.objects.filter(agency=self.request.user.profile.agency)[0]
else:
hlfv = None
context.update({'area_2_hlfv' : hlfv})
# Dokumente
# A1
context.update({'area_1_doc' : Documents.objects.filter(agency=self.request.user.profile.agency, area=1).order_by('-document_date')})
# A2
context.update({'area_2_doc' : Documents.objects.filter(agency=self.request.user.profile.agency, area=2).order_by('-document_date')})
return context
class RecoverDirAddPL(CreateView):
model = PersLetter
success_url = reverse_lazy('recoverdir')
form_class = PersLetterForm
template_name = "recoverdir/rd_pers_add.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({
'active_link' : 'recoverdir',
})
return context
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
form.instance.user = self.request.user
# TASK: Hier Aktualisierung hinzufügen!
return super().form_valid(form)
class RecoverDirUpdatePL(UpdateView):
model = PersLetter
success_url = reverse_lazy('recoverdir')
form_class = PersLetterForm
template_name = "recoverdir/rd_pers_update.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
def form_valid(self, form):
# TASK: Hier Aktualisierung hinzufügen!
return super().form_valid(form)
def randomString(stringLength=40):
"""Generate a random string of fixed length """
letters = string.ascii_lowercase
return ''.join(random.choice(letters) for i in range(stringLength))
# Notfallhilfe ELEMENTE
# ABNSCHNITT 1
class RDAoneAddDoc(CreateView):
model = Documents
success_url = reverse_lazy('recoverdir')
form_class = DocumentForm
template_name = "recoverdir/rd_elements_forms/rd_area_1_adddoc.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
form.instance.area = self.kwargs["area"]
# Randomize File-Name keeping extension
file = self.request.FILES['document']
file_ext_arr = file.name.split(".")
file_ext = file_ext_arr[len(file_ext_arr)-1]
file.name = randomString() + "." + file_ext
form.instance.document = file
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
# Einzeldokumentenanzeige
class RDAoneViewDoc(DetailView):
model = Documents
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_doc_single.html'
context_object_name = 'document'
class RDAoneDelDoc(DeleteView):
model = Documents
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_doc_del.html'
context_object_name = 'document'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAoneUpdateDoc(UpdateView):
model = Documents
success_url = reverse_lazy('recoverdir')
form_class = DocumentForm
template_name = "recoverdir/rd_elements_forms/rd_area_1_adddoc.html"
def form_valid(self, form):
if(self.request.FILES and self.request.FILES['document']):
# Randomize File-Name keeping extension
file = self.request.FILES['document']
file_ext_arr = file.name.split(".")
file_ext = file_ext_arr[len(file_ext_arr)-1]
file.name = randomString() + "." + file_ext
form.instance.document = file
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
# Handlungsleitfaden
# ABNSCHNITT 1
class RDAoneAddHL(CreateView):
model = Handlungsleitfaden
success_url = reverse_lazy('recoverdir')
form_class = HLForm
template_name = "recoverdir/rd_elements_forms/rd_area_1_addhl.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAoneUpdateHL(UpdateView):
model = Handlungsleitfaden
success_url = reverse_lazy('recoverdir')
form_class = HLForm
template_name = "recoverdir/rd_elements_forms/rd_area_1_addhl.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
# FAMILIEN
class RDAoneAddFC(CreateView):
model = RDContact
success_url = reverse_lazy('recoverdir')
form_class = RDContactF
template_name = "recoverdir/rd_elements_forms/rd_area_1_addfc.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAoneUpdateContact(UpdateView):
model = RDContact
success_url = reverse_lazy('recoverdir')
form_class = RDContactF
template_name = "recoverdir/rd_elements_forms/rd_area_1_addfc.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAoneViewContact(DetailView):
model = RDContact
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_elements_forms/rd_area_1_contact_single.html'
context_object_name = 'contact'
class RDAoneDelContact(DeleteView):
model = RDContact
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_elements_forms/rd_area_1_contact_del.html'
context_object_name = 'contact'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
# VERTRAUENSPERSON
class RDAoneViewTrust(DetailView):
model = RDTrustPerson
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_elements_forms/rd_area_1_trust_single.html'
context_object_name = 'contact'
class RDAoneDelTrust(DeleteView):
model = RDTrustPerson
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_elements_forms/rd_area_1_trust_del.html'
context_object_name = 'contact'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAoneAddTrust(CreateView):
model = RDTrustPerson
success_url = reverse_lazy('recoverdir')
form_class = RDTrustPersonF
template_name = "recoverdir/rd_elements_forms/rd_area_1_addtrust.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAoneUpdateTrust(UpdateView):
model = RDTrustPerson
success_url = reverse_lazy('recoverdir')
form_class = RDTrustPersonF
template_name = "recoverdir/rd_elements_forms/rd_area_1_addtrust.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
########################## ABSCHNITT 2 ##################################
# Handlungsleitfaden Finanzen und Vorsorge
class RDAtwoAddHLFV(CreateView):
model = HandlungsleitfadenVF
success_url = reverse_lazy('recoverdir')
form_class = HLFVForm
template_name = "recoverdir/rd_elements_forms/rd_area_2_addhlvf.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
return super().form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAtwoUpdateFV(UpdateView):
model = HandlungsleitfadenVF
success_url = reverse_lazy('recoverdir')
form_class = HLFVForm
template_name = "recoverdir/rd_elements_forms/rd_area_2_addhlvf.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
########################## HISTORY ELEMENT VIEW ##################################
# Persönliches Schreiben
class PLSingleHistory(DetailView):
model = PersLetter
template_name = 'recoverdir/rd_persletter_single.html'
context_object_name = 'persletter'
# Gewünschte Revision aufrufen
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
historyelements = PersLetter.objects.get(pk=self.kwargs['pk']).history.all()
shown_element = None
for he in historyelements:
if he.pk == self.kwargs["rev"]:
shown_element = he
context.update({
'historyelement' : shown_element,
})
return context
# CONTACT
class ContactSingleHistory(DetailView):
model = RDContact
template_name = 'recoverdir/rd_elements_forms/rd_area_1_contact_single.html'
# Gewünschte Revision aufrufen
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
historyelements = RDContact.objects.get(pk=self.kwargs['pk']).history.all()
shown_element = None
for he in historyelements:
if he.pk == self.kwargs["rev"]:
shown_element = he
context.update({
'contact' : shown_element,
'history' : True
})
return context
# DOCUMENT
class DocumentSingleHistory(DetailView):
model = Documents
template_name = 'recoverdir/rd_doc_single.html'
# Gewünschte Revision aufrufen
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
historyelements = Documents.objects.get(pk=self.kwargs['pk']).history.all()
shown_element = None
for he in historyelements:
if he.pk == self.kwargs["rev"]:
shown_element = he
context.update({
'document' : shown_element,
'history' : True
})
return context