From fbbc2e7953c6d78c1abd1445ca678c8b8a961ed7 Mon Sep 17 00:00:00 2001 From: Michael Bauer <michael-bauer@posteo.de> Date: Thu, 24 Oct 2024 12:07:06 +0200 Subject: [PATCH] Wire register_for_group to url and thread parameters through It's now reachable under coursebook/print/group/id --- aleksis/apps/alsijil/frontend/index.js | 8 ++++++++ aleksis/apps/alsijil/tasks.py | 16 ++++++++++++++-- aleksis/apps/alsijil/urls.py | 5 +++++ aleksis/apps/alsijil/views.py | 21 ++++++++++++++++----- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js index 47a85edf5..8af9024f8 100644 --- a/aleksis/apps/alsijil/frontend/index.js +++ b/aleksis/apps/alsijil/frontend/index.js @@ -62,6 +62,14 @@ export default { fullWidth: true, }, }, + { + path: "print/group/:groupId/", + component: () => import("aleksis.core/components/LegacyBaseTemplate.vue"), + name: "alsijil.coursebook_print", + props: { + byTheGreatnessOfTheAlmightyAleksolotlISwearIAmWorthyOfUsingTheLegacyBaseTemplate: true, + }, + }, ], }, { diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py index a7020dc10..72fc90353 100644 --- a/aleksis/apps/alsijil/tasks.py +++ b/aleksis/apps/alsijil/tasks.py @@ -1,3 +1,5 @@ +from typing import Optional + from copy import deepcopy from datetime import date, timedelta @@ -16,8 +18,18 @@ from .models import ExtraMark @recorded_task -def generate_full_register_printout(group: int, file_object: int, recorder: ProgressRecorder): - """Generate a full register printout as PDF for a group.""" +def generate_full_register_printout( + group: int, + file_object: int, + recorder: ProgressRecorder, + include_cover: Optional[bool] = True, + include_abbreviations: Optional[bool] = True, + include_members_table: Optional[bool] = True, + include_teachers_and_subjects_table: Optional[bool] = True, + include_person_overviews: Optional[bool] = True, + include_coursebook: Optional[bool] = True +): + """Generate a configurable register printout as PDF for a group.""" context = {} _number_of_steps = 8 diff --git a/aleksis/apps/alsijil/urls.py b/aleksis/apps/alsijil/urls.py index cd7367ce8..72445e60b 100644 --- a/aleksis/apps/alsijil/urls.py +++ b/aleksis/apps/alsijil/urls.py @@ -3,6 +3,11 @@ from django.urls import path from . import views urlpatterns = [ + path( + "coursebook/print/group/<int:id_>", + views.register_for_group, + name="register_for_group" + ), path("group_roles/", views.GroupRoleListView.as_view(), name="group_roles"), path("group_roles/create/", views.GroupRoleCreateView.as_view(), name="create_group_role"), path( diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index 75f0e1b06..9ba39738f 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -1,4 +1,4 @@ -from typing import Any, Dict +from typing import Any, Dict, Optional from django.db.models import Q from django.http import HttpRequest, HttpResponse @@ -42,7 +42,9 @@ from .tasks import generate_full_register_printout @permission_required( "alsijil.view_full_register_rule", fn=objectgetter_optional(Group, None, False) ) -def full_register_group(request: HttpRequest, id_: int) -> HttpResponse: +def register_for_group(request: HttpRequest, id_: int) -> HttpResponse: + """Show a configurable register printout as PDF for a group.""" + group = get_object_or_404(Group, pk=id_) file_object = PDFFile.objects.create() @@ -52,7 +54,16 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse: redirect_url = f"/pdfs/{file_object.pk}" - result = generate_full_register_printout.delay(group.pk, file_object.pk) + result = generate_full_register_printout.delay( + group=group.pk, + file_object=file_object.pk, + include_cover=request.GET.get("cover", True), + include_abbreviations=request.GET.get("abbreviations", True), + include_members_table=request.GET.get("members_table", True), + include_teachers_and_subjects_table=request.GET.get("teachers_and_subjects_table", True), + include_person_overviews=request.GET.get("person_overviews", True), + include_coursebook=request.GET.get("coursebook", True) + ) back_url = request.GET.get("back", "") back_url_is_safe = url_has_allowed_host_and_scheme( @@ -66,8 +77,8 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse: return render_progress_page( request, result, - title=_("Generate full register printout for {}").format(group), - progress_title=_("Generate full register printout …"), + title=_("Generate register printout for {}").format(group), + progress_title=_("Generate register printout …"), success_message=_("The printout has been generated successfully."), error_message=_("There was a problem while generating the printout."), redirect_on_success_url=redirect_url, -- GitLab