From ebfe03d1b32fb494387204f3f4eb2a3df112ca7f Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Tue, 5 Nov 2024 11:18:20 +0100 Subject: [PATCH] Make frontend & route handle list of groups --- .../components/coursebook/CoursebookPrintDialog.vue | 3 +-- aleksis/apps/alsijil/frontend/index.js | 2 +- aleksis/apps/alsijil/urls.py | 2 +- aleksis/apps/alsijil/views.py | 10 ++++++---- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue index b69ab14f6..6fd2fc674 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue @@ -136,8 +136,7 @@ export default { this.$router.push({ name: "alsijil.coursebook_print", params: { - // TODO: Send & handle more than one group! - groupId: this.selectedGroups[0], + groupIds: this.selectedGroups, }, query: { cover: this.includeCover, diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js index a157cb1bb..03b8dec48 100644 --- a/aleksis/apps/alsijil/frontend/index.js +++ b/aleksis/apps/alsijil/frontend/index.js @@ -80,7 +80,7 @@ export default { ], }, { - path: "print/group/:groupId/", + path: "print/groups/:groupIds+/", component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), name: "alsijil.coursebook_print", props: { diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py index c7465fc55..b03ac2cb3 100644 --- a/aleksis/apps/alsijil/urls.py +++ b/aleksis/apps/alsijil/urls.py @@ -4,7 +4,7 @@ from . import views urlpatterns = [ path( - "print/group/<int:id_>/", + "print/groups/<path:ids>/", views.full_register_for_group, name="full_register_for_group" ), diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 6376e570d..776493de4 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -42,10 +42,12 @@ from .tasks import generate_full_register_printout @permission_required( "alsijil.view_full_register_rule", fn=objectgetter_optional(Group, None, False) ) -def full_register_for_group(request: HttpRequest, id_: int) -> HttpResponse: +def full_register_for_group(request: HttpRequest, ids: str) -> HttpResponse: """Show a configurable register printout as PDF for a group.""" - group = get_object_or_404(Group, pk=id_) + ids = [int(id_) for id_ in ids.split("/")] + + groups = [get_object_or_404(Group, pk=id_) for id_ in ids] file_object = PDFFile.objects.create() if has_person(request): @@ -55,7 +57,7 @@ def full_register_for_group(request: HttpRequest, id_: int) -> HttpResponse: redirect_url = f"/pdfs/{file_object.pk}" result = generate_full_register_printout.delay( - group=group.pk, + groups=ids, file_object=file_object.pk, include_cover=request.GET.get("cover", True), include_abbreviations=request.GET.get("abbreviations", True), @@ -77,7 +79,7 @@ def full_register_for_group(request: HttpRequest, id_: int) -> HttpResponse: return render_progress_page( request, result, - title=_("Generate register printout for {}").format(group), + title=_(f"Generate register printout for {', '.join([group.short_name for group in groups])}"), progress_title=_("Generate register printout …"), success_message=_("The printout has been generated successfully."), error_message=_("There was a problem while generating the printout."), -- GitLab