WMDE
/
eva
forked from tohe/eva
7
1
Fork 0

Handover of working equipment is shown as html step before last step

This commit is contained in:
Marike Voßbeck 2026-03-17 15:16:57 +01:00
parent 5c5f22375e
commit 3354c6dbfc
3 changed files with 59 additions and 52 deletions

View File

@ -50,8 +50,14 @@
{% translate "IT-relevante Angaben" %} {% translate "IT-relevante Angaben" %}
{% elif wizard.steps.step1 == 4 %} {% elif wizard.steps.step1 == 4 %}
{% translate "Sonstige Angaben" %} {% translate "Sonstige Angaben" %}
<!-- Delete when in production!! -->
{% elif wizard.steps.step1 == 5 %}
{% translate "PDF Abgabe Arbeitsmittel" %}
{% if pdf_data %}
{% include 'austritt/pdf_template.html' %}
{% endif %} {% endif %}
{% endif %}
{% else %} {% else %}
{% if wizard.steps.step1 == 2 %} {% if wizard.steps.step1 == 2 %}
Veränderungsrelevante Angaben Veränderungsrelevante Angaben

View File

@ -1,13 +1,10 @@
{% load i18n %} <!DOCTYPE html>
{% load static %} <html>
<head>
<meta charset="utf-8">
</head>
{% if datatable == 2 %} <body>
<h2>Übergabedokument von Arbeitsmitteln: {{ pdf_data.firstname }} {{ pdf_data.lastname }}</h2>
<h2>Übergabedokument von Arbeitsmitteln: {{ data.firstname }} {{ data.lastname }}</h2>
<h2 style="color:blue;">Handover sheet of work equipment: </h2> <h2 style="color:blue;">Handover sheet of work equipment: </h2>
<table class="center", style="border: 1px solid black; <table class="center", style="border: 1px solid black;
border-collapse: collapse; width:90%"> border-collapse: collapse; width:90%">
@ -16,15 +13,15 @@
<th style="border: 1px solid black; <th style="border: 1px solid black;
border-collapse: collapse;">[X]</th> border-collapse: collapse;">[X]</th>
<th style="border: 1px solid black; <th style="border: 1px solid black;
border-collapse: collapse;">Ausstattung/<strong style="color:blue;">Equipment</strong></th> border-collapse: collapse;"><strong>Ausstattung/</strong><strong style="color:blue;">Equipment</strong></th>
<th style="border: 1px solid black; <th style="border: 1px solid black;
border-collapse: collapse;">Weitergabe an/<strong style="color:blue;">Handover to</strong></th> border-collapse: collapse;"><strong>Weitergabe an/</strong><strong style="color:blue;">Handover to</strong></th>
</tr> </tr>
<tr> <tr>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"><p>Laptop + Ladekabel <strong> {{% if data.laptop_id %}} {{data.laptop_id}} {{% else %}} ID nicht bekannt {{% endif %}} </strong></p> </td> border-collapse: collapse;"><p>Laptop + Ladekabel <strong> {% if pdf_data.laptop_id %} {{pdf_data.laptop_id}} {% else %} ID nicht bekannt {% endif %} </strong></p> </td>
<td style="text-align: center;border: 1px solid black; <td style="text-align: center;border: 1px solid black;
border-collapse: collapse;">IT</td> border-collapse: collapse;">IT</td>
</tr> </tr>
@ -32,7 +29,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"><p>Home-Office Geräte (Monitor, Kabel, Tastatur, Maus)</p></td> border-collapse: collapse;"><p>Home-Office Geräte ({% if pdf_data.hardware %}{% for item in pdf_data.hardware %}{{ item }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}Keine Hardware {% endif %})</p></td>
<td style="text-align: center;border: 1px solid black; <td style="text-align: center;border: 1px solid black;
border-collapse: collapse;">IT</td> border-collapse: collapse;">IT</td>
</tr> </tr>
@ -40,7 +37,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;">{{% if data.mobile=="JA" %}}<p> Mobiltelefon (ID nicht angegeben)</p> {{% else %}} <p><s>Mobiltelefon</s></p>{{% endif %}}</td> border-collapse: collapse;">{% if pdf_data.mobile == "JA" %}<p> Mobiltelefon (ID nicht angegeben)</p> {% else %} <p><s>Mobiltelefon</s></p>{% endif %}</td>
<td style="text-align: center;border: 1px solid black; <td style="text-align: center;border: 1px solid black;
border-collapse: collapse;">IT</td> border-collapse: collapse;">IT</td>
</tr> </tr>
@ -48,7 +45,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;">{{% if data.credit_card=="JA" %}}<p> Kreditkarte</p> {{% else %}} <p><s>Kreditkarte</s></p>{{% endif %}}</td> border-collapse: collapse;">{% if pdf_data.credit_card == "JA" %}<p> Kreditkarte</p> {% else %} <p><s>Kreditkarte</s></p>{% endif %}</td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
</tr> </tr>
@ -56,7 +53,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;">{{% if data.sim=="JA" %}}<p> SIM Karte bitte aushändigen lassen</p> {{% else %}} <p><s>SIM Karte</s></p>{{% endif %}}</td> border-collapse: collapse;">{% if pdf_data.sim == "JA" %}<p> SIM Karte bitte aushändigen lassen</p> {% else %} <p><s>SIM Karte</s></p>{% endif %}</td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
</tr> </tr>
@ -64,7 +61,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"><p>Transponder Nr.</p> <strong> {{ data.transponder_id}}</strong></td> border-collapse: collapse;"><p>Transponder Nr.<strong> {{ pdf_data.transponder_id}}</strong></p></td>
<td style="text-align: center;border: 1px solid black; <td style="text-align: center;border: 1px solid black;
border-collapse: collapse;">Office</td> border-collapse: collapse;">Office</td>
</tr> </tr>
@ -80,7 +77,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;">{{% if data.pension=="JA" %}}<p> MA hat BAV Unterlagen erhalten</p> {{% else %}} <p><s>MA hat BAV Unterlagen erhalten</s></p>{{% endif %}}</td> border-collapse: collapse;">{% if pdf_data.pension == "JA" %}<p> MA hat BAV Unterlagen erhalten</p> {% else %} <p><s>MA hat BAV Unterlagen erhalten</s></p>{% endif %}</td>
<td style="text-align: center;border: 1px solid black; <td style="text-align: center;border: 1px solid black;
border-collapse: collapse;">HR</td> border-collapse: collapse;">HR</td>
</tr> </tr>
@ -88,7 +85,7 @@
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"><p>Sonstiges: {{ data.miscenalleous }}</p></td> border-collapse: collapse;"><p>{% if pdf_data.miscellaneous %}<strong>Sonstiges:</strong> {{ pdf_data.miscellaneous }} {% else %} <s>Sonstiges</s>{% endif %}</p></td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
</tr> </tr>
@ -114,7 +111,7 @@
</tr> </tr>
<tr> <tr>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"> {{% if data.bahncard=="JA" %}}<i style="color:grey;">BahnCard</i> {{% else %}} <i style="color:grey;"><s>BahnCard</s></i>{{% endif %}}</td> border-collapse: collapse;"> {% if pdf_data.bahncard == "JA" %}<i style="color:grey;">BahnCard</i> {% else %} <i style="color:grey;"><s>BahnCard</s></i>{% endif %}</td>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;text-align: center;"> <i style="color:grey;">falls vorhanden, kann diese behalten werden, da sie ausläuft</i></td> border-collapse: collapse;text-align: center;"> <i style="color:grey;">falls vorhanden, kann diese behalten werden, da sie ausläuft</i></td>
</tr> </tr>
@ -127,7 +124,7 @@
<tr> <tr>
<td style="border: 1px solid black; <td style="border: 1px solid black;
border-collapse: collapse;"> <p><strong>Rückgabe:</strong> Hiermit bestätige ich die vollständige Übergabe aller mir zur Verfügung gestellten Arbeitsmittel im gepflegten und funktionstüchtigen Zustand. Ich habe die Benutzung durch Dritte - sofern es sich nicht um betriebseigene Mitarbeitende handelt - nicht gestattet. Außerdem bestätige ich hiermit die vollumfängliche Zusicherung der Einhaltung der allgemeinen Vertraulichkeitserklärung/Datenschutzerklärung, sowie die Einhaltung der Verschwiegenheitsvereinbarung aus dem Arbeitsvertrag. </p> border-collapse: collapse;"> <p><strong>Rückgabe:</strong> Hiermit bestätige ich die vollständige Übergabe aller mir zur Verfügung gestellten Arbeitsmittel im gepflegten und funktionstüchtigen Zustand. Ich habe die Benutzung durch Dritte - sofern es sich nicht um betriebseigene Mitarbeitende handelt - nicht gestattet. Außerdem bestätige ich hiermit die vollumfängliche Zusicherung der Einhaltung der allgemeinen Vertraulichkeitserklärung/Datenschutzerklärung, sowie die Einhaltung der Verschwiegenheitsvereinbarung aus dem Arbeitsvertrag. </p>
<p style="color:blue;"><strong>Handover:</strong> I hereby confirm the complete handover of all work equipment provided to me in a well-maintained and functional condition. I have not permitted the use by third parties - unless they are employees of Wikimedia. Furthermore, I hereby confirm the full assurance of compliance with the general confidentiality declaration/data protection declaration, as well as compliance with the confidentiality agreement from the employment contract. </p> <p style="color:blue;"><strong>Handover:</strong> I hereby confirm the complete handover of all work equipment provided to me in a well-maintained and functional condition. I have not permitted the use by third parties - unless they are employees of Wikimedia. Furthermore, I hereby confirm the full assurance of compliance with the general confidentiality declaration/pdf_data protection declaration, as well as compliance with the confidentiality agreement from the employment contract. </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
@ -160,5 +157,5 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</body>
{% endif %} </html>

