feat(members/pdf): improve handling of long tables (#135)

closes #128

Reviewed-on: #135
Reviewed-by: Christian Merten <christian@merten.dev>
Co-authored-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
Co-committed-by: marius.klein <marius.klein@alpenverein-heidelberg.de>
pull/137/head
marius.klein 10 months ago committed by Christian Merten
parent 7a9c6f9d85
commit 308d9f3114

@ -365,6 +365,14 @@ class Member(Person):
else:
return "{0}, {1}".format(self.street, self.place)
@property
def address_multiline(self):
"""Returning the whole address with a linebreak between street and town"""
if not self.street and not self.town and not self.plz:
return "---"
else:
return "{0},\\linebreak[1] {1}".format(self.street, self.place)
def good_conduct_certificate_valid(self):
"""Returns if a good conduct certificate is still valid, depending on the last presentation."""
if not self.good_conduct_certificate_presented_date:

@ -10,7 +10,7 @@
\usepackage{textpos}
\usepackage[colorlinks, breaklinks]{hyperref}
\usepackage{float}
\usepackage[margin=1in]{geometry}
\usepackage[margin=2cm]{geometry}
\usepackage{array}
\usepackage{tabularx}
\usepackage{ltablex}
@ -34,7 +34,9 @@
\renewcommand{\arraystretch}{1.5}
\newcolumntype{L}{>{\hspace{0pt}}X}
\newcolumntype{L}{>{\hspace{0pt}\raggedright\arraybackslash}X}
\newcolumntype{S}{>{\raggedright\arraybackslash\hsize=0.7\hsize}X}
\newcommand{\tickedbox}{
\makebox[0pt][l]{$\square$}\raisebox{.15ex}{\hspace{0.1em}$\checkmark$}
}
@ -43,8 +45,8 @@
}
\begin{document}
% HEADER RIGHT
\picpos{4.5cm}{11.5cm}{0cm}{/app/jdav_web/static/general/img/dav_logo_sektion.png}
\begin{textblock*}{5cm}(11.5cm, 2.3cm)
\picpos{4.5cm}{12cm}{0cm}{/app/jdav_web/static/general/img/dav_logo_sektion.png}
\begin{textblock*}{5cm}(12cm, 2.3cm)
\begin{flushright}
\small
\noindent Deutscher Alpenverein e. V. \\
@ -80,21 +82,25 @@
\end{tabular}
\end{table}
\begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}llLlLL}
\toprule
& \textbf{Name} & \textbf{Anschrift} & \textbf{Telefon} & \textbf{Notfallkontakte} \\
\midrule
{% for m in memberlist.membersonlist.all %}
{{ forloop.counter }} &
{{ m.member.name|esc_all }} &
{{ m.member.address|esc_all }} &
{{ m.member.contact_phone_number|esc_all }} &
{% for c in m.member.emergencycontact_set.all %}
{{ c.name|esc_all }} \newline
Tel.: {{ c.phone_number|esc_all }}
{% endfor %} \\
{% endfor %}
\bottomrule
\begin{tabularx}{1\linewidth}{lSLSL}
\toprule
\# & \textbf{Name} & \textbf{Anschrift} & \textbf{Telefon} & \textbf{Notfallkontakte} \\
\midrule
\endhead
\bottomrule
\endfoot
{% for m in memberlist.membersonlist.all %}
{{ forloop.counter }} &
{{ m.member.name|esc_all }} &
{{ m.member.address_multiline|esc_all }} &
{{ m.member.contact_phone_number|esc_all }} &
{% for c in m.member.emergencycontact_set.all %}
{{ c.name|esc_all }} \newline
Tel.: {{ c.phone_number|esc_all }}
{% endfor %} \\
{% endfor %}
\end{tabularx}
\vspace{1cm}

@ -13,10 +13,11 @@
\usepackage[colorlinks]{hyperref}
\usepackage{float}
\usepackage[margin=1cm]{geometry}
\usepackage{ltablex}
\renewcommand{\arraystretch}{1.5}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}p{0.4\linewidth}}
\begin{document}
% HEADLINE
@ -35,17 +36,16 @@
\end{tabular}
\end{table}
\begin{table}[H]
\begin{tabularx}{\textwidth}{@{} l l l Y @{}}
\begin{tabularx}{1\linewidth}{ l l l Y}
\toprule
& \textbf{Name} & \textbf{Fähigkeiten (max. 100)} & \textbf{Kommentare} \\
\# & \textbf{Name} & \textbf{Fähigkeiten (max. 100)} & \textbf{Kommentare} \\
\midrule
{% for p in people %}
{{ forloop.counter }} & {{ p.name|esc_all }} & {{ p.qualities|esc_all }} & {{ p.comments|esc_all }} \\
{% endfor %}
\bottomrule
\end{tabularx}
\end{table}
\end{tabularx}
\noindent\large Fähigkeiten der Gruppe\\
\begin{table}[H]

@ -15,6 +15,7 @@
\usepackage{ragged2e}
\usepackage{tabularx}
\usepackage{titlesec}
\usepackage{ltablex}
\titleformat{\section}
{\Large\slshape}{\thesection\;}
@ -41,6 +42,7 @@
\newcolumntype{L}{>{\hspace{0pt}}X}
\newcolumntype{Y}{>{\RaggedRight\arraybackslash}X}
\newcommand{\tickedbox}{
\makebox[0pt][l]{$\square$}\raisebox{.15ex}{\hspace{0.1em}$\checkmark$}
}
@ -122,38 +124,38 @@
\section{Teilnehmer*innenliste}
\begin{table}[H]
\begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}llLl|c|c|c}
\begin{tabularx}{1\linewidth}{p{0.01\linewidth}>{\RaggedRight\arraybackslash}p{0.22\linewidth}>{\RaggedRight\arraybackslash}p{0.38\linewidth}p{0.14\linewidth}|c|c|c}
\hline
\# & \textbf{Name} & \textbf{Anschrift} & \textbf{Geburtsdatum} & \textbf{m} & \textbf{w} & \textbf{d} \\
\hline
& \textbf{Name} & \textbf{Anschrift} & \textbf{Geburtsdatum} & \textbf{m} & \textbf{w} & \textbf{d} \\ \hline
%\midrule
\endhead
\hline
\endfoot
{% for m in memberlist.membersonlist.all %}
{{ forloop.counter }} & {{ m.member.name|esc_all }} & {{ m.member.address|esc_all }} & {{ m.member.birth_date_str|esc_all }}
& {% if m.member.gender == 0 %} x {% endif %}
& {% if m.member.gender == 1 %} x {% endif %}
& {% if m.member.gender == 2 %} x {% endif %} \\
{% endfor %}
%\bottomrule
\end{tabularx}
\end{table}
\end{tabularx}
{% if memberlist.statement %}
\section{Kosten}
\begin{table}[H]
\begin{tabularx}{1\linewidth}{@{}L r @{}}
\begin{tabularx}{1\linewidth}{@{\extracolsep{\fill}}Lr}
\toprule
\textbf{Beschreibung} & \textbf{Betrag} \\
\midrule
{% if memberlist.statement.total_allowance > 0 %}
Aufwandsentschädigung & {{ memberlist.statement.total_allowance }}\\
{% endif %}
{% for bill in memberlist.statement.grouped_bills %}
{{ bill.short_description|esc_all }} & {{ bill.amount }}\\
{% endfor %}
\bottomrule
Gesamt & {{ memberlist.statement.total_theoretic }}\\
\end{tabularx}
\end{table}
\end{tabularx}
{% endif %}

Loading…
Cancel
Save