From 9c067aa87f77ffdde5767c67fec8d752783981d8 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 11:28:48 +0100 Subject: [PATCH 01/11] :construction: [#504] Change data of destruction report --- .../openarchiefbeheer/zaken/api/constants.py | 19 +++++++++---------- .../zaken/api/serializers.py | 17 +++++++++++++++-- 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/backend/src/openarchiefbeheer/zaken/api/constants.py b/backend/src/openarchiefbeheer/zaken/api/constants.py index b121bdee..a694502f 100644 --- a/backend/src/openarchiefbeheer/zaken/api/constants.py +++ b/backend/src/openarchiefbeheer/zaken/api/constants.py @@ -1,15 +1,14 @@ # The structure of ZAAK_METADATA_FIELDS_MAPPINGS needs to remain in sync with ZaakMetadataSerializer ZAAK_METADATA_FIELDS_MAPPINGS = [ - {"name": "url", "path": "url"}, - {"name": "einddatum", "path": "einddatum"}, - {"name": "resultaat", "path": "resultaat"}, - {"name": "startdatum", "path": "startdatum"}, - {"name": "omschrijving", "path": "omschrijving"}, - {"name": "identificatie", "path": "identificatie"}, - {"name": "zaaktype url", "path": "zaaktype.url"}, - {"name": "zaaktype omschrijving", "path": "zaaktype.omschrijving"}, + {"name": "Zaaktype UUID", "path": "zaaktype.url"}, + {"name": "Zaaktype Omschrijving", "path": "zaaktype.omschrijving"}, + {"name": "Zaaktype Identificatie", "path": "zaaktype.identificatie"}, + {"name": "Zaak Identificatie", "path": "identificatie"}, + {"name": "Zaak Startdatum", "path": "startdatum"}, + {"name": "Zaak Einddatum", "path": "omschrijving"}, { - "name": "selectielijst procestype nummer", - "path": "zaaktype.selectielijst_procestype.nummer", + "name": "Selectielijst Procestype", + "path": "zaaktype.selectielijst_procestype.naam", }, + {"name": "Resultaat", "path": "resultaattype.omschrijving"}, ] diff --git a/backend/src/openarchiefbeheer/zaken/api/serializers.py b/backend/src/openarchiefbeheer/zaken/api/serializers.py index 7fe68936..057f82af 100644 --- a/backend/src/openarchiefbeheer/zaken/api/serializers.py +++ b/backend/src/openarchiefbeheer/zaken/api/serializers.py @@ -80,6 +80,7 @@ class SelectielijstklasseChoicesQueryParamSerializer(serializers.Serializer): # TODO: Make more robust so that we don't have to worry about keeping in sync class ZaakMetadataSerializer(serializers.ModelSerializer): zaaktype = serializers.SerializerMethodField() + resultaat = serializers.SerializerMethodField() class Meta: model = Zaak @@ -99,7 +100,19 @@ def get_zaaktype(self, zaak: Zaak) -> dict | None: return { "url": zaaktype["url"], "omschrijving": zaaktype["omschrijving"], - "selectielijst_procestype": { - "nummer": zaaktype["selectielijst_procestype"]["nummer"] + "identificatie": zaaktype.get("identificatie", ""), + "selectielijst_procestype": zaaktype["selectielijst_procestype"], + } + + @extend_schema_field(serializers.JSONField) + def get_resultaat(self, zaak: Zaak) -> dict | None: + if not zaak.resultaat: + return None + + resultaattype = zaak._expand["resultaat"]["_expand"]["resultaattype"] + return { + "url": zaak._expand["resultaat"]["url"], + "resultaattype": { + "omschrijving": resultaattype["omschrijving"], }, } From b54a8537e18d624795b4dcd490b57829e563bb58 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 11:29:16 +0100 Subject: [PATCH 02/11] :white_check_mark: [#504] Test data destruction report --- .../destruction/tests/test_models.py | 99 +++++++++++-------- .../destruction/tests/test_tasks.py | 73 +++++++------- .../zaken/tests/factories.py | 2 + 3 files changed, 100 insertions(+), 74 deletions(-) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_models.py b/backend/src/openarchiefbeheer/destruction/tests/test_models.py index 5253b520..530c6a21 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_models.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_models.py @@ -133,13 +133,21 @@ def test_zaak_data_present_after_deletion(self): item.extra_zaak_data["zaaktype"], { "url": "http://catalogue-api.nl/zaaktypen/111-111-111", + "identificatie": "ZAAKTYPE-01", "omschrijving": "Aangifte behandelen", - "selectielijst_procestype": {"nummer": 1}, + "selectielijst_procestype": { + "naam": "Evaluatie uitvoeren", + "nummer": 1, + "url": "https://selectielijst.nl/api/v1/procestypen/7ff2b005-4d84-47fe-983a-732bfa958ff5", + }, }, ) self.assertEqual( item.extra_zaak_data["resultaat"], - "http://zaken.nl/api/v1/resultaten/111-111-111", + { + "url": "http://zaken-api.nl/zaken/api/v1/resultaten/111-111-111", + "resultaattype": {"omschrijving": "This is a result type"}, + }, ) @@ -301,12 +309,19 @@ def test_generate_destruction_report(self): "identificatie": "ZAAK-01", "startdatum": "2020-01-01", "einddatum": "2022-01-01", - "resultaat": "http://zaken.nl/api/v1/resultaten/111-111-111", + "resultaat": { + "url": "http://zaken.nl/api/v1/resultaten/111-111-111", + "resultaattype": { + "url": "http://catalogue-api.nl/catalogi/api/v1/resultaattypen/111-111-111", + "archiefactietermijn": "P1D", + "omschrijving": "Resulttype 0", + }, + }, "zaaktype": { "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-111", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { - "nummer": 1, + "naam": "Plannen opstellen", }, }, }, @@ -320,12 +335,20 @@ def test_generate_destruction_report(self): "identificatie": "ZAAK-02", "startdatum": "2020-01-02", "einddatum": "2022-01-02", - "resultaat": "http://zaken.nl/api/v1/resultaten/111-111-222", + "resultaat": { + "url": "http://zaken.nl/api/v1/resultaten/111-111-222", + "resultaattype": { + "url": "http://catalogue-api.nl/catalogi/api/v1/resultaattypen/111-111-111", + "archiefactietermijn": "P1D", + "omschrijving": "Resulttype 0", + }, + }, "zaaktype": { "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-111", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { "nummer": 1, + "naam": "Beleid en regelgeving opstellen", }, }, }, @@ -339,12 +362,12 @@ def test_generate_destruction_report(self): "identificatie": "ZAAK-03", "startdatum": "2020-01-03", "einddatum": "2022-01-03", - "resultaat": "http://zaken.nl/api/v1/resultaten/111-111-333", + "resultaat": None, "zaaktype": { "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-222", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { - "nummer": 2, + "naam": "Instellen en inrichten organisatie", }, }, }, @@ -362,57 +385,53 @@ def test_generate_destruction_report(self): self.assertEqual( rows[0], ( - "url", - "einddatum", - "resultaat", - "startdatum", - "omschrijving", - "identificatie", - "zaaktype url", - "zaaktype omschrijving", - "selectielijst procestype nummer", + "Zaaktype UUID", + "Zaaktype Omschrijving", + "Zaaktype Identificatie", + "Zaak Identificatie", + "Zaak Startdatum", + "Zaak Einddatum", + "Selectielijst Procestype", + "Resultaat", ), ) self.assertEqual( rows[1], ( - "http://zaken.nl/api/v1/zaken/111-111-111", - "2022-01-01", - "http://zaken.nl/api/v1/resultaten/111-111-111", - "2020-01-01", - "Test description 1", - "ZAAK-01", - "http://catalogi.nl/api/v1/zaaktypen/111-111-111", + "111-111-111", "Tralala zaaktype", - 1, + None, # pyopenxl reads empty values as None + "ZAAK-01", + "2020-01-01", + "2022-01-01", + "Plannen opstellen", + "Resulttype 0", ), ) self.assertEqual( rows[2], ( - "http://zaken.nl/api/v1/zaken/111-111-222", - "2022-01-02", - "http://zaken.nl/api/v1/resultaten/111-111-222", - "2020-01-02", - "Test description 2", - "ZAAK-02", - "http://catalogi.nl/api/v1/zaaktypen/111-111-111", + "111-111-111", "Tralala zaaktype", - 1, + None, + "ZAAK-02", + "2020-01-02", + "2022-01-02", + "Beleid en regelgeving opstellen", + "Resulttype 0", ), ) self.assertEqual( rows[3], ( - "http://zaken.nl/api/v1/zaken/111-111-333", - "2022-01-03", - "http://zaken.nl/api/v1/resultaten/111-111-333", - "2020-01-03", - "Test description 3", - "ZAAK-03", - "http://catalogi.nl/api/v1/zaaktypen/111-111-222", + "111-111-222", "Tralala zaaktype", - 2, + None, + "ZAAK-03", + "2020-01-03", + "2022-01-03", + "Instellen en inrichten organisatie", + None, ), ) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py index 47377185..bc566bcc 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py @@ -448,29 +448,27 @@ def test_process_list(self): self.assertEqual( rows[1], ( - "http://zaken.nl/api/v1/zaken/111-111-111", - "2022-01-01", - "http://zaken.nl/api/v1/resultaten/111-111-111", - "2020-01-01", - "Test description 1", - "ZAAK-01", - "http://catalogue-api.nl/zaaktypen/111-111-111", + "111-111-111", "Aangifte behandelen", - 1, + "ZAAKTYPE-01", + "ZAAK-01", + "2020-01-01", + "2022-01-01", + "Evaluatie uitvoeren", + "This is a result type", ), ) self.assertEqual( rows[2], ( - "http://zaken.nl/api/v1/zaken/222-222-222", - "2022-01-02", - "http://zaken.nl/api/v1/resultaten/111-111-222", - "2020-01-02", - "Test description 2", - "ZAAK-02", - "http://catalogue-api.nl/zaaktypen/111-111-111", + "111-111-111", "Aangifte behandelen", - 1, + "ZAAKTYPE-01", + "ZAAK-02", + "2020-01-02", + "2022-01-02", + "Evaluatie uitvoeren", + "This is a result type", ), ) @@ -562,12 +560,21 @@ def test_complete_and_notify(self): "identificatie": "ZAAK-01", "startdatum": "2020-01-01", "einddatum": "2022-01-01", - "resultaat": "http://zaken.nl/api/v1/resultaten/111-111-111", + "resultaat": { + "url": "http://zaken.nl/api/v1/resultaten/111-111-111", + "resultaattype": { + "url": "http://catalogue-api.nl/catalogi/api/v1/resultaattypen/111-111-111", + "archiefactietermijn": "P1D", + "omschrijving": "Resulttype 0", + }, + }, "zaaktype": { "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-111", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { "nummer": 1, + "url": "https://selectielijst.nl/api/v1/procestypen/7ff2b005-4d84-47fe-983a-732bfa958ff5", + "naam": "Evaluatie uitvoeren", }, }, }, @@ -617,29 +624,27 @@ def test_complete_and_notify(self): self.assertEqual( rows[0], ( - "url", - "einddatum", - "resultaat", - "startdatum", - "omschrijving", - "identificatie", - "zaaktype url", - "zaaktype omschrijving", - "selectielijst procestype nummer", + "Zaaktype UUID", + "Zaaktype Omschrijving", + "Zaaktype Identificatie", + "Zaak Identificatie", + "Zaak Startdatum", + "Zaak Einddatum", + "Selectielijst Procestype", + "Resultaat", ), ) self.assertEqual( rows[1], ( - "http://zaken.nl/api/v1/zaken/111-111-111", - "2022-01-01", - "http://zaken.nl/api/v1/resultaten/111-111-111", - "2020-01-01", - "Test description 1", - "ZAAK-01", - "http://catalogi.nl/api/v1/zaaktypen/111-111-111", + "111-111-111", "Tralala zaaktype", - 1, + None, + "ZAAK-01", + "2020-01-01", + "2022-01-01", + "Evaluatie uitvoeren", + "Resulttype 0", ), ) diff --git a/backend/src/openarchiefbeheer/zaken/tests/factories.py b/backend/src/openarchiefbeheer/zaken/tests/factories.py index c4607f6b..e63c7d28 100644 --- a/backend/src/openarchiefbeheer/zaken/tests/factories.py +++ b/backend/src/openarchiefbeheer/zaken/tests/factories.py @@ -44,12 +44,14 @@ def post(obj, create, extracted, **kwargs): "selectielijst_procestype": { "nummer": 1, "url": "https://selectielijst.nl/api/v1/procestypen/7ff2b005-4d84-47fe-983a-732bfa958ff5", + "naam": "Evaluatie uitvoeren", }, "omschrijving": "Aangifte behandelen", "identificatie": "ZAAKTYPE-01", "versiedatum": "2024-01-01", }, "resultaat": { + "url": "http://zaken-api.nl/zaken/api/v1/resultaten/111-111-111", "resultaattype": "http://catalogue-api.nl/catalogi/api/v1/resultaattypen/111-111-111", "_expand": { "resultaattype": { From a6389ad88421c758b21a4503f348307e0b139f1f Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 12:17:13 +0100 Subject: [PATCH 03/11] :sparkles: [#504] Record at what time the list was deleted --- backend/src/openarchiefbeheer/destruction/models.py | 2 ++ backend/src/openarchiefbeheer/zaken/api/constants.py | 2 +- backend/src/openarchiefbeheer/zaken/api/serializers.py | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/src/openarchiefbeheer/destruction/models.py b/backend/src/openarchiefbeheer/destruction/models.py index 427d73de..778b066a 100644 --- a/backend/src/openarchiefbeheer/destruction/models.py +++ b/backend/src/openarchiefbeheer/destruction/models.py @@ -151,6 +151,8 @@ def assign(assignee: "DestructionListAssignee") -> None: def set_status(self, status: str) -> None: self.status = status self.status_changed = timezone.now() + if status == ListStatus.deleted: + self.end = timezone.now() self.save() def add_items( diff --git a/backend/src/openarchiefbeheer/zaken/api/constants.py b/backend/src/openarchiefbeheer/zaken/api/constants.py index a694502f..dddb6704 100644 --- a/backend/src/openarchiefbeheer/zaken/api/constants.py +++ b/backend/src/openarchiefbeheer/zaken/api/constants.py @@ -1,6 +1,6 @@ # The structure of ZAAK_METADATA_FIELDS_MAPPINGS needs to remain in sync with ZaakMetadataSerializer ZAAK_METADATA_FIELDS_MAPPINGS = [ - {"name": "Zaaktype UUID", "path": "zaaktype.url"}, + {"name": "Zaaktype UUID", "path": "zaaktype.uuid"}, {"name": "Zaaktype Omschrijving", "path": "zaaktype.omschrijving"}, {"name": "Zaaktype Identificatie", "path": "zaaktype.identificatie"}, {"name": "Zaak Identificatie", "path": "identificatie"}, diff --git a/backend/src/openarchiefbeheer/zaken/api/serializers.py b/backend/src/openarchiefbeheer/zaken/api/serializers.py index 057f82af..864d4008 100644 --- a/backend/src/openarchiefbeheer/zaken/api/serializers.py +++ b/backend/src/openarchiefbeheer/zaken/api/serializers.py @@ -1,6 +1,7 @@ from django.utils.translation import gettext_lazy as _ from drf_spectacular.utils import extend_schema_field +from furl import furl from rest_framework import serializers from rest_framework_gis.fields import GeometryField @@ -98,6 +99,7 @@ class Meta: def get_zaaktype(self, zaak: Zaak) -> dict | None: zaaktype = zaak._expand["zaaktype"] return { + "uuid": furl(zaaktype["url"]).path.segments[-1], "url": zaaktype["url"], "omschrijving": zaaktype["omschrijving"], "identificatie": zaaktype.get("identificatie", ""), From f3bfefee251cef901514d2501bb9b49e30d2e970 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 12:17:49 +0100 Subject: [PATCH 04/11] :white_check_mark: [#504] Test when list was deleted --- .../openarchiefbeheer/destruction/tests/test_tasks.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py index bc566bcc..82bdf28b 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py @@ -4,6 +4,7 @@ from django.core import mail from django.test import TestCase, override_settings, tag +from django.utils import timezone from django.utils.translation import gettext as _, ngettext from freezegun import freeze_time @@ -596,7 +597,7 @@ def test_complete_and_notify(self): patch("openarchiefbeheer.destruction.utils.create_zaak_for_report"), patch("openarchiefbeheer.destruction.utils.create_eio_destruction_report"), patch("openarchiefbeheer.destruction.utils.attach_report_to_zaak"), - freeze_time("2024-10-09"), + freeze_time("2024-10-09T12:00:00+02:00"), ): complete_and_notify(destruction_list.pk) @@ -615,6 +616,12 @@ def test_complete_and_notify(self): destruction_list.destruction_report.name, "destruction_reports/2024/10/09/report_some-destruction-list.xlsx", ) + self.assertEqual( + destruction_list.end.astimezone( + tz=timezone.get_default_timezone() + ).isoformat(), + "2024-10-09T12:00:00+02:00", + ) wb = load_workbook(filename=destruction_list.destruction_report.path) sheet_deleted_zaken = wb[_("Deleted zaken")] From 667043e4df8d7d55a72e0fd585f2f20266dee709 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 12:38:26 +0100 Subject: [PATCH 05/11] :sparkles: [#504] Log destruction being triggered --- .../src/openarchiefbeheer/destruction/api/viewsets.py | 2 ++ backend/src/openarchiefbeheer/logging/logevent.py | 11 +++++++++++ .../logging/destruction_list_deletion_triggered.txt | 3 +++ 3 files changed, 16 insertions(+) create mode 100644 backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_deletion_triggered.txt diff --git a/backend/src/openarchiefbeheer/destruction/api/viewsets.py b/backend/src/openarchiefbeheer/destruction/api/viewsets.py index e152fcc4..933e7ef1 100644 --- a/backend/src/openarchiefbeheer/destruction/api/viewsets.py +++ b/backend/src/openarchiefbeheer/destruction/api/viewsets.py @@ -292,6 +292,8 @@ def perform_destroy(self, instance: DestructionList) -> None: % {"destruction_date": destruction_date.strftime("%d/%m/%Y")} ) + logevent.destruction_list_deletion_triggered(instance, self.request.user) + if instance.processing_status == InternalStatus.new: instance.planned_destruction_date = today + timedelta(days=WAITING_PERIOD) instance.save() diff --git a/backend/src/openarchiefbeheer/logging/logevent.py b/backend/src/openarchiefbeheer/logging/logevent.py index 3a7cc425..f952af94 100644 --- a/backend/src/openarchiefbeheer/logging/logevent.py +++ b/backend/src/openarchiefbeheer/logging/logevent.py @@ -241,6 +241,17 @@ def destruction_list_aborted( ) +def destruction_list_deletion_triggered( + destruction_list: DestructionList, + record_manager: User, +) -> None: + _create_log( + model=destruction_list, + event="destruction_list_deletion_triggered", + user=record_manager, + ) + + def resync_started() -> None: return TimelineLog.objects.create( template="logging/resync_started.txt", diff --git a/backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_deletion_triggered.txt b/backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_deletion_triggered.txt new file mode 100644 index 00000000..62600c2a --- /dev/null +++ b/backend/src/openarchiefbeheer/logging/templates/logging/destruction_list_deletion_triggered.txt @@ -0,0 +1,3 @@ +{% load i18n %}{% blocktranslate trimmed with list_name=log.content_object.name groups=log.extra_data.user_groups|join:", " record_manager=log.user count counter=log.extra_data.user_groups|length %} +User {{ record_manager }} (member of group {{ groups }}) has triggered the destruction of destruction list "{{ list_name }}".{% plural %}User {{ record_manager }} (member of groups {{ groups }}) has triggered the destruction of destruction list "{{ list_name }}". +{% endblocktranslate %} \ No newline at end of file From 512126a63c27f8a0f148d020937c149df7e040e0 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 12:39:02 +0100 Subject: [PATCH 06/11] :white_check_mark: [#504] Test triggering destruction logged --- .../destruction/tests/endpoints/test_list_destruction.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py index 4f1df073..086c9397 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py +++ b/backend/src/openarchiefbeheer/destruction/tests/endpoints/test_list_destruction.py @@ -7,6 +7,7 @@ from rest_framework import status from rest_framework.reverse import reverse from rest_framework.test import APITestCase +from timeline_logger.models import TimelineLog from openarchiefbeheer.accounts.tests.factories import UserFactory @@ -222,3 +223,10 @@ def test_can_start_destruction_if_archiefactiedatum_in_the_future_but_removed(se ) self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code) + + logs = TimelineLog.objects.for_object(destruction_list).filter( + template="logging/destruction_list_deletion_triggered.txt" + ) + + self.assertEqual(len(logs), 1) + self.assertEqual(logs[0].extra_data["user"]["username"], "record_manager") From ca5ed02434d8da4684d0decb1978944e27f8d6bf Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 13:03:39 +0100 Subject: [PATCH 07/11] :sparkles: [#504] Add general info to table --- .../destruction/destruction_report.py | 40 +++++++++++++++++-- .../src/openarchiefbeheer/logging/utils.py | 7 ++-- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/backend/src/openarchiefbeheer/destruction/destruction_report.py b/backend/src/openarchiefbeheer/destruction/destruction_report.py index 3c4f05cd..d65a9360 100644 --- a/backend/src/openarchiefbeheer/destruction/destruction_report.py +++ b/backend/src/openarchiefbeheer/destruction/destruction_report.py @@ -9,11 +9,14 @@ from xlsxwriter.worksheet import Worksheet from openarchiefbeheer.accounts.utils import format_user, format_user_groups -from openarchiefbeheer.logging.logevent import destruction_list_reviewed +from openarchiefbeheer.logging.logevent import ( + destruction_list_deletion_triggered, + destruction_list_reviewed, +) from openarchiefbeheer.logging.utils import get_event_template, get_readable_timestamp from openarchiefbeheer.zaken.api.constants import ZAAK_METADATA_FIELDS_MAPPINGS -from .constants import InternalStatus +from .constants import InternalStatus, ListItemStatus from .models import DestructionList @@ -41,13 +44,41 @@ def add_review_process_table( data = [ format_user_groups(log.extra_data["user_groups"]), format_user(log.extra_data["user"]), - get_readable_timestamp(log), + get_readable_timestamp(log.timestamp), # This column is not useful, since we are filtering on approved reviews. # But it was specifically requested. _("Has approved"), ] worksheet.write_row(start_row + row_count + 1, 0, data) + def add_general_info_table(self, worksheet: Worksheet, start_row: int = 0) -> None: + column_names = [ + _("Date/Time of deletion"), + _("User who started the deletion"), + _("Groups"), + _("Number of deleted cases"), + ] + worksheet.write_row(start_row, 0, column_names) + + log = ( + TimelineLog.objects.for_object(self) + .filter(template=get_event_template(destruction_list_deletion_triggered)) + .order_by("timestamp") + .last() + ) + number_of_cases = self.items.filter( + processing_status=InternalStatus.succeeded, + status=ListItemStatus.suggested, + ).count() + + general_info_data = [ + get_readable_timestamp(self.end), + format_user(log.extra_data["user"]), + format_user_groups(log.extra_data["user_groups"]), + number_of_cases, + ] + worksheet.write_row(start_row + 1, 0, general_info_data) + def add_zaken_table(self, worksheet: Worksheet, start_row: int = 0) -> None: worksheet.write_row( start_row, 0, [field["name"] for field in ZAAK_METADATA_FIELDS_MAPPINGS] @@ -70,7 +101,8 @@ def generate_destruction_report(self, file: IO) -> None: worksheet_zaken = workbook.add_worksheet(name=_("Deleted zaken")) worksheet_review_process = workbook.add_worksheet(name=_("Review process")) - self.add_zaken_table(worksheet_zaken) + self.add_general_info_table(worksheet_zaken) + self.add_zaken_table(worksheet_zaken, start_row=3) self.add_review_process_table(worksheet_review_process) workbook.close() diff --git a/backend/src/openarchiefbeheer/logging/utils.py b/backend/src/openarchiefbeheer/logging/utils.py index ef7c6336..e6d6717e 100644 --- a/backend/src/openarchiefbeheer/logging/utils.py +++ b/backend/src/openarchiefbeheer/logging/utils.py @@ -1,9 +1,8 @@ +from datetime import datetime from typing import Callable from django.utils import timezone -from timeline_logger.models import TimelineLog - from .logevent import TEMPLATE_FORMAT @@ -12,8 +11,8 @@ def get_event_template(logging_func: Callable) -> str: def get_readable_timestamp( - log: TimelineLog, separator: str = " ", timespec: str = "minutes" + timestamp: datetime, separator: str = " ", timespec: str = "minutes" ) -> str: - return log.timestamp.astimezone(tz=timezone.get_default_timezone()).isoformat( + return timestamp.astimezone(tz=timezone.get_default_timezone()).isoformat( sep=separator, timespec=timespec ) From b6f972c67fd925374dc6b2a46f10337317e6af11 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Mon, 2 Dec 2024 17:05:28 +0100 Subject: [PATCH 08/11] :white_check_mark: [#504] Add tests general info table --- .../destruction/tests/test_models.py | 188 +++++++++++++++++- .../destruction/tests/test_tasks.py | 61 +++++- 2 files changed, 235 insertions(+), 14 deletions(-) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_models.py b/backend/src/openarchiefbeheer/destruction/tests/test_models.py index 530c6a21..333d6203 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_models.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_models.py @@ -299,9 +299,20 @@ def test_has_short_review_process(self): self.assertTrue(has_short_review_process) def test_generate_destruction_report(self): - destruction_list = DestructionListFactory.create(status=ListStatus.deleted) + record_manager = UserFactory.create( + first_name="John", + last_name="Doe", + username="jdoe1", + post__can_start_destruction=True, + ) + destruction_list = DestructionListFactory.create( + status=ListStatus.deleted, + end=datetime(2024, 12, 2, 12, tzinfo=timezone.get_default_timezone()), + ) + logevent.destruction_list_deletion_triggered(destruction_list, record_manager) DestructionListItemFactory.create( processing_status=InternalStatus.succeeded, + status=ListItemStatus.suggested, destruction_list=destruction_list, extra_zaak_data={ "url": "http://zaken.nl/api/v1/zaken/111-111-111", @@ -328,6 +339,7 @@ def test_generate_destruction_report(self): ) DestructionListItemFactory.create( processing_status=InternalStatus.succeeded, + status=ListItemStatus.suggested, destruction_list=destruction_list, extra_zaak_data={ "url": "http://zaken.nl/api/v1/zaken/111-111-222", @@ -381,9 +393,27 @@ def test_generate_destruction_report(self): sheet_deleted_zaken = wb[gettext("Deleted zaken")] rows = list(sheet_deleted_zaken.iter_rows(values_only=True)) - self.assertEqual(len(rows), 4) + self.assertEqual(len(rows), 7) + self.assertEqual( + rows[0][:4], + ( + gettext("Date/Time of deletion"), + gettext("User who started the deletion"), + gettext("Groups"), + gettext("Number of deleted cases"), + ), + ) + self.assertEqual( + rows[1][:4], + ( + "2024-12-02 12:00+01:00", + "John Doe (jdoe1)", + None, + 3, + ), + ) self.assertEqual( - rows[0], + rows[3], ( "Zaaktype UUID", "Zaaktype Omschrijving", @@ -396,7 +426,7 @@ def test_generate_destruction_report(self): ), ) self.assertEqual( - rows[1], + rows[4], ( "111-111-111", "Tralala zaaktype", @@ -409,7 +439,7 @@ def test_generate_destruction_report(self): ), ) self.assertEqual( - rows[2], + rows[5], ( "111-111-111", "Tralala zaaktype", @@ -422,7 +452,7 @@ def test_generate_destruction_report(self): ), ) self.assertEqual( - rows[3], + rows[6], ( "111-111-222", "Tralala zaaktype", @@ -435,6 +465,148 @@ def test_generate_destruction_report(self): ), ) + def test_generate_destruction_report_with_cases_excluded_from_list(self): + destruction_list = DestructionListFactory.create( + status=ListStatus.deleted, + end=datetime(2024, 12, 2, 12, tzinfo=timezone.get_default_timezone()), + ) + DestructionListItemFactory.create( + processing_status=InternalStatus.succeeded, + status=ListItemStatus.suggested, + destruction_list=destruction_list, + extra_zaak_data={ + "url": "http://zaken.nl/api/v1/zaken/111-111-111", + "omschrijving": "Test description 3", + "identificatie": "ZAAK-01", + "startdatum": "2020-01-03", + "einddatum": "2022-01-03", + "resultaat": None, + "zaaktype": { + "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-222", + "omschrijving": "Tralala zaaktype", + "selectielijst_procestype": { + "naam": "Instellen en inrichten organisatie", + }, + }, + }, + ) + DestructionListItemFactory.create( + processing_status=InternalStatus.new, + status=ListItemStatus.removed, # Case no longer in destruction list + destruction_list=destruction_list, + extra_zaak_data={ + "url": "http://zaken.nl/api/v1/zaken/222-222-222", + "omschrijving": "Test description 3", + "identificatie": "ZAAK-02", + "startdatum": "2020-01-03", + "einddatum": "2022-01-03", + "resultaat": None, + "zaaktype": { + "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-222", + "omschrijving": "Tralala zaaktype", + "selectielijst_procestype": { + "naam": "Instellen en inrichten organisatie", + }, + }, + }, + ) + DestructionListItemFactory.create( + processing_status=InternalStatus.succeeded, + destruction_list=destruction_list, + status=ListItemStatus.suggested, + extra_zaak_data={ + "url": "http://zaken.nl/api/v1/zaken/333-333-333", + "omschrijving": "Test description 3", + "identificatie": "ZAAK-03", + "startdatum": "2020-01-03", + "einddatum": "2022-01-03", + "resultaat": None, + "zaaktype": { + "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-222", + "omschrijving": "Tralala zaaktype", + "selectielijst_procestype": { + "naam": "Instellen en inrichten organisatie", + }, + }, + }, + ) + + destruction_list.generate_destruction_report() + + destruction_list.refresh_from_db() + + wb = load_workbook(filename=destruction_list.destruction_report.path) + sheet_deleted_zaken = wb[gettext("Deleted zaken")] + rows = list(sheet_deleted_zaken.iter_rows(values_only=True)) + + self.assertEqual(len(rows), 6) + self.assertEqual( + rows[3], + ( + "Zaaktype UUID", + "Zaaktype Omschrijving", + "Zaaktype Identificatie", + "Zaak Identificatie", + "Zaak Startdatum", + "Zaak Einddatum", + "Selectielijst Procestype", + "Resultaat", + ), + ) + deleted_zaken_ids = sorted([rows[4][3], rows[5][3]]) + self.assertEqual( + deleted_zaken_ids, + ["ZAAK-01", "ZAAK-03"], + ) + + def test_generate_destruction_report_with_multiple_logs(self): + record_manager1 = UserFactory.create( + first_name="John", + last_name="Doe", + username="jdoe1", + post__can_start_destruction=True, + ) + record_manager2 = UserFactory.create( + first_name="Jane", + last_name="Doe", + username="jdoe2", + post__can_start_destruction=True, + ) + destruction_list = DestructionListFactory.create( + status=ListStatus.deleted, + end=datetime(2024, 12, 2, 12, tzinfo=timezone.get_default_timezone()), + ) + logevent.destruction_list_deletion_triggered(destruction_list, record_manager1) + logevent.destruction_list_deletion_triggered(destruction_list, record_manager2) + + destruction_list.generate_destruction_report() + + destruction_list.refresh_from_db() + + wb = load_workbook(filename=destruction_list.destruction_report.path) + sheet_deleted_zaken = wb[gettext("Deleted zaken")] + rows = list(sheet_deleted_zaken.iter_rows(values_only=True)) + + self.assertEqual(len(rows), 4) + self.assertEqual( + rows[0][:4], + ( + gettext("Date/Time of deletion"), + gettext("User who started the deletion"), + gettext("Groups"), + gettext("Number of deleted cases"), + ), + ) + self.assertEqual( + rows[1][:4], + ( + "2024-12-02 12:00+01:00", + "Jane Doe (jdoe2)", + None, + 0, + ), + ) + def test_generate_destruction_report_review_process(self): author = UserFactory.create(post__can_start_destruction=True) reviewer = UserFactory.create( @@ -455,7 +627,9 @@ def test_generate_destruction_report_review_process(self): archivist.groups.add(archivist_group) destruction_list = DestructionListFactory.create( - status=ListStatus.deleted, author=author + status=ListStatus.deleted, + author=author, + end=datetime(2024, 12, 2, 12, tzinfo=timezone.get_default_timezone()), ) review_reviewer_rejected = DestructionListReviewFactory.create( diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py index 82bdf28b..e2841e33 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py @@ -19,6 +19,7 @@ from openarchiefbeheer.accounts.tests.factories import UserFactory from openarchiefbeheer.emails.models import EmailConfig +from openarchiefbeheer.logging import logevent from openarchiefbeheer.selection.models import SelectionItem from openarchiefbeheer.zaken.models import Zaak from openarchiefbeheer.zaken.tests.factories import ZaakFactory @@ -358,9 +359,16 @@ def test_aborts_if_not_ready_to_delete(self, logs): @override_settings(CELERY_TASK_ALWAYS_EAGER=True) def test_process_list(self): + record_manager = UserFactory.create( + first_name="John", + last_name="Doe", + username="jdoe1", + post__can_start_destruction=True, + ) destruction_list = DestructionListFactory.create( - status=ListStatus.ready_to_delete + status=ListStatus.ready_to_delete, author=record_manager ) + logevent.destruction_list_deletion_triggered(destruction_list, record_manager) item1 = DestructionListItemFactory.create( with_zaak=True, @@ -371,6 +379,7 @@ def test_process_list(self): zaak__einddatum=date(2022, 1, 1), zaak__resultaat="http://zaken.nl/api/v1/resultaten/111-111-111", destruction_list=destruction_list, + status=ListItemStatus.suggested, ) item2 = DestructionListItemFactory.create( with_zaak=True, @@ -381,6 +390,7 @@ def test_process_list(self): zaak__einddatum=date(2022, 1, 2), zaak__resultaat="http://zaken.nl/api/v1/resultaten/111-111-222", destruction_list=destruction_list, + status=ListItemStatus.suggested, ) with ( @@ -394,6 +404,7 @@ def test_process_list(self): "openarchiefbeheer.destruction.utils.create_eio_destruction_report" ) as m_eio, patch("openarchiefbeheer.destruction.utils.attach_report_to_zaak") as m_zio, + freeze_time("2024-12-02T12:00:00+01:00"), ): delete_destruction_list(destruction_list) @@ -445,9 +456,28 @@ def test_process_list(self): sheet_deleted_zaken = wb[_("Deleted zaken")] rows = list(sheet_deleted_zaken.iter_rows(values_only=True)) - self.assertEqual(len(rows), 3) + self.assertEqual(len(rows), 6) + self.assertEqual( + rows[0][:4], + ( + _("Date/Time of deletion"), + _("User who started the deletion"), + _("Groups"), + _("Number of deleted cases"), + ), + ) + self.assertEqual( + rows[1][:4], + ( + "2024-12-02 12:00+01:00", + "John Doe (jdoe1)", + None, + 2, + ), + ) + self.assertEqual( - rows[1], + rows[4], ( "111-111-111", "Aangifte behandelen", @@ -460,7 +490,7 @@ def test_process_list(self): ), ) self.assertEqual( - rows[2], + rows[5], ( "111-111-111", "Aangifte behandelen", @@ -547,10 +577,17 @@ def test_processing_list_with_failed_item(self): m_zio.assert_called() def test_complete_and_notify(self): + record_manager = UserFactory.create( + first_name="John", + last_name="Doe", + username="jdoe1", + post__can_start_destruction=True, + ) destruction_list = DestructionListFactory.create( name="Some destruction list", processing_status=InternalStatus.processing, status=ListStatus.ready_to_delete, + author=record_manager, ) DestructionListItemFactory.create( processing_status=InternalStatus.succeeded, @@ -585,6 +622,7 @@ def test_complete_and_notify(self): ) self.assertIsNone(destruction_list.destruction_report.name) + logevent.destruction_list_deletion_triggered(destruction_list, record_manager) with ( patch( @@ -627,9 +665,18 @@ def test_complete_and_notify(self): sheet_deleted_zaken = wb[_("Deleted zaken")] rows = list(sheet_deleted_zaken.iter_rows(values_only=True)) - self.assertEqual(len(rows), 2) + self.assertEqual(len(rows), 5) + self.assertEqual( + rows[1][:4], + ( + "2024-10-09 12:00+02:00", + "John Doe (jdoe1)", + None, + 1, + ), + ) self.assertEqual( - rows[0], + rows[3], ( "Zaaktype UUID", "Zaaktype Omschrijving", @@ -642,7 +689,7 @@ def test_complete_and_notify(self): ), ) self.assertEqual( - rows[1], + rows[4], ( "111-111-111", "Tralala zaaktype", From a3d5b63964b8c18ea683a7916101a6f32c52dc9a Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Wed, 4 Dec 2024 11:12:50 +0100 Subject: [PATCH 09/11] :construction: [#504] Refactor code after rebasing --- .../destruction/destruction_report.py | 13 +++++++------ backend/src/openarchiefbeheer/logging/utils.py | 11 ----------- backend/src/openarchiefbeheer/utils/formatting.py | 11 +++++++++++ .../src/openarchiefbeheer/zaken/api/constants.py | 4 ++-- 4 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 backend/src/openarchiefbeheer/utils/formatting.py diff --git a/backend/src/openarchiefbeheer/destruction/destruction_report.py b/backend/src/openarchiefbeheer/destruction/destruction_report.py index d65a9360..541bc919 100644 --- a/backend/src/openarchiefbeheer/destruction/destruction_report.py +++ b/backend/src/openarchiefbeheer/destruction/destruction_report.py @@ -13,7 +13,8 @@ destruction_list_deletion_triggered, destruction_list_reviewed, ) -from openarchiefbeheer.logging.utils import get_event_template, get_readable_timestamp +from openarchiefbeheer.logging.utils import get_event_template +from openarchiefbeheer.utils.formatting import get_readable_timestamp from openarchiefbeheer.zaken.api.constants import ZAAK_METADATA_FIELDS_MAPPINGS from .constants import InternalStatus, ListItemStatus @@ -61,20 +62,20 @@ def add_general_info_table(self, worksheet: Worksheet, start_row: int = 0) -> No worksheet.write_row(start_row, 0, column_names) log = ( - TimelineLog.objects.for_object(self) + TimelineLog.objects.for_object(self.destruction_list) .filter(template=get_event_template(destruction_list_deletion_triggered)) .order_by("timestamp") .last() ) - number_of_cases = self.items.filter( + number_of_cases = self.destruction_list.items.filter( processing_status=InternalStatus.succeeded, status=ListItemStatus.suggested, ).count() general_info_data = [ - get_readable_timestamp(self.end), - format_user(log.extra_data["user"]), - format_user_groups(log.extra_data["user_groups"]), + get_readable_timestamp(self.destruction_list.end), + format_user(log.extra_data["user"]) if log else "", + format_user_groups(log.extra_data["user_groups"]) if log else "", number_of_cases, ] worksheet.write_row(start_row + 1, 0, general_info_data) diff --git a/backend/src/openarchiefbeheer/logging/utils.py b/backend/src/openarchiefbeheer/logging/utils.py index e6d6717e..f0083954 100644 --- a/backend/src/openarchiefbeheer/logging/utils.py +++ b/backend/src/openarchiefbeheer/logging/utils.py @@ -1,18 +1,7 @@ -from datetime import datetime from typing import Callable -from django.utils import timezone - from .logevent import TEMPLATE_FORMAT def get_event_template(logging_func: Callable) -> str: return TEMPLATE_FORMAT % {"event": logging_func.__name__} - - -def get_readable_timestamp( - timestamp: datetime, separator: str = " ", timespec: str = "minutes" -) -> str: - return timestamp.astimezone(tz=timezone.get_default_timezone()).isoformat( - sep=separator, timespec=timespec - ) diff --git a/backend/src/openarchiefbeheer/utils/formatting.py b/backend/src/openarchiefbeheer/utils/formatting.py new file mode 100644 index 00000000..cf0ead60 --- /dev/null +++ b/backend/src/openarchiefbeheer/utils/formatting.py @@ -0,0 +1,11 @@ +from datetime import datetime + +from django.utils import timezone + + +def get_readable_timestamp( + timestamp: datetime, separator: str = " ", timespec: str = "minutes" +) -> str: + return timestamp.astimezone(tz=timezone.get_default_timezone()).isoformat( + sep=separator, timespec=timespec + ) diff --git a/backend/src/openarchiefbeheer/zaken/api/constants.py b/backend/src/openarchiefbeheer/zaken/api/constants.py index dddb6704..c1475d5f 100644 --- a/backend/src/openarchiefbeheer/zaken/api/constants.py +++ b/backend/src/openarchiefbeheer/zaken/api/constants.py @@ -5,10 +5,10 @@ {"name": "Zaaktype Identificatie", "path": "zaaktype.identificatie"}, {"name": "Zaak Identificatie", "path": "identificatie"}, {"name": "Zaak Startdatum", "path": "startdatum"}, - {"name": "Zaak Einddatum", "path": "omschrijving"}, + {"name": "Zaak Einddatum", "path": "einddatum"}, { "name": "Selectielijst Procestype", "path": "zaaktype.selectielijst_procestype.naam", }, - {"name": "Resultaat", "path": "resultaattype.omschrijving"}, + {"name": "Resultaat", "path": "resultaat.resultaattype.omschrijving"}, ] From ffcd1b9823396afaf196689365849f97774a88c8 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Wed, 4 Dec 2024 11:13:17 +0100 Subject: [PATCH 10/11] :white_check_mark: [#504] Update tests --- .../src/openarchiefbeheer/destruction/tests/test_models.py | 4 ++++ backend/src/openarchiefbeheer/destruction/tests/test_tasks.py | 1 + 2 files changed, 5 insertions(+) diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_models.py b/backend/src/openarchiefbeheer/destruction/tests/test_models.py index 333d6203..dc17222f 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_models.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_models.py @@ -132,6 +132,7 @@ def test_zaak_data_present_after_deletion(self): self.assertEqual( item.extra_zaak_data["zaaktype"], { + "uuid": "111-111-111", "url": "http://catalogue-api.nl/zaaktypen/111-111-111", "identificatie": "ZAAKTYPE-01", "omschrijving": "Aangifte behandelen", @@ -329,6 +330,7 @@ def test_generate_destruction_report(self): }, }, "zaaktype": { + "uuid": "111-111-111", "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-111", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { @@ -356,6 +358,7 @@ def test_generate_destruction_report(self): }, }, "zaaktype": { + "uuid": "111-111-111", "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-111", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { @@ -376,6 +379,7 @@ def test_generate_destruction_report(self): "einddatum": "2022-01-03", "resultaat": None, "zaaktype": { + "uuid": "111-111-222", "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-222", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { diff --git a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py index e2841e33..b36945ad 100644 --- a/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py +++ b/backend/src/openarchiefbeheer/destruction/tests/test_tasks.py @@ -607,6 +607,7 @@ def test_complete_and_notify(self): }, }, "zaaktype": { + "uuid": "111-111-111", "url": "http://catalogi.nl/api/v1/zaaktypen/111-111-111", "omschrijving": "Tralala zaaktype", "selectielijst_procestype": { From 6ac8671319287a2c52204e21e566f54c4be33892 Mon Sep 17 00:00:00 2001 From: SilviaAmAm Date: Wed, 4 Dec 2024 11:21:05 +0100 Subject: [PATCH 11/11] :globe_with_meridians: [#504] Update translations --- .../conf/locale/nl/LC_MESSAGES/django.po | 552 ++++++++++-------- 1 file changed, 306 insertions(+), 246 deletions(-) diff --git a/backend/src/openarchiefbeheer/conf/locale/nl/LC_MESSAGES/django.po b/backend/src/openarchiefbeheer/conf/locale/nl/LC_MESSAGES/django.po index 230e289f..676321ea 100644 --- a/backend/src/openarchiefbeheer/conf/locale/nl/LC_MESSAGES/django.po +++ b/backend/src/openarchiefbeheer/conf/locale/nl/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-12-03 14:06+0100\n" +"POT-Creation-Date: 2024-12-04 11:16+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -62,45 +62,45 @@ msgstr "" msgid "Returns the current logged in user." msgstr "" -#: openarchiefbeheer/accounts/models.py:18 +#: openarchiefbeheer/accounts/models.py:19 msgid "username" msgstr "gebruikersnaam" -#: openarchiefbeheer/accounts/models.py:22 +#: openarchiefbeheer/accounts/models.py:23 msgid "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only." msgstr "" "Vereist. 150 tekens of minder. Alleen letters, cijfers en @/,/+/-/_ tekens " "zijn toegestaan." -#: openarchiefbeheer/accounts/models.py:26 +#: openarchiefbeheer/accounts/models.py:27 msgid "A user with that username already exists." msgstr "Een gebruiker met deze gebruikersnaam bestaat al." -#: openarchiefbeheer/accounts/models.py:29 +#: openarchiefbeheer/accounts/models.py:30 msgid "first name" msgstr "voornaam" -#: openarchiefbeheer/accounts/models.py:30 +#: openarchiefbeheer/accounts/models.py:31 msgid "last name" msgstr "achternaam" -#: openarchiefbeheer/accounts/models.py:31 +#: openarchiefbeheer/accounts/models.py:32 msgid "email address" msgstr "e-mailadres" -#: openarchiefbeheer/accounts/models.py:33 +#: openarchiefbeheer/accounts/models.py:34 msgid "staff status" msgstr "stafstatus" -#: openarchiefbeheer/accounts/models.py:35 +#: openarchiefbeheer/accounts/models.py:36 msgid "Designates whether the user can log into this admin site." msgstr "Bepaalt of de gebruiker zich op deze beheerwebsite kan aanmelden." -#: openarchiefbeheer/accounts/models.py:38 +#: openarchiefbeheer/accounts/models.py:39 msgid "active" msgstr "actief" -#: openarchiefbeheer/accounts/models.py:41 +#: openarchiefbeheer/accounts/models.py:42 msgid "" "Designates whether this user should be treated as active. Unselect this " "instead of deleting accounts." @@ -108,25 +108,25 @@ msgstr "" "Bepaalt of deze gebruiker als actief dient te worden behandeld. U kunt dit " "uitvinken in plaats van een gebruiker te verwijderen." -#: openarchiefbeheer/accounts/models.py:45 +#: openarchiefbeheer/accounts/models.py:46 msgid "date joined" msgstr "datum toegetreden" -#: openarchiefbeheer/accounts/models.py:53 -#: openarchiefbeheer/destruction/models.py:412 +#: openarchiefbeheer/accounts/models.py:54 +#: openarchiefbeheer/destruction/models.py:386 msgid "user" msgstr "gebruiker" -#: openarchiefbeheer/accounts/models.py:54 +#: openarchiefbeheer/accounts/models.py:55 msgid "users" msgstr "gebruikers" -#: openarchiefbeheer/accounts/utils.py:18 +#: openarchiefbeheer/accounts/utils.py:22 msgid "You need to be superuser to create other superusers." msgstr "" "U dient een supergebruiker te zijn om andere supergebruikers aan te maken." -#: openarchiefbeheer/accounts/utils.py:44 +#: openarchiefbeheer/accounts/utils.py:48 msgid "You cannot create or update a user with more permissions than yourself." msgstr "U kunt een gebruiker niet meer rechten geven dan u zelf heeft." @@ -150,122 +150,6 @@ msgstr "" msgid "Logout" msgstr "" -#: openarchiefbeheer/config/admin.py:13 -msgid "Short procedure" -msgstr "" - -#: openarchiefbeheer/config/admin.py:19 -msgid "Zaak report destruction settings" -msgstr "" - -#: openarchiefbeheer/config/api/serializers.py:35 -msgid "OIDC authentication URL" -msgstr "" - -#: openarchiefbeheer/config/api/serializers.py:37 -msgid "" -"URL where to start the OIDC login flow if it is enabled. If it is not " -"enabled, it will be an empty string." -msgstr "" - -#: openarchiefbeheer/config/api/views.py:25 -msgid "Retrieve archive configuration" -msgstr "" - -#: openarchiefbeheer/config/api/views.py:26 -msgid "Retrieve archive configuration." -msgstr "" - -#: openarchiefbeheer/config/api/views.py:48 -#: openarchiefbeheer/config/api/views.py:58 -msgid "Update archive configuration" -msgstr "" - -#: openarchiefbeheer/config/api/views.py:49 -msgid "Update archive configuration." -msgstr "" - -#: openarchiefbeheer/config/api/views.py:59 -msgid "Partially update archive configuration." -msgstr "" - -#: openarchiefbeheer/config/api/views.py:72 -msgid "Retrieve OIDC info" -msgstr "" - -#: openarchiefbeheer/config/api/views.py:73 -msgid "Returns info about OIDC that is needed by the frontend. " -msgstr "" - -#: openarchiefbeheer/config/models.py:11 -msgid "zaaktypes short process" -msgstr "" - -#: openarchiefbeheer/config/models.py:13 -msgid "" -"If a destruction list only contains cases with types present in this field, " -"this list will have a shortened review process. This means that no archivist " -"will have to approve this list before it is deleted." -msgstr "" - -#: openarchiefbeheer/config/models.py:25 -msgid "Source organisation RSIN" -msgstr "" - -#: openarchiefbeheer/config/models.py:32 -msgid "" -"The case type URL to use when creating the case for the destruction list " -"deletion." -msgstr "" - -#: openarchiefbeheer/config/models.py:40 -msgid "" -"The status type URL to use when creating the case for the destruction list " -"deletion." -msgstr "" - -#: openarchiefbeheer/config/models.py:48 -msgid "" -"The result type URL to use when creating the case for the destruction list " -"deletion." -msgstr "" - -#: openarchiefbeheer/config/models.py:56 -msgid "" -"The document type URL to use when creating the case for the destruction list " -"deletion." -msgstr "" - -#: openarchiefbeheer/config/models.py:64 -msgid "" -"The selectielijstklasse URL to use when creating the case for the " -"destruction list deletion." -msgstr "" - -#: openarchiefbeheer/config/models.py:69 -msgid "archive configuration" -msgstr "" - -#: openarchiefbeheer/config/models.py:70 -msgid "archive configurations" -msgstr "" - -#: openarchiefbeheer/config/models.py:79 -msgid "selectielijst API service" -msgstr "" - -#: openarchiefbeheer/config/models.py:83 -msgid "Which service to use to query the Selectielijst API." -msgstr "" - -#: openarchiefbeheer/config/models.py:87 -msgid "API configuration" -msgstr "API-configuratie" - -#: openarchiefbeheer/config/models.py:88 -msgid "API configurations" -msgstr "API-configuraties" - #: openarchiefbeheer/destruction/api/filtersets.py:28 msgid "" "Retrieve the items that are in a destruction list and order them based on " @@ -626,100 +510,99 @@ msgstr "" msgid "This list is already planned to be destroyed on %(destruction_date)s." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:381 +#: openarchiefbeheer/destruction/api/viewsets.py:383 msgid "List destruction list items" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:383 +#: openarchiefbeheer/destruction/api/viewsets.py:385 msgid "List all the items (cases) that are related to a destruction list." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:434 +#: openarchiefbeheer/destruction/api/viewsets.py:436 msgid "List reviews" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:436 +#: openarchiefbeheer/destruction/api/viewsets.py:438 msgid "List all the reviews that have been made for a destruction list." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:441 +#: openarchiefbeheer/destruction/api/viewsets.py:443 msgid "Create review" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:443 +#: openarchiefbeheer/destruction/api/viewsets.py:445 msgid "" "Create a review for a destruction list. Only the user currently assigned to " "the destruction list can create a review." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:469 +#: openarchiefbeheer/destruction/api/viewsets.py:471 msgid "List co-reviews" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:471 +#: openarchiefbeheer/destruction/api/viewsets.py:473 msgid "List all the co-reviews that have been made for a destruction list." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:476 +#: openarchiefbeheer/destruction/api/viewsets.py:478 msgid "Create co-review" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:478 +#: openarchiefbeheer/destruction/api/viewsets.py:480 msgid "" "Create a co-review for a destruction list. Only a user currently assigned as " "co-reviewer to the destruction list can create a review." msgstr "" -"" -#: openarchiefbeheer/destruction/api/viewsets.py:504 +#: openarchiefbeheer/destruction/api/viewsets.py:506 msgid "List review items" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:506 +#: openarchiefbeheer/destruction/api/viewsets.py:508 msgid "List all the feedback to specific cases within a destruction list." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:525 +#: openarchiefbeheer/destruction/api/viewsets.py:527 msgid "List review responses" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:526 +#: openarchiefbeheer/destruction/api/viewsets.py:528 msgid "List all the responses to the reviews of a destruction list." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:530 +#: openarchiefbeheer/destruction/api/viewsets.py:532 msgid "Create a review response" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:532 +#: openarchiefbeheer/destruction/api/viewsets.py:534 msgid "" "Create a response to a review. You need to be the author of a destruction " "list for this and you need to be assigned to it. The status of the " "destruction list must be 'changes requested'." msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:557 +#: openarchiefbeheer/destruction/api/viewsets.py:559 msgid "List co-reviewers" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:558 +#: openarchiefbeheer/destruction/api/viewsets.py:560 msgid "List all the co-reviewers assigned to a destruction list." msgstr "Toon alle medebeoordelaars die aan een lijst toegewezen zijn." -#: openarchiefbeheer/destruction/api/viewsets.py:562 +#: openarchiefbeheer/destruction/api/viewsets.py:564 msgid "Update co-reviewers" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:564 +#: openarchiefbeheer/destruction/api/viewsets.py:566 msgid "Full update of the co-reviewers assigned to a destruction list." msgstr "" "Volledige update van de medebeoordelaars die aan een lijst toegewezen zijn." -#: openarchiefbeheer/destruction/api/viewsets.py:571 +#: openarchiefbeheer/destruction/api/viewsets.py:573 msgid "Partial update co-reviewers" msgstr "" -#: openarchiefbeheer/destruction/api/viewsets.py:573 +#: openarchiefbeheer/destruction/api/viewsets.py:575 msgid "Partial update of the co-reviewers assigned to a destruction list." msgstr "" @@ -777,9 +660,9 @@ msgid "co-reviewer" msgstr "" #: openarchiefbeheer/destruction/constants.py:28 -#: openarchiefbeheer/destruction/models.py:53 -#: openarchiefbeheer/destruction/models.py:455 -#: openarchiefbeheer/destruction/models.py:524 +#: openarchiefbeheer/destruction/models.py:52 +#: openarchiefbeheer/destruction/models.py:429 +#: openarchiefbeheer/destruction/models.py:498 msgid "author" msgstr "" @@ -819,294 +702,340 @@ msgstr "" msgid "succeeded" msgstr "" -#: openarchiefbeheer/destruction/models.py:47 +#: openarchiefbeheer/destruction/destruction_report.py:32 +msgid "Group" +msgstr "Groep" + +#: openarchiefbeheer/destruction/destruction_report.py:33 +msgid "Name" +msgstr "Naam" + +#: openarchiefbeheer/destruction/destruction_report.py:34 +msgid "Date/Time" +msgstr "Datum/Tijd" + +#: openarchiefbeheer/destruction/destruction_report.py:35 +msgid "Changes" +msgstr "Wijzigingen" + +#: openarchiefbeheer/destruction/destruction_report.py:51 +msgid "Has approved" +msgstr "Heeft goedgekeurd" + +#: openarchiefbeheer/destruction/destruction_report.py:57 +msgid "Date/Time of deletion" +msgstr "Datum/Tijd van vernietiging" + +#: openarchiefbeheer/destruction/destruction_report.py:58 +msgid "User who started the deletion" +msgstr "Gebruiker die de vernietiging heeft gestart" + +#: openarchiefbeheer/destruction/destruction_report.py:59 +msgid "Groups" +msgstr "Groepen" + +#: openarchiefbeheer/destruction/destruction_report.py:60 +msgid "Number of deleted cases" +msgstr "Aantal verwijderde zaken" + +#: openarchiefbeheer/destruction/destruction_report.py:102 +msgid "Deleted zaken" +msgstr "Verwijderde zaken" + +#: openarchiefbeheer/destruction/destruction_report.py:103 +msgid "Review process" +msgstr "Beoordelingsproces" + +#: openarchiefbeheer/destruction/models.py:46 msgid "name" msgstr "naam" -#: openarchiefbeheer/destruction/models.py:48 +#: openarchiefbeheer/destruction/models.py:47 msgid "uuid" msgstr "" -#: openarchiefbeheer/destruction/models.py:54 +#: openarchiefbeheer/destruction/models.py:53 msgid "Creator of destruction list." msgstr "" -#: openarchiefbeheer/destruction/models.py:57 -#: openarchiefbeheer/destruction/models.py:547 -#: openarchiefbeheer/destruction/models.py:627 +#: openarchiefbeheer/destruction/models.py:56 +#: openarchiefbeheer/destruction/models.py:521 +#: openarchiefbeheer/destruction/models.py:601 msgid "comment" msgstr "" -#: openarchiefbeheer/destruction/models.py:60 +#: openarchiefbeheer/destruction/models.py:59 msgid "Explanation of the destruction list." msgstr "Toelichting bij de vernietigingslijst." -#: openarchiefbeheer/destruction/models.py:64 +#: openarchiefbeheer/destruction/models.py:63 msgid "end" msgstr "" -#: openarchiefbeheer/destruction/models.py:68 +#: openarchiefbeheer/destruction/models.py:67 msgid "The timestamp at which all the cases in the list have been deleted." msgstr "" -#: openarchiefbeheer/destruction/models.py:72 +#: openarchiefbeheer/destruction/models.py:71 msgid "contains sensitive information" msgstr "" -#: openarchiefbeheer/destruction/models.py:74 +#: openarchiefbeheer/destruction/models.py:73 msgid "" "Specify whether this destruction list contains privacy sensitive data. If " "set to true, the report of destruction will NOT contain case descriptions or " "the remarks by the reviewers." msgstr "" -#: openarchiefbeheer/destruction/models.py:86 +#: openarchiefbeheer/destruction/models.py:85 msgid "assignee" msgstr "" -#: openarchiefbeheer/destruction/models.py:87 +#: openarchiefbeheer/destruction/models.py:86 msgid "Currently assigned user." msgstr "" -#: openarchiefbeheer/destruction/models.py:90 -#: openarchiefbeheer/destruction/models.py:315 +#: openarchiefbeheer/destruction/models.py:89 +#: openarchiefbeheer/destruction/models.py:289 msgid "status" msgstr "status" -#: openarchiefbeheer/destruction/models.py:96 +#: openarchiefbeheer/destruction/models.py:95 msgid "status changed" msgstr "" -#: openarchiefbeheer/destruction/models.py:97 +#: openarchiefbeheer/destruction/models.py:96 msgid "Tracks when the status was changed." msgstr "" -#: openarchiefbeheer/destruction/models.py:102 +#: openarchiefbeheer/destruction/models.py:101 msgid "zaak destruction report URL" msgstr "" -#: openarchiefbeheer/destruction/models.py:104 +#: openarchiefbeheer/destruction/models.py:103 msgid "" "The URL of the case containing the destruction report for this destruction " "list." msgstr "" -#: openarchiefbeheer/destruction/models.py:110 -#: openarchiefbeheer/destruction/models.py:327 -#: openarchiefbeheer/destruction/models.py:636 +#: openarchiefbeheer/destruction/models.py:109 +#: openarchiefbeheer/destruction/models.py:301 +#: openarchiefbeheer/destruction/models.py:610 msgid "processing status" msgstr "" -#: openarchiefbeheer/destruction/models.py:114 +#: openarchiefbeheer/destruction/models.py:113 msgid "Field used to track the status of the deletion of a destruction list." msgstr "" -#: openarchiefbeheer/destruction/models.py:119 +#: openarchiefbeheer/destruction/models.py:118 msgid "planned destruction date" msgstr "" -#: openarchiefbeheer/destruction/models.py:120 +#: openarchiefbeheer/destruction/models.py:119 msgid "Date from which this destruction list can be deleted." msgstr "" -#: openarchiefbeheer/destruction/models.py:125 +#: openarchiefbeheer/destruction/models.py:124 msgid "destruction report" msgstr "verklaring van vernietiging" -#: openarchiefbeheer/destruction/models.py:131 -#: openarchiefbeheer/destruction/models.py:336 +#: openarchiefbeheer/destruction/models.py:130 +#: openarchiefbeheer/destruction/models.py:310 msgid "internal result" msgstr "" -#: openarchiefbeheer/destruction/models.py:133 +#: openarchiefbeheer/destruction/models.py:132 msgid "" "After this list is processed, the URL of the resources created in Open Zaak " "to store the destruction report are stored here." msgstr "" -#: openarchiefbeheer/destruction/models.py:142 -#: openarchiefbeheer/destruction/models.py:296 -#: openarchiefbeheer/destruction/models.py:407 -#: openarchiefbeheer/destruction/models.py:449 -#: openarchiefbeheer/destruction/models.py:484 -#: openarchiefbeheer/destruction/models.py:518 +#: openarchiefbeheer/destruction/models.py:141 +#: openarchiefbeheer/destruction/models.py:270 +#: openarchiefbeheer/destruction/models.py:381 +#: openarchiefbeheer/destruction/models.py:423 +#: openarchiefbeheer/destruction/models.py:458 +#: openarchiefbeheer/destruction/models.py:492 msgid "destruction list" msgstr "vernietigingslijst" -#: openarchiefbeheer/destruction/models.py:143 +#: openarchiefbeheer/destruction/models.py:142 msgid "destruction lists" msgstr "" -#: openarchiefbeheer/destruction/models.py:302 +#: openarchiefbeheer/destruction/models.py:276 msgid "zaak" msgstr "" -#: openarchiefbeheer/destruction/models.py:307 +#: openarchiefbeheer/destruction/models.py:281 #: openarchiefbeheer/selection/models.py:15 msgid "zaak url" msgstr "" -#: openarchiefbeheer/destruction/models.py:310 +#: openarchiefbeheer/destruction/models.py:284 msgid "" "Keep a relation to the zaak for when the zaken cached are being re-synced." msgstr "" -#: openarchiefbeheer/destruction/models.py:321 +#: openarchiefbeheer/destruction/models.py:295 msgid "extra zaak data" msgstr "" -#: openarchiefbeheer/destruction/models.py:322 +#: openarchiefbeheer/destruction/models.py:296 msgid "Additional information of the zaak" msgstr "" -#: openarchiefbeheer/destruction/models.py:331 +#: openarchiefbeheer/destruction/models.py:305 msgid "" "Field used to track the status of the deletion of a destruction list item." msgstr "" -#: openarchiefbeheer/destruction/models.py:338 +#: openarchiefbeheer/destruction/models.py:312 msgid "" "When this item gets processed, the URL of the resources deleted from Open " "Zaak get stored here." msgstr "" -#: openarchiefbeheer/destruction/models.py:345 -#: openarchiefbeheer/destruction/models.py:490 +#: openarchiefbeheer/destruction/models.py:319 +#: openarchiefbeheer/destruction/models.py:464 msgid "destruction list item" msgstr "" -#: openarchiefbeheer/destruction/models.py:346 +#: openarchiefbeheer/destruction/models.py:320 msgid "destruction list items" msgstr "" -#: openarchiefbeheer/destruction/models.py:413 +#: openarchiefbeheer/destruction/models.py:387 msgid "The user assigned to the destruction list." msgstr "" -#: openarchiefbeheer/destruction/models.py:415 +#: openarchiefbeheer/destruction/models.py:389 msgid "assigned on" msgstr "" -#: openarchiefbeheer/destruction/models.py:417 +#: openarchiefbeheer/destruction/models.py:391 msgid "role" msgstr "" -#: openarchiefbeheer/destruction/models.py:424 +#: openarchiefbeheer/destruction/models.py:398 msgid "destruction list assignee" msgstr "" -#: openarchiefbeheer/destruction/models.py:425 +#: openarchiefbeheer/destruction/models.py:399 msgid "destruction list assignees" msgstr "" -#: openarchiefbeheer/destruction/models.py:456 -#: openarchiefbeheer/destruction/models.py:525 +#: openarchiefbeheer/destruction/models.py:430 +#: openarchiefbeheer/destruction/models.py:499 msgid "User who created the review." msgstr "" -#: openarchiefbeheer/destruction/models.py:459 +#: openarchiefbeheer/destruction/models.py:433 msgid "decision" msgstr "" -#: openarchiefbeheer/destruction/models.py:465 -#: openarchiefbeheer/destruction/models.py:529 +#: openarchiefbeheer/destruction/models.py:439 +#: openarchiefbeheer/destruction/models.py:503 msgid "list feedback" msgstr "" -#: openarchiefbeheer/destruction/models.py:468 -#: openarchiefbeheer/destruction/models.py:532 +#: openarchiefbeheer/destruction/models.py:442 +#: openarchiefbeheer/destruction/models.py:506 msgid "Feedback about the destruction list as a whole." msgstr "" -#: openarchiefbeheer/destruction/models.py:472 +#: openarchiefbeheer/destruction/models.py:446 msgid "destruction list review" msgstr "" -#: openarchiefbeheer/destruction/models.py:473 +#: openarchiefbeheer/destruction/models.py:447 msgid "destruction list reviews" msgstr "" -#: openarchiefbeheer/destruction/models.py:496 -#: openarchiefbeheer/destruction/models.py:544 +#: openarchiefbeheer/destruction/models.py:470 +#: openarchiefbeheer/destruction/models.py:518 msgid "review" msgstr "" -#: openarchiefbeheer/destruction/models.py:499 +#: openarchiefbeheer/destruction/models.py:473 msgid "feedback" msgstr "" -#: openarchiefbeheer/destruction/models.py:502 +#: openarchiefbeheer/destruction/models.py:476 msgid "What needs to be changed about the case." msgstr "" -#: openarchiefbeheer/destruction/models.py:506 +#: openarchiefbeheer/destruction/models.py:480 msgid "destruction list item review" msgstr "" -#: openarchiefbeheer/destruction/models.py:507 +#: openarchiefbeheer/destruction/models.py:481 msgid "destruction list item reviews" msgstr "" -#: openarchiefbeheer/destruction/models.py:550 +#: openarchiefbeheer/destruction/models.py:524 msgid "The response of the author of the destruction list to a review." msgstr "" -#: openarchiefbeheer/destruction/models.py:555 +#: openarchiefbeheer/destruction/models.py:529 msgid "review response" msgstr "" -#: openarchiefbeheer/destruction/models.py:556 +#: openarchiefbeheer/destruction/models.py:530 msgid "review responses" msgstr "" -#: openarchiefbeheer/destruction/models.py:605 +#: openarchiefbeheer/destruction/models.py:579 msgid "review item" msgstr "" -#: openarchiefbeheer/destruction/models.py:608 +#: openarchiefbeheer/destruction/models.py:582 msgid "action item" msgstr "" -#: openarchiefbeheer/destruction/models.py:613 +#: openarchiefbeheer/destruction/models.py:587 msgid "action zaak type" msgstr "" -#: openarchiefbeheer/destruction/models.py:616 +#: openarchiefbeheer/destruction/models.py:590 msgid "What type of change to do on the case. " msgstr "" -#: openarchiefbeheer/destruction/models.py:620 +#: openarchiefbeheer/destruction/models.py:594 msgid "action case" msgstr "" -#: openarchiefbeheer/destruction/models.py:622 +#: openarchiefbeheer/destruction/models.py:596 msgid "Fields that should be changed on the case." msgstr "" -#: openarchiefbeheer/destruction/models.py:631 +#: openarchiefbeheer/destruction/models.py:605 msgid "" "The response of the author of the destruction list to feedback of the " "reviewer on a specific case." msgstr "" -#: openarchiefbeheer/destruction/models.py:640 +#: openarchiefbeheer/destruction/models.py:614 msgid "" "Field used to track the status of the changes that should be made to a " "destruction list item and the corresponding case." msgstr "" -#: openarchiefbeheer/destruction/models.py:646 +#: openarchiefbeheer/destruction/models.py:620 msgid "review item response" msgstr "" -#: openarchiefbeheer/destruction/models.py:647 +#: openarchiefbeheer/destruction/models.py:621 msgid "review item responses" msgstr "" #: openarchiefbeheer/destruction/utils.py:165 #: openarchiefbeheer/destruction/utils.py:223 +#, python-format msgid "Destruction report of list: %(list_name)s" -msgstr "Verklaring van vernietiging voor vernietigingslijst: \"%(list_name)s\"." +msgstr "" +"Verklaring van vernietiging voor vernietigingslijst: \"%(list_name)s\"." #: openarchiefbeheer/emails/admin.py:13 msgid "Template review request" @@ -1385,6 +1314,7 @@ msgid "They added the comment: %(comment)s." msgstr "" #: openarchiefbeheer/logging/templates/logging/destruction_list_created.txt:1 +#, python-format msgid "" "User %(author)s (member of group %(groups)s) has created destruction list " "\"%(list_name)s\"." @@ -1395,8 +1325,22 @@ msgstr[0] "" "Gebruiker %(author)s (lid van groep %(groups)s) heeft de vernietigingslijst " "\"%(list_name)s\" aangemaakt." msgstr[1] "" -"Gebruiker %(author)s (lid van groepen %(groups)s) heeft de vernietigingslijst " -"\"%(list_name)s\" aangemaakt." +"Gebruiker %(author)s (lid van groepen %(groups)s) heeft de " +"vernietigingslijst \"%(list_name)s\" aangemaakt." + +#: openarchiefbeheer/logging/templates/logging/destruction_list_deletion_triggered.txt:1 +msgid "" +"User %(record_manager)s (member of group %(groups)s) has triggered the " +"destruction of destruction list \"%(list_name)s\"." +msgid_plural "" +"User %(record_manager)s (member of groups %(groups)s) has triggered the " +"destruction of destruction list \"%(list_name)s\"." +msgstr[0] "" +"Gebruiker %(record_manager)s (lid van groep %(groups)s) heeft het " +"vernietigen van vernietigingslijst \"%(list_name)s\" gestart." +msgstr[1] "" +"Gebruiker %(record_manager)s (lid van groepen %(groups)s) heeft het " +"vernietigen van vernietigingslijst \"%(list_name)s\" gestart." #: openarchiefbeheer/logging/templates/logging/destruction_list_finalized.txt:1 #, python-format @@ -1792,19 +1736,19 @@ msgstr "" msgid "Filter on zaken that have received negative feedback in a review." msgstr "" -#: openarchiefbeheer/zaken/api/serializers.py:62 +#: openarchiefbeheer/zaken/api/serializers.py:63 msgid "The description field of the choice." msgstr "" -#: openarchiefbeheer/zaken/api/serializers.py:63 +#: openarchiefbeheer/zaken/api/serializers.py:64 msgid "The URL of the choice." msgstr "" -#: openarchiefbeheer/zaken/api/serializers.py:65 +#: openarchiefbeheer/zaken/api/serializers.py:66 msgid "Any extra information about this choice." msgstr "" -#: openarchiefbeheer/zaken/api/serializers.py:74 +#: openarchiefbeheer/zaken/api/serializers.py:75 msgid "" "The URL of the zaak for which the selectielijstklasse choices are needed." msgstr "" @@ -1885,4 +1829,120 @@ msgstr "" #: openarchiefbeheer/zaken/templates/admin/zaken/change_list_object_tools.html:8 msgid "Resync cases" -msgstr "" \ No newline at end of file +msgstr "" + +#: openarchiefbeheer/config/admin.py:13 +msgid "Short procedure" +msgstr "" + +#: openarchiefbeheer/config/admin.py:19 +msgid "Zaak report destruction settings" +msgstr "" + +#: openarchiefbeheer/config/api/serializers.py:35 +msgid "OIDC authentication URL" +msgstr "" + +#: openarchiefbeheer/config/api/serializers.py:37 +msgid "" +"URL where to start the OIDC login flow if it is enabled. If it is not " +"enabled, it will be an empty string." +msgstr "" + +#: openarchiefbeheer/config/api/views.py:25 +msgid "Retrieve archive configuration" +msgstr "" + +#: openarchiefbeheer/config/api/views.py:26 +msgid "Retrieve archive configuration." +msgstr "" + +#: openarchiefbeheer/config/api/views.py:48 +#: openarchiefbeheer/config/api/views.py:58 +msgid "Update archive configuration" +msgstr "" + +#: openarchiefbeheer/config/api/views.py:49 +msgid "Update archive configuration." +msgstr "" + +#: openarchiefbeheer/config/api/views.py:59 +msgid "Partially update archive configuration." +msgstr "" + +#: openarchiefbeheer/config/api/views.py:72 +msgid "Retrieve OIDC info" +msgstr "" + +#: openarchiefbeheer/config/api/views.py:73 +msgid "Returns info about OIDC that is needed by the frontend. " +msgstr "" + +#: openarchiefbeheer/config/models.py:11 +msgid "zaaktypes short process" +msgstr "" + +#: openarchiefbeheer/config/models.py:13 +msgid "" +"If a destruction list only contains cases with types present in this field, " +"this list will have a shortened review process. This means that no archivist " +"will have to approve this list before it is deleted." +msgstr "" + +#: openarchiefbeheer/config/models.py:25 +msgid "Source organisation RSIN" +msgstr "" + +#: openarchiefbeheer/config/models.py:32 +msgid "" +"The case type URL to use when creating the case for the destruction list " +"deletion." +msgstr "" + +#: openarchiefbeheer/config/models.py:40 +msgid "" +"The status type URL to use when creating the case for the destruction list " +"deletion." +msgstr "" + +#: openarchiefbeheer/config/models.py:48 +msgid "" +"The result type URL to use when creating the case for the destruction list " +"deletion." +msgstr "" + +#: openarchiefbeheer/config/models.py:56 +msgid "" +"The document type URL to use when creating the case for the destruction list " +"deletion." +msgstr "" + +#: openarchiefbeheer/config/models.py:64 +msgid "" +"The selectielijstklasse URL to use when creating the case for the " +"destruction list deletion." +msgstr "" + +#: openarchiefbeheer/config/models.py:69 +msgid "archive configuration" +msgstr "" + +#: openarchiefbeheer/config/models.py:70 +msgid "archive configurations" +msgstr "" + +#: openarchiefbeheer/config/models.py:79 +msgid "selectielijst API service" +msgstr "" + +#: openarchiefbeheer/config/models.py:83 +msgid "Which service to use to query the Selectielijst API." +msgstr "" + +#: openarchiefbeheer/config/models.py:87 +msgid "API configuration" +msgstr "API-configuratie" + +#: openarchiefbeheer/config/models.py:88 +msgid "API configurations" +msgstr "API-configuraties"