diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py index 6ebcb2ae2ecae7f796c67a00c36dd6e0aafcceba..d9d357b8a5d5ca587b80953c7e2fe3a2013f61f1 100644 --- a/aleksis/apps/alsijil/preferences.py +++ b/aleksis/apps/alsijil/preferences.py @@ -1,7 +1,8 @@ +from django.core.exceptions import ValidationError from django.utils.translation import gettext as _ from dynamic_preferences.preferences import Section -from dynamic_preferences.types import BooleanPreference +from dynamic_preferences.types import BooleanPreference, IntegerPreference from aleksis.core.registries import person_preferences_registry, site_preferences_registry @@ -109,3 +110,15 @@ class ShowGroupRolesInLessonView(BooleanPreference): name = "group_roles_in_lesson_view" default = True verbose_name = _("Show assigned group roles in lesson view") + + +@person_preferences_registry.register +class RegisterObjectsTableItemsPerPage(IntegerPreference): + section = alsijil + name = "register_objects_table_items_per_page" + default = 100 + verbose_name = _("Items per page in lessons table") + + def validate(self, value): + if value < 1: + raise ValidationError(_("Each page must show at least one item.")) diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py index a3b9f4e59d65041d23649b1eeb4485c0ab9b5ac4..49bb7f1107d558bb07d3d39a74370fabe45e220c 100644 --- a/aleksis/apps/alsijil/views.py +++ b/aleksis/apps/alsijil/views.py @@ -919,7 +919,10 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp register_objects = generate_list_of_all_register_objects(filter_dict) if register_objects: table = RegisterObjectTable(register_objects) - RequestConfig(request,).configure(table) # paginate={"per_page": 100} + items_per_page = request.user.person.preferences[ + "alsijil__register_objects_table_items_per_page" + ] + RequestConfig(request, paginate={"per_page": items_per_page}).configure(table) context["register_object_table"] = table return render(request, "alsijil/class_register/person.html", context) @@ -1289,7 +1292,10 @@ class AllRegisterObjectsView(PermissionRequiredMixin, View): if register_objects: self.table = RegisterObjectSelectTable(register_objects) - RequestConfig(request, paginate={"per_page": 100}).configure(self.table) + items_per_page = request.user.person.preferences[ + "alsijil__register_objects_table_items_per_page" + ] + RequestConfig(request, paginate={"per_page": items_per_page}).configure(self.table) context["table"] = self.table return context