View File

@ -43,6 +43,26 @@ def change_process(wizard):
# print('CHANGE PROZESS') # print('CHANGE PROZESS')
return not long_process(wizard) return not long_process(wizard)
def beautify_data_pdf(data):
# Function for displaying the form items in correct order for handover pdf
hardware = data.get('hardware', [])
choices_dict = dict(ITForm.base_fields['hardware'].choices)
selected_hardware = [choices_dict[val] for val in hardware]
return {
'firstname': data.get('firstname', ''),
'lastname': data.get('lastname', ''),
'laptop_id': data.get('laptop_id', ''),
'hardware': selected_hardware,
'mobile': data.get('mobile', ''),
'credit_card': data.get('credit_card', ''),
'sim': data.get('sim', ''),
'transponder_id': data.get('transponder_id', ''),
'pension': data.get('pension', ''),
'miscellaneous': data.get('miscellaneous', ''),
'bahncard': data.get('bahncard', ''),
}
class EvaFormView(LoginRequiredMixin, CookieWizardView): class EvaFormView(LoginRequiredMixin, CookieWizardView):
template_name = 'austritt/employee_form.html' template_name = 'austritt/employee_form.html'
@ -88,15 +108,23 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
'choice_string': TYPE_CHOICES[self.choice], 'choice_string': TYPE_CHOICES[self.choice],
'TESTMODE': testmode}) 'TESTMODE': testmode})
# six steps for testing purposes ONLY!!
# deliver context for forms if we are in the last step # deliver context for forms if we are in the last step
if (self.steps.step1 == 5 or (self.choice != 'IN' and self.steps.step1 == 5)): if (self.steps.step1 == 6 or (self.choice != 'IN' and self.steps.step1 == 6)):
context.update({'data': self.beautify_data(self.get_all_cleaned_data()), context.update({'data': self.beautify_data(self.get_all_cleaned_data()),
'datatable': 1,}) 'datatable': 1,})
if (self.steps.step1 == 5):
context.update({'pdf_data': beautify_data_pdf(self.get_all_cleaned_data()),
})
return context return context
def get_pdf_data(self, form, **kwargs): def get_pdf_data(self, form, **kwargs):
'''this method is called to give context data to the template'''
#print('GETCONTEXT') #print('GETCONTEXT')
context = super().get_pdf_data(form=form, **kwargs) context = super().get_pdf_data(form=form, **kwargs)
@ -111,6 +139,7 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
'datatable': 2,}) 'datatable': 2,})
return context return context
def get_form_instance(self,step): def get_form_instance(self,step):
''' this method assures, that we use the same model instance for all steps''' ''' this method assures, that we use the same model instance for all steps'''
@ -232,29 +261,4 @@ class EvaFormView(LoginRequiredMixin, CookieWizardView):
return newdata return newdata
def beautify_data_pdf(self, data):
''' # use long form for contextdata instead of short form if available
#
# ATTENTION!
# This implementation works only for unique keys over all of these dicts from model.py
#
'''
# handling multiselect field for hardware beforehand
hardware = data.get("hardware", [])
choices_dict = dict(self.form_class.base_fields["hardware"].choices)
selected_hardware = [choices_dict[val] for val in hardware]
return {
"firstname": data.get("firstname"),
"lastname": data.get("lastname"),
"laptop_id": data.get("laptop_id"),
"hardware": ", ".join(selected_hardware),
"mobile": data.get("mobile"),
"credit_card": data.get("credit_card"),
"sim": data.get("sim"),
"transponder_id": data.get("transponder_id"),
"pension": data.get("pension"),
"miscellaneous": data.get("miscellaneous"),
"bahncard": data.get("bahncard"),
}