Bereich 4 fertig

This commit is contained in:
holger.trampe 2020-10-06 19:44:43 +02:00
parent e2038c91fb
commit f97d904bca
13 changed files with 334 additions and 17 deletions

View File

@ -92,6 +92,26 @@ class StreamingAboF(forms.ModelForm):
super(StreamingAboF, self).__init__(*args, **kwargs) super(StreamingAboF, self).__init__(*args, **kwargs)
self.fields['password'] = forms.CharField(widget=forms.PasswordInput, label="Passwort") self.fields['password'] = forms.CharField(widget=forms.PasswordInput, label="Passwort")
# DigitalAccountsF
class DigitalAccountsF(forms.ModelForm):
class Meta:
model = DigitalAccounts
fields = ['name','link','mail','username','password','accountactivity','vollmacht_doc']
labels = {
'name':"Name des Online-Dienstes",
'link':"Webseite",
'username':"Benutzername",
'password':"Passwort",
'mail':"E-Mailadresse zur Anmeldung/im Account",
'accountactivity':"Was soll mit diesem Account geschehen (weiterleiten, löschen, sichern etc.)?",
'vollmacht_doc' : "Vollmacht"
}
def __init__(self, *args, **kwargs):
super(DigitalAccountsF, self).__init__(*args, **kwargs)
self.fields['password'] = forms.CharField(widget=forms.PasswordInput, label="Passwort")
# Familienkontakte # Familienkontakte
class RDContactF(forms.ModelForm): class RDContactF(forms.ModelForm):

View File

@ -140,6 +140,17 @@ class StreamingAbo(models.Model):
vollmacht_doc = EncryptedFileField(upload_to=rd_path_agency, blank=True) vollmacht_doc = EncryptedFileField(upload_to=rd_path_agency, blank=True)
history = HistoricalRecords() history = HistoricalRecords()
class DigitalAccounts(models.Model):
agency = models.ForeignKey(Agency, on_delete=models.CASCADE, null=True)
name = encrypt(models.CharField(max_length=500, blank=True, default="", null=True))
link = encrypt(models.CharField(max_length=500, blank=True, default="", null=True))
username = encrypt(models.CharField(max_length=500, blank=True, default="", null=True))
password = encrypt(models.CharField(max_length=500, blank=True, default="", null=True))
accountactivity = encrypt(models.CharField(max_length=5000, blank=True, default="", null=True))
mail = encrypt(models.EmailField(max_length=500, blank=True, default="", null=True))
vollmacht_doc = EncryptedFileField(upload_to=rd_path_agency, blank=True)
history = HistoricalRecords()

View File

@ -2,7 +2,7 @@
{% if area_1_hl == None %} {% if area_1_hl == None %}
<a class="btn btn-primary btn btn-sm " href="{% url 'rd-a1-hl' %}"><i class="fas fa-plus"></i>&nbsp;Handlungsleitfaden</a> <a class="btn btn-primary btn btn-sm " href="{% url 'rd-a1-hl' %}"><i class="fas fa-plus"></i>&nbsp;Handlungsleitfaden</a>
{% else %} {% else %}
<h4><a href="{% url 'rd-a1-hl-update' area_1_hl.pk %}">Handlungsleitfaden bearbeiten</a></h4> <h5><a href="{% url 'rd-a1-hl-update' area_1_hl.pk %}">Handlungsleitfaden bearbeiten</a></h5>
{% endif %} {% endif %}
<hr> <hr>

View File

@ -1,7 +1,7 @@
{% if area_2_hlfv == None %} {% if area_2_hlfv == None %}
<a class="btn btn-primary btn btn-sm " href="{% url 'rd-a2-hlfv' %}"><i class="fas fa-plus"></i>&nbsp;Handlungsleitfaden Vorsorge & Finanzen</a> <a class="btn btn-primary btn btn-sm " href="{% url 'rd-a2-hlfv' %}"><i class="fas fa-plus"></i>&nbsp;Handlungsleitfaden Vorsorge & Finanzen</a>
{% else %} {% else %}
<h4><a href="{% url 'rd-a2-hlfv-update' area_2_hlfv.pk %}">Handlungsleitfaden für Vorsorge & Finanzen bearbeiten</a></h4> <h5><a href="{% url 'rd-a2-hlfv-update' area_2_hlfv.pk %}">Handlungsleitfaden für Vorsorge & Finanzen bearbeiten</a></h5>
{% endif %} {% endif %}
<hr> <hr>

View File

