diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue b/aleksis/apps/alsijil/frontend/components/coursebook/CoursebookPrintDialog.vue index b69ab14f62efeb404a75add394701dbe47f167a9..6fd2fc6742ae79dc3945dd5ec9085771a8ee278c 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 a157cb1bbf3d18f9ac78fb63b7f5685d2b84b6e5..03b8dec4843fa8b3a1f123399b6f3eb86ed5d058 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 c7465fc55cd1491fd347ae9d76efc9e7f4dfd1e4..b03ac2cb3e4d63b581701466e1e541bc108ecd3d 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 6376e570d8497dbd72548d889d774c09abf8fdcc..776493de4ebc27a8c56d64fed8ec1af17c1a00b5 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."),