From 34d18507600e4b5857495772f4e33ad429f30c6b Mon Sep 17 00:00:00 2001 From: Julian Leucker <leuckerj@gmail.com> Date: Tue, 14 May 2024 11:22:02 +0200 Subject: [PATCH] Move documentation creation to model method --- aleksis/apps/alsijil/models.py | 10 ++++++++++ aleksis/apps/alsijil/schema/documentation.py | 8 +------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py index ad6aa5c4f..c4487066c 100644 --- a/aleksis/apps/alsijil/models.py +++ b/aleksis/apps/alsijil/models.py @@ -680,6 +680,16 @@ class Documentation(CalendarEvent): obj.save() return obj + @classmethod + def get_or_create_by_id(cls, _id: str|int, user): + if _id.startswith("DUMMY"): + return cls.create_from_lesson_event( + user, + *cls.parse_dummy(_id), + ) + + return cls.objects.get(id=_id) + class ParticipationStatus(CalendarEvent): """A participation or absence record about a single person. diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py index 3c241e061..e8443965d 100644 --- a/aleksis/apps/alsijil/schema/documentation.py +++ b/aleksis/apps/alsijil/schema/documentation.py @@ -97,13 +97,7 @@ class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation): # Sadly, we can't use the update_or_create method since create_defaults # is only introduced in Django 5.0 - if _id.startswith("DUMMY"): - obj = Documentation.create_from_lesson_event( - info.context.user, - *Documentation.parse_dummy(_id), - ) - else: - obj = Documentation.objects.get(id=_id) + obj = Documentation.get_or_create_by_id(_id, info.context.user) if not info.context.user.has_perm("alsijil.edit_documentation_rule", obj): raise PermissionDenied() -- GitLab