diff --git a/aleksis/apps/alsijil/frontend/index.js b/aleksis/apps/alsijil/frontend/index.js index 47a85edf511cdcd6dd4a0b43ff4ef013e4924f25..8af9024f8ea4d470224a10f6e15eded692469386 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 a7020dc103961fb9792221b925afc6f5453f18a4..72fc90353d9934d2d4c5b307b2cec1fad03c14ef 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 cd7367ce84973bb4eb62791e9ce5b2c7eb3a5f85..72445e60bac3e2a8992fce6495f5dbb1b31bf0d3 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 75f0e1b06d6dfe14380047fe8a6d1221109bcf21..9ba39738fd49b08e8c92909d48207a34ffea0d45 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,