fix(members/pdf): use excursion date instead of creation date

MK/finance_workflow
Christian Merten 8 months ago
parent 2d69483276
commit ffef3c93c3
Signed by: christian.merten
GPG Key ID: D953D69721B948B3

@ -1032,7 +1032,8 @@ 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(f"{memberlist.title}_Zusammenfassung", 'members/notelist_summary.tex', context)
return render_tex(f"{memberlist.title}_Zusammenfassung", 'members/notelist_summary.tex', context,
date=memberlist.date)
summary.short_description = _('Generate PDF summary')
@ -1125,7 +1126,9 @@ 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(f"{memberlist.code}_{memberlist.name}_Krisenliste", 'members/crisis_intervention_list.tex', context)
return render_tex(f"{memberlist.code}_{memberlist.name}_Krisenliste",
'members/crisis_intervention_list.tex', context,
date=memberlist.date)
crisis_intervention_list.short_description = _('Generate crisis intervention list')
def notes_list(self, request, memberlist):
@ -1133,7 +1136,9 @@ 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(f"{memberlist.code}_{memberlist.name}_Notizen", 'members/notes_list.tex', context)
return render_tex(f"{memberlist.code}_{memberlist.name}_Notizen",
'members/notes_list.tex', context,
date=memberlist.date)
notes_list.short_description = _('Generate overview')
@decorate_download
@ -1145,13 +1150,17 @@ 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(f"{memberlist.code}_{title}_Seminarbericht", 'members/seminar_report_docx.tex', context)
return render_docx(f"{memberlist.code}_{title}_Seminarbericht",
'members/seminar_report_docx.tex', context,
date=memberlist.date)
@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(f"{memberlist.code}_{title}_TN_Kosten", 'members/seminar_report.tex', context)
return render_tex(f"{memberlist.code}_{title}_TN_Kosten",
'members/seminar_report.tex', context,
date=memberlist.date)
def seminar_report(self, request, memberlist):
if not self.may_view_excursion(request, memberlist):
@ -1198,7 +1207,9 @@ 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(f"{memberlist.code}_{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,
date=memberlist.date)
return self.render_sjr_options(request, memberlist, GenerateSjrForm(attachments=attachments))

@ -127,7 +127,8 @@ def generate_ljp_vbk(excursion):
if hasattr(excursion, 'statement'):
sheet['Q19'] = f"{excursion.statement.total_theoretic}"
name = normalize_filename(f"{excursion.code}_{title}_LJP_V-BK_3.{excursion.ljpproposal.category}")
name = normalize_filename(f"{excursion.code}_{title}_LJP_V-BK_3.{excursion.ljpproposal.category}",
date=excursion.date)
filename = name + ".xlsx"
workbook.save(media_path(filename))
return filename

@ -20,8 +20,8 @@ def serve_pdf(filename_pdf):
return serve_media(filename_pdf, 'application/pdf')
def generate_tex(name, template_path, context):
filename = normalize_filename(name)
def generate_tex(name, template_path, context, date=None):
filename = normalize_filename(name, date=date)
filename_tex = filename + '.tex'
tmpl = get_template(template_path)
@ -34,8 +34,8 @@ def generate_tex(name, template_path, context):
return filename
def render_docx(name, template_path, context, save_only=False):
filename = generate_tex(name, template_path, context)
def render_docx(name, template_path, context, date=None, save_only=False):
filename = generate_tex(name, template_path, context, date=date)
filename_tex = filename + '.tex'
filename_docx = filename + '.docx'
oldwd = os.getcwd()
@ -48,8 +48,8 @@ def render_docx(name, template_path, context, save_only=False):
return serve_media(filename_docx, 'application/docx')
def render_tex(name, template_path, context, save_only=False):
filename = generate_tex(name, template_path, context)
def render_tex(name, template_path, context, date=None, save_only=False):
filename = generate_tex(name, template_path, context, date=date)
filename_tex = filename + '.tex'
filename_pdf = filename + '.pdf'
# compile using pdflatex
@ -99,8 +99,8 @@ def scale_pdf_to_a4(pdf):
return scaled_pdf
def fill_pdf_form(name, template_path, fields, attachments=[], save_only=False):
filename = normalize_filename(name)
def fill_pdf_form(name, template_path, fields, attachments=[], date=None, save_only=False):
filename = normalize_filename(name, date=date)
filename_pdf = filename + '.pdf'
path = find_template(template_path)
@ -140,13 +140,13 @@ def fill_pdf_form(name, template_path, fields, attachments=[], save_only=False):
return serve_pdf(filename_pdf)
def merge_pdfs(name, filenames, save_only=False):
def merge_pdfs(name, filenames, date=None, save_only=False):
merger = PdfWriter()
for pdf in filenames:
merger.append(media_path(pdf))
filename = normalize_filename(name)
filename = normalize_filename(name, date=date)
filename_pdf = filename + ".pdf"
merger.write(media_path(filename_pdf))
merger.close()

@ -72,9 +72,11 @@ def normalize_name(raw, nospaces=True, noumlaut=True):
return unicodedata.normalize('NFKD', raw).encode('ascii', 'ignore').decode('ascii')
def normalize_filename(filename, append_date=True):
if append_date:
filename = filename + "_" + datetime.today().strftime("%d_%m_%Y")
def normalize_filename(filename, append_date=True, date=None):
if append_date and not date:
date = datetime.today()
if date:
filename = filename + "_" + date.strftime("%d_%m_%Y")
filename = filename.replace(' ', '_').replace('&', '').replace('/', '_')
# drop umlauts, accents etc.
return unicodedata.normalize('NFKD', filename).encode('ASCII', 'ignore').decode()

Loading…
Cancel
Save