@ -1 +1,103 @@
VIERTE <h4>Online-Accounts (Messenger, E-Mail-Accounts, Social-Media etc.)
<a class="btn btn-primary btn btn-sm mb-3" href="{% url 'rd-a4-adddigitalaccount' %}" style="float: right;"><i class="fas fa-plus"></i>&nbsp;Online-Account</a>
</h4>
<table class="table table-hover" id="a4_digitalaccount" >
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Link</th>
<th scope="col">Benutzername</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
<tbody >
{% for ele in area_4_digitalaccount %}
<tr>
<td><a href="{% url 'rd-a4-viewdigitalaccount' ele.pk %}">{{ele.name|default:""}}</a></td>
<td>{{ele.link|default:""}}</td>
<td>{{ele.username|default:""}}</td>
<td>
<a style="float: right" class="btn btn-secondary btn-sm mr-2 " href="{% url 'rd-a4-viewdigitalaccount' ele.pk %}"><i class="far fa-eye"></i></a>&nbsp;
<a style="float: right" class="btn btn-secondary btn-sm mr-2 " href="{% url 'rd-a4-updatedigitalaccount' ele.pk %}"><small><i class="fas fa-pen"></i></small></a>&nbsp;
<a style="float: right" class="btn btn-secondary btn-sm mr-2 " href="{% url 'rd-a4-deldigitalaccount' ele.pk %}"><small><i class="fas fa-trash"></i></small></a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<hr>
<h4>Dokumente
<a class="btn btn-primary btn-sm btn mb-3" href="{% url 'rd-a1-adddoc' 4 %}" style="float: right;"><i class="fas fa-plus"></i>&nbsp;Dokument</a>
</h4>
<table class="table table-hover" id="a4_docs" >
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Datum</th>
<th scope="col">Beschreibung</th>
<th scope="col">&nbsp;</th>
</tr>
</thead>
<tbody >
{% for doc in area_4_doc %}
<tr>
<td><a href="{% url 'rd-a1-viewdoc' doc.pk %}" target="_blank">{{doc.document_name}}</a></td>
<td>{{doc.document_date|date:"d.m.Y"|default:""}}</td>
<td>{{doc.document_desc|default:""}}</td>
<td>
<a style="float: right" class="btn btn-secondary btn-sm mr-2 " href="{% url 'rd-a1-viewdoc' doc.pk %}"><i class="far fa-eye"></i></a>&nbsp;
<a style="float: right" class="btn btn-secondary btn-sm mr-2 " href="{% url 'rd-a1-updatedoc' doc.pk %}"><small><i class="fas fa-pen"></i></small></a>&nbsp;
<a style="float: right" class="btn btn-secondary btn-sm mr-2 " href="{% url 'rd-a1-deldoc' doc.pk %}"><small><i class="fas fa-trash"></i></small></a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
<script type="text/javascript">
$(document).ready(function(){
$('#a4_docs').DataTable({
"language": {
"search" : "Suche",
"info": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"lengthMenu": "Zeige _MENU_ Einträge",
"zeroRecords": "Nichts gefunden",
"infoEmpty": "Keine Einträge",
"paginate": {
"first": "Erste",
"last": "Letzte",
"next": "Nächste",
"previous": "Zurück"
},
},
"pageLength": 50,
"buttons" : {
"className" : "btn-danger"
}
});
$('#a4_digitalaccount').DataTable({
"language": {
"search" : "Suche",
"info": "Zeige _START_ bis _END_ von _TOTAL_ Einträgen",
"lengthMenu": "Zeige _MENU_ Einträge",
"zeroRecords": "Nichts gefunden",
"infoEmpty": "Keine Einträge",
"paginate": {
"first": "Erste",
"last": "Letzte",
"next": "Nächste",
"previous": "Zurück"
},
},
"pageLength": 50,
"buttons" : {
"className" : "btn-danger"
}
});
});
</script>

View File

@ -0,0 +1,21 @@
{% extends "users/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
{% if request.user.profile.agency.module_recoverdir %}
<div class="content-section col-9">
<h3>Online-Account bearbeiten</h3>
<hr>
<form method="POST" enctype="multipart/form-data">
<p>Nutzen Sie die Maske zur Speicherung von E-Mail, Messenger, Geräteanmeldung und PINs, Internetdomains usw..</p>
{% csrf_token %}
{{form.media}}
{{form|crispy}}
<hr>
<a class="btn" href="{% url 'recoverdir' %} ">Abbrechen</a>
<button type="submit" class="btn btn-primary" style="float: right;">Online-Account speichern</button>&nbsp;
</form>
</div>
{% else %}
<h3>Das Modul Notfallhilfe wurden in ihrer Agentur deaktiviert.</h3>
{% endif %}
{% endblock content %}

View File

@ -0,0 +1,20 @@
{% extends "users/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
{% if request.user.profile.agency.module_recoverdir %}
<div class="content-section col-9">
<h3>Online-Account löschen</h3>
<hr>
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form|crispy }}
Möchten Sie die Daten für den Online-Account <i>{{account.name}}</i> wirklich endgültig löschen?
<hr>
<a class="btn" href="{% url 'recoverdir' %} ">Abbrechen</a>
<button type="submit" class="btn btn-primary" style="float: right;">Online-Account endgültig löschen</button>&nbsp;
</form>
</div>
{% else %}
<h3>Das Modul Notfallhilfe wurden in ihrer Agentur deaktiviert.</h3>
{% endif %}
{% endblock content %}

