diff --git a/aleksis/apps/alsijil/actions.py b/aleksis/apps/alsijil/actions.py index 04681948e8f5e9d0e607fc7edf77b4520c91d003..698c61670422eccb73bc3da4ea3a7426b27efc7b 100644 --- a/aleksis/apps/alsijil/actions.py +++ b/aleksis/apps/alsijil/actions.py @@ -19,6 +19,13 @@ def mark_as_excused(modeladmin, request, queryset): mark_as_excused.short_description = _("Mark as excused") +def mark_as_unexcused(modeladmin, request, queryset): + queryset.update(excused=False, excuse_type=None) + + +mark_as_unexcused.short_description = _("Mark as unexcused") + + def mark_as_excuse_type_generator(excuse_type) -> Callable: def mark_as_excuse_type(modeladmin, request, queryset): queryset.update(excused=True, excuse_type=excuse_type) diff --git a/aleksis/apps/alsijil/forms.py b/aleksis/apps/alsijil/forms.py index 190a9a4442444f14ea752a28deaa382476f8693a..67e906e275adbf6ab2daf29341f52cecd3365359 100644 --- a/aleksis/apps/alsijil/forms.py +++ b/aleksis/apps/alsijil/forms.py @@ -20,7 +20,14 @@ from aleksis.apps.chronos.models import TimePeriod from aleksis.core.util.core_helpers import get_site_preferences from aleksis.core.util.predicates import check_global_permission -from .actions import delete_personal_note, mark_as_excuse_type_generator, mark_as_excused, send_request_to_check_entry +from .actions import ( + delete_personal_note, + mark_as_excuse_type_generator, + mark_as_excused, + mark_as_unexcused, + send_request_to_check_entry, +) + from .models import ( ExcuseType, ExtraMark, @@ -178,7 +185,7 @@ class ExcuseTypeForm(forms.ModelForm): class PersonOverviewForm(ActionForm): def get_actions(self): - return [mark_as_excused, delete_personal_note] + [ + return [mark_as_excused, mark_as_unexcused, delete_personal_note] + [ mark_as_excuse_type_generator(excuse_type) for excuse_type in ExcuseType.objects.all() ]