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