View File

@ -0,0 +1,47 @@
{% extends "users/base.html" %}
{% block content %}
{% if request.user.profile.agency.module_recoverdir %}
<div class="content-section col-12">
<h3>Online-Account {% if history == True %} - Version vom {{account.history_date|date:"d.m.Y"}}{% endif %}
<span style="float: right">
<a href="{% url 'recoverdir'%}" style="float: right" class="btn btn-secondary btn-sm "><small><i class="fas fa-chevron-circle-left"></i></small></a>
</span>
</h3>
<hr>
<h4>Online-Account</h4>
<table>
<tr>
<td>Name:</td>
<td>{{account.name}}</td>
</tr>
<tr>
<td>Link:</td>
<td>{{account.link}}</td>
</tr>
<tr>
<td>Benutzername:</td>
<td>{{account.username|default:""}}</td>
</tr>
<tr>
<td>Passwort:</td>
<td>{{account.password|default:""}}</td>
</tr>
<tr>
<td>E-Mail:</td>
<td>{{account.mail|default:""}}</td>
</tr>
<tr>
<td>Mit meinem Account soll Folgendes passieren:</td>
<td>{{account.accountactivity|default:""}}</td>
</tr>
</table>
<hr>
{% if account.vollmacht_doc %}
<h4><a href="{% url 'getdoc' account.vollmacht_doc %}" target="_blank">Vollmachtsdokument anschauen</a></h4>
{% endif %}
</div>
{% else %}
<h3>Auf dieses Modul haben Sie keinen Zugriff!</h3>
{% endif %}
{% endblock content %}

View File

@ -9,7 +9,6 @@
</tr> </tr>
</thead> </thead>
<!-- <!--
1 = Familien/Freundekontakt 1 = Familien/Freundekontakt
2 = Vertrauensperson 2 = Vertrauensperson
3 = Handlungsleitfaden 3 = Handlungsleitfaden
@ -19,14 +18,14 @@
7 = ErgoVerDir 7 = ErgoVerDir
8 = OnlineBank 8 = OnlineBank
9 = Streaming-Abo 9 = Streaming-Abo
--> 10 = Digitaler Account
-->
<tbody> <tbody>
{% for ele in history %} {% for ele in history %}
{% for rdele in ele.history.all %} {% for rdele in ele.history.all %}
<tr> <tr>
<td> <td>
{% getHistoryClassOfObject rdele as hisotryelementinfo %} {% getHistoryClassOfObject rdele as hisotryelementinfo %}
{% if hisotryelementinfo.1 == 1 %} {% if hisotryelementinfo.1 == 1 %}
<a href="{% url 'recoverdir-contact-historysingle' ele.pk rdele.pk %}">{{hisotryelementinfo.0}}</a> <a href="{% url 'recoverdir-contact-historysingle' ele.pk rdele.pk %}">{{hisotryelementinfo.0}}</a>
@ -55,14 +54,14 @@
{% elif hisotryelementinfo.1 == 9 %} {% elif hisotryelementinfo.1 == 9 %}
<a href="{% url 'recoverdir-streaminghistory-single' ele.pk rdele.pk %}">{{hisotryelementinfo.0}}</a> <a href="{% url 'recoverdir-streaminghistory-single' ele.pk rdele.pk %}">{{hisotryelementinfo.0}}</a>
{% elif hisotryelementinfo.1 == 10 %}
<a href="{% url 'recoverdir-digitalaccounthistory-single' ele.pk rdele.pk %}">{{hisotryelementinfo.0}}</a>
{% endif %} {% endif %}
</td> </td>
<td>{{rdele.history_date|date:"d.m.Y H:i"}}</td> <td>{{rdele.history_date|date:"d.m.Y H:i"}}</td>
<td> <td>
{% gethistoryuser rdele.history_user_id as history_user %} {% gethistoryuser rdele.history_user_id as history_user %}
{% if history_user != None %} {% if history_user != None %}
{{history_user.get_full_name}} {{history_user.get_full_name}}
{% else %} {% else %}
@ -100,6 +99,5 @@
"order": [[ 1, "desc" ]] "order": [[ 1, "desc" ]]
}); });
}); });
</script> </script>

