diff --git a/backend/src/openarchiefbeheer/conf/base.py b/backend/src/openarchiefbeheer/conf/base.py index 0af8de77..657bd6f0 100644 --- a/backend/src/openarchiefbeheer/conf/base.py +++ b/backend/src/openarchiefbeheer/conf/base.py @@ -119,10 +119,12 @@ "drf_spectacular", "zgw_consumers", "simple_certmanager", + "timeline_logger", # Project applications. "openarchiefbeheer.accounts", "openarchiefbeheer.destruction", "openarchiefbeheer.utils", + "openarchiefbeheer.logging", ] MIDDLEWARE = [ diff --git a/backend/src/openarchiefbeheer/destruction/api/serializers.py b/backend/src/openarchiefbeheer/destruction/api/serializers.py index a88e29ff..d84f7338 100644 --- a/backend/src/openarchiefbeheer/destruction/api/serializers.py +++ b/backend/src/openarchiefbeheer/destruction/api/serializers.py @@ -5,6 +5,7 @@ from rest_framework.exceptions import ValidationError from openarchiefbeheer.accounts.api.serializers import UserSerializer +from openarchiefbeheer.logging import logevent from ..constants import ListItemStatus from ..models import DestructionList, DestructionListAssignee, DestructionListItem @@ -58,7 +59,8 @@ def create(self, validated_data: dict) -> DestructionList: assignees_data = validated_data.pop("assignees") items_data = validated_data.pop("items") - validated_data["author"] = self.context["request"].user + author = self.context["request"].user + validated_data["author"] = author destruction_list = DestructionList.objects.create(**validated_data) DestructionListItem.objects.bulk_create( @@ -77,4 +79,7 @@ def create(self, validated_data: dict) -> DestructionList: ) destruction_list.assign(assignees[0]) + + logevent.destruction_list_created(destruction_list, author) + return destruction_list diff --git a/backend/src/openarchiefbeheer/logging/__init__.py b/backend/src/openarchiefbeheer/logging/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/openarchiefbeheer/logging/logevent.py b/backend/src/openarchiefbeheer/logging/logevent.py new file mode 100644 index 00000000..3d4bcd88 --- /dev/null +++ b/backend/src/openarchiefbeheer/logging/logevent.py @@ -0,0 +1,21 @@ +from django.db.models import Model + +from timeline_logger.models import TimelineLog + +from openarchiefbeheer.accounts.models import User +from openarchiefbeheer.destruction.models import DestructionList + + +def _create_log( + model: Model, event: str, extra_data: dict | None = None, user: User | None = None +) -> TimelineLog: + return TimelineLog.objects.create( + content_object=model, + template=f"logging/{event}.txt", + extra_data=extra_data, + user=user, + ) + + +def destruction_list_created(destruction_list: DestructionList, user: User) -> None: + _create_log(model=destruction_list, event="destruction_list_created", user=user) diff --git a/backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_created.txt b/backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_created.txt new file mode 100644 index 00000000..b5651faa --- /dev/null +++ b/backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_created.txt @@ -0,0 +1,4 @@ +{% load i18n %} +{% blocktrans trimmed with destruction_list=log.content_object %} + {{ log.timestamp }}]: Destruction list "{{ destruction_list.name }}" created by user {{ log.user }}. +{% endblocktrans %} \ No newline at end of file