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

PDF is now correctly generated, dont forget to change image_path for production in views.py!!

This commit is contained in:
Marike Voßbeck 2026-03-18 13:27:31 +01:00
parent a10b271a00
commit 47888b0c23
2 changed files with 72 additions and 45 deletions

View File

@ -1,27 +1,44 @@
{% load i18n %}
{% load static %}
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
</head> </head>
<body> <body style="font-size: smaller;font-family: 'Times New Roman', Times, serif;">
<h2>Übergabedokument von Arbeitsmitteln: {{ pdf_data.firstname }} {{ pdf_data.lastname }}</h2>
<h2 style="color:blue;">Handover sheet of work equipment: </h2> <!-- Überschriftentabelle -->
<table style="width: 95%; ">
<tr>
<td style="width: 65%; vertical-align: bottom;font-size: large;">
<strong>Übergabedokument von Arbeitsmitteln/</strong><br/>
<strong style="color: blue;">Handover sheet of work equipment</strong>
</td>
<td style="width: 35%; text-align: right; vertical-align: bottom;font-size:large;">
<img src="{{ image_path}}" style="display: block; margin-left: auto; width: 100px; height: 100px;"/><br/>
<strong>{{ pdf_data.firstname }} {{ pdf_data.lastname }}</strong>
</td>
</tr>
</table>
<p style="margin: 2px; padding: 0px; font-size: 1px;">&#160;</p>
<!-- Haupttabelle -->
<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%; ">
<tbody> <tbody>
<tr style="background-color: #d1cfcfb5;"> <tr style="background-color: #d1cfcf;">
<th style="border: 1px solid black; <th style="border: 1px solid black;
border-collapse: collapse;">[X]</th> border-collapse: collapse; width: 5%; text-align: center;">[X]</th>
<th style="border: 1px solid black; <th style="border: 1px solid black;
border-collapse: collapse;"><strong>Ausstattung/</strong><strong style="color:blue;">Equipment</strong></th> border-collapse: collapse;width: 75%; text-align: center;"><strong>Ausstattung/</strong><br><strong style="color:blue;">Equipment</strong></th>
<th style="border: 1px solid black; <th style="border: 1px solid black;
border-collapse: collapse;"><strong>Weitergabe an/</strong><strong style="color:blue;">Handover to</strong></th> border-collapse: collapse;width: 20%; text-align: center;padding: 4px;"><strong>Weitergabe an/</strong><br><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 pdf_data.laptop_id %} {{pdf_data.laptop_id}} {% else %} ID nicht bekannt {% endif %} </strong></p> </td> border-collapse: collapse;padding: 4px 4px;text-align: center;"><p>Laptop + Ladekabel <strong> {% if pdf_data.laptop_id %}Nr. {{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>
@ -29,7 +46,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 ({% if pdf_data.hardware %}{% for item in pdf_data.hardware %}{{ item }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}Keine Hardware {% endif %})</p></td> border-collapse: collapse;padding: 4px 4px;text-align: center;"><p>Home-Office Geräte ({% if pdf_data.hardware %}{% for item in pdf_data.hardware %}<strong>{{ item }}{% if not forloop.last %}, {% endif %}</strong>{% endfor %}{% else %}<i>Keine Hardware </i>{% 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>
@ -37,15 +54,15 @@
<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 pdf_data.mobile == "JA" %}<p> Mobiltelefon (ID nicht angegeben)</p> {% else %} <p><s>Mobiltelefon</s></p>{% endif %}</td> border-collapse: collapse;padding: 4px 4px;text-align: center;">{% if pdf_data.mobile == "JA" %}<p> Mobiltelefon <i>(ID nicht angegeben)</i></p> {% else %} <p><s>Mobiltelefon</s></p>{% endif %}</td>
<td style="text-align: center;border: 1px solid black; <td style="padding: 4px 4px;text-align: center;border: 1px solid black;
border-collapse: collapse;">IT</td> border-collapse: collapse;">IT</td>
</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;">{% if pdf_data.credit_card == "JA" %}<p> Kreditkarte</p> {% else %} <p><s>Kreditkarte</s></p>{% endif %}</td> border-collapse: collapse;padding: 4px 4px;text-align: center;">{% 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>
@ -53,7 +70,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 pdf_data.sim == "JA" %}<p> SIM Karte bitte aushändigen lassen</p> {% else %} <p><s>SIM Karte</s></p>{% endif %}</td> border-collapse: collapse;padding: 4px 4px;text-align: center;">{% 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>
@ -61,99 +78,105 @@
<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.<strong> {{ pdf_data.transponder_id}}</strong></p></td> border-collapse: collapse;padding: 4px 4px;text-align: center;"><p>Transponder <strong>Nr. {{ pdf_data.transponder_id}}</strong></p></td>
<td style="text-align: center;border: 1px solid black; <td style="padding: 4px 4px;text-align: center;border: 1px solid black;
border-collapse: collapse;">Office</td> border-collapse: collapse;">Office</td>
</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>Rollcontainer-Schlüssel: Abgabe oder im Rollcontainer gelassen</p> </td> border-collapse: collapse;padding: 4px 4px;text-align: center;"><p>Rollcontainer-Schlüssel: Abgabe oder im Rollcontainer gelassen</p> </td>
<td style="text-align: center;border: 1px solid black; <td style="padding: 4px 4px;text-align: center;border: 1px solid black;
border-collapse: collapse;">Office</td> border-collapse: collapse;">Office</td>
</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;">{% if pdf_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;padding: 4px 4px;text-align: center;">{% 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="padding: 4px 4px;text-align: center;border: 1px solid black;
border-collapse: collapse;">HR</td> border-collapse: collapse;">HR</td>
</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>{% if pdf_data.miscellaneous %}<strong>Sonstiges:</strong> {{ pdf_data.miscellaneous }} {% else %} <s>Sonstiges</s>{% endif %}</p></td> border-collapse: collapse;padding: 4px 4px;"><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>
<tr> <tr>
<td colspan="2"><p><strong>BVG-Firmenticket</strong> ist bei Austritt bis 23:59 Uhr des Monatsletzten gültig. <td colspan="2" style="padding: 4px 4px;"><p><strong>BVG-Firmenticket</strong> ist bei Austritt bis 23:59 Uhr des Monatsletzten gültig.
Es kann dann entsorgt werden.</p> Es kann dann entsorgt werden.</p>
<p style="color:blue;"><strong>BVG company ticket</strong> BVG company ticket is valid until 23:59 on the last day of the month. <p style="color:blue;"><strong>BVG company ticket</strong> BVG company ticket is valid until 23:59 on the last day of the month.
It can then be discarded. It can then be discarded.
</p></td> </p></td>
<td style="text-align: center;border: 1px solid black; <td style="padding: 4px 4px;text-align: center;border: 1px solid black;
border-collapse: collapse;"></td> border-collapse: collapse;"></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<br /><br />
<p style="margin: 2px; padding: 0px; font-size: 2px;">&#160;</p>
<!-- Sonstige Vereinbarungen-->
<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%; ">
<tbody> <tbody>
<tr> <tr>
<th colspan="2", style="border: 1px solid black; <th colspan="2", style="padding: 4px;text-align: center; border: 1px solid black;
border-collapse: collapse; background-color: #d1cfcfb5; "><strong>Sonstige Vereinbarungen/</strong><strong style="color:blue;">Other agreements</strong> border-collapse: collapse; background-color: #d1cfcf; "><strong>Sonstige Vereinbarungen/</strong><br><strong style="color:blue;">Other agreements</strong>
</th> </th>
</tr> </tr>
<tr> <tr>
<td style="border: 1px solid black; <td style="border: 1px solid black;
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> border-collapse: collapse;padding: 4px 4px;text-align: center;"> {% 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;padding: 4px 4px;text-align: center;"> {% if pdf_data.bahncard == "JA" %}<i style="color:grey;">falls vorhanden, kann diese behalten werden, da sie ausläuft</i> {% else %} <i style="color:grey;"><s>falls vorhanden, kann diese behalten werden, da sie ausläuft</s></i>{% endif %}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<br /><br />
<p style="margin: 2px; padding: 0px; font-size: 2px;">&#160;</p>
<!--Rückgabebestätigung -->
<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%; ;">
<tbody> <tbody>
<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; padding: 4px 4px;"> <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/pdf_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/data protection declaration, as well as compliance with the confidentiality agreement from the employment contract. </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<br /><br />
<p style="margin: 2px; padding: 0px; font-size: 4px;">&#160;</p>
<!-- Unterschriften -->
<table class="center", style="border: 1px solid white; <table class="center", style="border: 1px solid white;
border-collapse: collapse; width:90%;"> border-collapse: collapse; width:90%;">
<tbody> <tbody>
<tr > <tr >
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;"> <strong>Berlin</strong>, ________________</td> border-collapse: collapse;padding: 2px 2px;"> <strong>Berlin</strong>, ________________</td>
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;">____________________</td> border-collapse: collapse;padding: 2px 2px;">____________________</td>
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;">____________________________________</td> border-collapse: collapse;padding: 2px 2px;">____________________________________</td>
</tr> </tr>
<tr> <tr>
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;"> </td> border-collapse: collapse;padding: 2px 2px;"> </td>
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;">entgegengenommen von</td> border-collapse: collapse;padding: 2px 2px;">entgegengenommen von</td>
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;">Unterschrift ehem. Mitarbeitenden</td> border-collapse: collapse;padding: 2px 2px;">Unterschrift ehem. mitarbeitende Person</td>
</tr> </tr>
<tr> <tr>
<td style="border: 1px solid white; <td style="border: 1px solid white;
border-collapse: collapse;"> </td> border-collapse: collapse;padding: 2px 2px;"> </td>
<td style="color:blue;">received by</td> <td style="color:blue;padding: 1px 1px;">received by</td>
<td style="color:blue;">Signature of leaving employee</td> <td style="color:blue;padding: 1px 1px;">Signature of leaving employee</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@ -2,6 +2,7 @@ from smtplib import SMTPException
import collections import collections
from xhtml2pdf import pisa from xhtml2pdf import pisa
from django.views.generic.edit import CreateView from django.views.generic.edit import CreateView
from django.views import View from django.views import View
from django.urls import reverse from django.urls import reverse
@ -255,8 +256,11 @@ class PDFPreviewView(LoginRequiredMixin, View):
#getting names for pdf file naming #getting names for pdf file naming
firstname = pdf_data.get('firstname') firstname = pdf_data.get('firstname')
lastname = pdf_data.get('lastname') lastname = pdf_data.get('lastname')
#hardcoded imagepath => change for production!!!
context ={'pdf_data': pdf_data} context ={
'pdf_data': pdf_data,
'image_path': '/home/marike.vossbeck/eva/austritt/static/evapp/logo.png'
}
html_string =render_to_string('austritt/pdf_template.html', context) html_string =render_to_string('austritt/pdf_template.html', context)
response = HttpResponse(content_type='application/pdf') response = HttpResponse(content_type='application/pdf')
response['Content-Disposition']=f'inline; filename="Rueckgabe_Arbeitsmittel_{firstname}_{lastname}.pdf"' response['Content-Disposition']=f'inline; filename="Rueckgabe_Arbeitsmittel_{firstname}_{lastname}.pdf"'