From 1d2f0c152fe4d9f35927dcfd982b515e4f2a0f4c Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Tue, 11 Feb 2025 01:38:08 +0100 Subject: [PATCH] feat(members/admin): add excursion code to filenames and generated documents --- jdav_web/members/admin.py | 12 ++++++------ jdav_web/members/excel.py | 4 ++-- jdav_web/members/models.py | 4 ++++ .../templates/members/crisis_intervention_list.tex | 1 + jdav_web/members/templates/members/notes_list.tex | 1 + .../members/templates/members/seminar_report.tex | 1 + .../templates/members/seminar_report_docx.tex | 1 + 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/jdav_web/members/admin.py b/jdav_web/members/admin.py index f8a8005..dec6b1a 100644 --- a/jdav_web/members/admin.py +++ b/jdav_web/members/admin.py @@ -1033,7 +1033,7 @@ class MemberNoteListAdmin(admin.ModelAdmin): if not self.may_view_notelist(request, memberlist): return self.not_allowed_view(request, memberlist) context = dict(memberlist=memberlist, settings=settings) - return render_tex(memberlist.title + "_Zusammenfassung", 'members/notelist_summary.tex', context) + return render_tex(f"{memberlist.title}_Zusammenfassung", 'members/notelist_summary.tex', context) summary.short_description = _('Generate PDF summary') @@ -1126,7 +1126,7 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin): if not self.may_view_excursion(request, memberlist): return self.not_allowed_view(request, memberlist) context = dict(memberlist=memberlist, settings=settings) - return render_tex(memberlist.name + "_Krisenliste", 'members/crisis_intervention_list.tex', context) + return render_tex(f"{memberlist.code}_{memberlist.name}_Krisenliste", 'members/crisis_intervention_list.tex', context) crisis_intervention_list.short_description = _('Generate crisis intervention list') def notes_list(self, request, memberlist): @@ -1134,7 +1134,7 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin): return self.not_allowed_view(request, memberlist) people, skills = memberlist.skill_summary context = dict(memberlist=memberlist, people=people, skills=skills, settings=settings) - return render_tex(memberlist.name + "_Notizen", 'members/notes_list.tex', context) + return render_tex(f"{memberlist.code}_{memberlist.name}_Notizen", 'members/notes_list.tex', context) notes_list.short_description = _('Generate overview') @decorate_download @@ -1146,13 +1146,13 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin): def download_seminar_report_docx(self, request, memberlist): title = memberlist.ljpproposal.title context = dict(memberlist=memberlist, settings=settings) - return render_docx(title + '_Seminarbericht', 'members/seminar_report_docx.tex', context) + return render_docx(f"{memberlist.code}_{title}_Seminarbericht", 'members/seminar_report_docx.tex', context) @decorate_download def download_seminar_report_costs_and_participants(self, request, memberlist): title = memberlist.ljpproposal.title context = dict(memberlist=memberlist, settings=settings) - return render_tex(title + '_Seminarbericht', 'members/seminar_report.tex', context) + return render_tex(f"{memberlist.code}_{title}_TN_Kosten", 'members/seminar_report.tex', context) def seminar_report(self, request, memberlist): if not self.may_view_excursion(request, memberlist): @@ -1199,7 +1199,7 @@ class FreizeitAdmin(CommonAdminMixin, nested_admin.NestedModelAdmin): context = memberlist.sjr_application_fields() title = memberlist.ljpproposal.title if hasattr(memberlist, 'ljpproposal') else memberlist.name - return fill_pdf_form(title + "_SJR_Antrag", 'members/sjr_template.pdf', context, selected_attachments) + return fill_pdf_form(f"{memberlist.code}_{title}_SJR_Antrag", 'members/sjr_template.pdf', context, selected_attachments) return self.render_sjr_options(request, memberlist, GenerateSjrForm(attachments=attachments)) diff --git a/jdav_web/members/excel.py b/jdav_web/members/excel.py index 3f4c154..92d0051 100644 --- a/jdav_web/members/excel.py +++ b/jdav_web/members/excel.py @@ -111,7 +111,7 @@ def generate_ljp_vbk(excursion): sheet['B6'] = settings.SEKTION_TOWN sheet['B7'] = settings.RESPONSIBLE_MAIL sheet['B36'] = f"{settings.SEKTION}, {datetime.today():%d.%m.%Y}" - sheet['F19'] = f"B {excursion.date:%y}-{excursion.pk}" + sheet['F19'] = excursion.code sheet['C19'] = LJP_GOALS[excursion.ljpproposal.goal] if excursion.ljpproposal.goal in LJP_GOALS else "" sheet['D19'] = settings.SEKTION sheet['G19'] = title @@ -126,6 +126,6 @@ def generate_ljp_vbk(excursion): if hasattr(excursion, 'statement'): sheet['Q19'] = f"{excursion.statement.total_theoretic}" - filename = f"LJP_V-BK_3.{excursion.ljpproposal.category}_{title}.xlsx" + filename = f"{excursion.code}_{title}_LJP_V-BK_3.{excursion.ljpproposal.category}.xlsx" workbook.save(media_path(filename)) return filename diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index 05b6999..22d4acf 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -1117,6 +1117,10 @@ class Freizeit(CommonModel): 'delete_obj': is_leader | has_global_perm('members.delete_global_freizeit'), } + @property + def code(self): + return f"B{self.date:%y}-{self.pk}" + def get_tour_type(self): if self.tour_type == FUEHRUNGS_TOUR: return "Führungstour" diff --git a/jdav_web/members/templates/members/crisis_intervention_list.tex b/jdav_web/members/templates/members/crisis_intervention_list.tex index f6e9e68..2f99039 100644 --- a/jdav_web/members/templates/members/crisis_intervention_list.tex +++ b/jdav_web/members/templates/members/crisis_intervention_list.tex @@ -65,6 +65,7 @@ \begin{table}[H] \begin{tabular}{ll} \large Aktivität: & {{ memberlist.name|esc_all }} \\ + \large Ordnungsnummer & {{ memberlist.code|esc_all }} \\ \large Gruppe: & {{ memberlist.groups_str|esc_all }} \\ \large Ort / Stützpunkt: & {{ memberlist.place|esc_all }} \\ \large ggf. Ziel: & {{ memberlist.destination|esc_all }} \\ diff --git a/jdav_web/members/templates/members/notes_list.tex b/jdav_web/members/templates/members/notes_list.tex index 6ba4322..1050d7d 100644 --- a/jdav_web/members/templates/members/notes_list.tex +++ b/jdav_web/members/templates/members/notes_list.tex @@ -27,6 +27,7 @@ \begin{table}[H] \begin{tabular}{ll} \large Aktivität: & {{ memberlist.name|esc_all }} \\ + \large Ordnungsnummer & {{ memberlist.code|esc_all }} \\ \large Gruppe: & {{ memberlist.groups_str|esc_all }} \\ \large Ort / Stützpunkt: & {{ memberlist.place|esc_all }} \\ \large ggf. Ziel: & {{ memberlist.destination|esc_all }} \\ diff --git a/jdav_web/members/templates/members/seminar_report.tex b/jdav_web/members/templates/members/seminar_report.tex index 1183bce..ee85713 100644 --- a/jdav_web/members/templates/members/seminar_report.tex +++ b/jdav_web/members/templates/members/seminar_report.tex @@ -71,6 +71,7 @@ \begin{table}[H] \begin{tabular}{ll} \large Kursname: & {% if not memberlist.ljpproposal %}{{ memberlist.name|esc_all }}{% else %}{{ memberlist.ljpproposal.title }} {% endif %} \\ + \large Ordnungsnummer & {{ memberlist.code|esc_all }} \\ \large Gruppe: & {{ memberlist.groups_str|esc_all }} \\ \large Ort / Stützpunkt: & {{ memberlist.place|esc_all }} \\ \large ggf. Ziel: & {{ memberlist.destination|esc_all }} \\ diff --git a/jdav_web/members/templates/members/seminar_report_docx.tex b/jdav_web/members/templates/members/seminar_report_docx.tex index ac72022..5995e45 100644 --- a/jdav_web/members/templates/members/seminar_report_docx.tex +++ b/jdav_web/members/templates/members/seminar_report_docx.tex @@ -31,6 +31,7 @@ \begin{tabular}{ll} \textbf{Sektion:} & {{ settings.SEKTION }} \\ \textbf{Titel der Maßnahme:} & {% if not memberlist.ljpproposal %}{{ memberlist.name|esc_all }}{% else %}{{ memberlist.ljpproposal.title }} {% endif %} \\ + \textbf{Interne Ordnungsnummer:} & {{ memberlist.code|esc_all }} \\ \textbf{Anzahl der durchgeführten Lehrgangstage:} & {{ memberlist.duration }} \\ \end{tabular} \end{table}