View File

@ -69,6 +69,11 @@ urlpatterns = [
path('three/streaming/del/<int:pk>', permission_required('users.recoverdirmanager')(RDAthreeDelstreaming.as_view()), name='rd-a3-delstreaming'), path('three/streaming/del/<int:pk>', permission_required('users.recoverdirmanager')(RDAthreeDelstreaming.as_view()), name='rd-a3-delstreaming'),
path('three/streaming/update/<int:pk>', permission_required('users.recoverdirmanager')(RDAthreeUpdatestreaming.as_view()), name='rd-a3-updatestreaming'), path('three/streaming/update/<int:pk>', permission_required('users.recoverdirmanager')(RDAthreeUpdatestreaming.as_view()), name='rd-a3-updatestreaming'),
path('four/digitalaccount/add', permission_required('users.recoverdirmanager')(RDAfourAdddigitalaccount.as_view()), name='rd-a4-adddigitalaccount'),
path('four/digitalaccount/<int:pk>', permission_required('users.recoverdirmanager')(RDAfourViewdigitalaccount.as_view()), name='rd-a4-viewdigitalaccount'),
path('four/digitalaccount/del/<int:pk>', permission_required('users.recoverdirmanager')(RDAfourDeldigitalaccount.as_view()), name='rd-a4-deldigitalaccount'),
path('four/digitalaccount/update/<int:pk>', permission_required('users.recoverdirmanager')(RDAfourUpdatedigitalaccount.as_view()), name='rd-a4-updatedigitalaccount'),
# HISTORY VIEWS # HISTORY VIEWS
# Persönliches Schreiben # Persönliches Schreiben
@ -88,8 +93,11 @@ urlpatterns = [
# Ergo Digitale Versicherungen # Ergo Digitale Versicherungen
path('ergo/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(ErgoSingleHistory.as_view()), name='recoverdir-ergohistory-single'), path('ergo/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(ErgoSingleHistory.as_view()), name='recoverdir-ergohistory-single'),
# Online Bank # Online Bank
path('onlinebank/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(OnlinebankSingleHistory.as_view()), name='recoverdir-onlinebankhistory-single'), path('onlinebank/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(OnlinebankSingleHistory.as_view()), name='recoverdir-onlinebankhistory-single'),
# STREAMINGABO
path('streaming/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(StreamingSingleHistory.as_view()), name='recoverdir-streaminghistory-single'), path('streaming/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(StreamingSingleHistory.as_view()), name='recoverdir-streaminghistory-single'),
path('digitalaccount/ver/<int:pk>/<int:rev>', permission_required('users.recoverdirmanager')(DigitalAccountSingleHistory.as_view()), name='recoverdir-digitalaccounthistory-single'),

View File

@ -34,20 +34,23 @@ class RecoverDirManagement(LoginRequiredMixin, ListView):
contactfc = RDContact.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) contactstrust = RDTrustPerson.objects.filter(agency=self.request.user.profile.agency)
depistvollmacht = DepositVollmacht.objects.filter(agency=self.request.user.profile.agency) depistvollmacht = DepositVollmacht.objects.filter(agency=self.request.user.profile.agency)
ergodigi = ErgoVerDir.objects.filter(agency=self.request.user.profile.agency) ergodigi = ErgoVerDir.objects.filter(agency=self.request.user.profile.agency)
context.update({"area_2_ergo" : ergodigi}) context.update({"area_2_ergo" : ergodigi})
onlinebank = OnlineBank.objects.filter(agency=self.request.user.profile.agency) onlinebank = OnlineBank.objects.filter(agency=self.request.user.profile.agency)
context.update({"area_2_onlinebank" : onlinebank}) context.update({"area_2_onlinebank" : onlinebank})
streamingabo = StreamingAbo.objects.filter(agency=self.request.user.profile.agency) streamingabo = StreamingAbo.objects.filter(agency=self.request.user.profile.agency)
context.update({"area_3_abos" : streamingabo}) context.update({"area_3_abos" : streamingabo})
digitalaccount = DigitalAccounts.objects.filter(agency=self.request.user.profile.agency)
context.update({"area_4_digitalaccount" : digitalaccount})
handlungsleitfadenvf = HandlungsleitfadenVF.objects.filter(agency=self.request.user.profile.agency) handlungsleitfadenvf = HandlungsleitfadenVF.objects.filter(agency=self.request.user.profile.agency)
finalupdatelist = chain(persletters, handlungsleitfaden, contactfc, contactstrust, handlungsleitfadenvf, depistvollmacht, ergodigi, onlinebank, streamingabo) finalupdatelist = chain(persletters, handlungsleitfaden, contactfc, contactstrust, handlungsleitfadenvf, depistvollmacht, ergodigi, onlinebank, streamingabo, digitalaccount)
context.update({"history" : finalupdatelist}) context.update({"history" : finalupdatelist})
# DOCUMENTS NOT WORKING Weil das "alte" nicht gespeichert wird sondern lediglich der Datensatz # DOCUMENTS NOT WORKING Weil das "alte" nicht gespeichert wird sondern lediglich der Datensatz
@ -88,6 +91,9 @@ class RecoverDirManagement(LoginRequiredMixin, ListView):
# A3 # A3
context.update({'area_3_doc' : Documents.objects.filter(agency=self.request.user.profile.agency, area=3).order_by('-document_date')}) context.update({'area_3_doc' : Documents.objects.filter(agency=self.request.user.profile.agency, area=3).order_by('-document_date')})
# A4
context.update({'area_4_doc' : Documents.objects.filter(agency=self.request.user.profile.agency, area=4).order_by('-document_date')})
return context return context
class RecoverDirAddPL(CreateView): class RecoverDirAddPL(CreateView):
@ -577,7 +583,70 @@ class RDAthreeUpdatestreaming(UpdateView):
context.update({'active_link' : 'recoverdir'}) context.update({'active_link' : 'recoverdir'})
return context return context
#################################################################### HISTORY ELEMENT VIEW ####################################################### # Digitaler Account
class RDAfourViewdigitalaccount(DetailView):
model = DigitalAccounts
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_elements_forms/rd_area_4_digitalaccount_single.html'
context_object_name = 'account'
class RDAfourDeldigitalaccount(DeleteView):
model = DigitalAccounts
success_url = reverse_lazy('recoverdir')
template_name = 'recoverdir/rd_elements_forms/rd_area_4_digitalaccount_del.html'
context_object_name = 'account'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
return context
class RDAfourAdddigitalaccount(CreateView):
model = DigitalAccounts
success_url = reverse_lazy('recoverdir')
form_class = DigitalAccountsF
template_name = "recoverdir/rd_elements_forms/rd_area_4_adddigitalaccount.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
if(self.request.FILES and self.request.FILES['vollmacht_doc']):
# Randomize File-Name keeping extension
file = self.request.FILES['vollmacht_doc']
file_ext_arr = file.name.split(".")
file_ext = file_ext_arr[len(file_ext_arr)-1]
file.name = randomString() + "." + file_ext
form.instance.vollmacht_doc = 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
class RDAfourUpdatedigitalaccount(UpdateView):
model = DigitalAccounts
success_url = reverse_lazy('recoverdir')
form_class = DigitalAccountsF
template_name = "recoverdir/rd_elements_forms/rd_area_4_adddigitalaccount.html"
def form_valid(self, form):
form.instance.agency = self.request.user.profile.agency
if(self.request.FILES and self.request.FILES['vollmacht_doc']):
# Randomize File-Name keeping extension
file = self.request.FILES['vollmacht_doc']
file_ext_arr = file.name.split(".")
file_ext = file_ext_arr[len(file_ext_arr)-1]
file.name = randomString() + "." + file_ext
form.instance.vollmacht_doc = 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
################################################## HISTORY ELEMENT VIEW ##########################################
# Persönliches Schreiben # Persönliches Schreiben
@ -812,10 +881,28 @@ class StreamingSingleHistory(DetailView):
}) })
return context return context
# Digitaler Account
class DigitalAccountSingleHistory(DetailView):
model = DigitalAccounts
template_name = 'recoverdir/rd_elements_forms/rd_area_4_digitalaccount_single.html'
# Gewünschte Revision aufrufen
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context.update({'active_link' : 'recoverdir'})
historyelements = DigitalAccounts.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({
'account' : shown_element,
'history' : True
})
return context

View File

@ -792,6 +792,9 @@ def getHistoryClassOfObject(value):
elif(objectClass == 'HistoricalStreamingAbo'): elif(objectClass == 'HistoricalStreamingAbo'):
finalclass[0] = "Streaming-Abo" finalclass[0] = "Streaming-Abo"
finalclass[1] = 9 finalclass[1] = 9
elif(objectClass == 'HistoricalDigitalAccounts'):
finalclass[0] = "Onine-Account"
finalclass[1] = 10
return finalclass return finalclass