From 6ef4f6f5b3bfb1468ef8407a3b8daafe81a62ba5 Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 4 Dec 2023 14:02:16 +0100 Subject: [PATCH 1/7] adds fields --- .bumpversion.cfg | 2 +- package.json | 2 +- src/drc/__init__.py | 2 +- .../enkelvoudig_informatieobject.py | 4 + src/drc/api/tests/test_dso_api_strategy.py | 2 +- src/drc/conf/api.py | 2 +- src/drc/datamodel/constants.py | 22 +- .../models/enkelvoudig_informatieobject.py | 78 ++++++ src/openapi.yaml | 251 ++++++++++++++++-- src/resources.md | 10 +- 10 files changed, 349 insertions(+), 26 deletions(-) diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 77a94cf0..60e26e03 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = False tag = False -current_version = 1.4.3 +current_version = 1.5.0 parse = (?P\d+)\.(?P\d+)\.(?P\d+)([-](?P(rc|alpha))+(?P\d+))? serialize = {major}.{minor}.{patch}-{release}{build} diff --git a/package.json b/package.json index 45befd19..38cb0516 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "drc", - "version": "1.4.3", + "version": "1.5.0", "description": "drc referentie implementatie API", "main": "src/index.js", "directories": { diff --git a/src/drc/__init__.py b/src/drc/__init__.py index dc821658..e0b8de6e 100644 --- a/src/drc/__init__.py +++ b/src/drc/__init__.py @@ -7,7 +7,7 @@ import re from collections import namedtuple -__version__ = "1.4.3" +__version__ = "1.5.0" __author__ = "VNG Realisatie" __homepage__ = "https://github.com/VNG-Realisatie/documenten-api" __docformat__ = "restructuredtext" diff --git a/src/drc/api/serializers/enkelvoudig_informatieobject.py b/src/drc/api/serializers/enkelvoudig_informatieobject.py index 0d74ac8f..c07d1af2 100644 --- a/src/drc/api/serializers/enkelvoudig_informatieobject.py +++ b/src/drc/api/serializers/enkelvoudig_informatieobject.py @@ -132,6 +132,10 @@ class Meta: "locked", "bestandsdelen", "trefwoorden", + "archiefstatus", + "bevat_persoonsgegevens", + "ontvangen", + "vervallen", ) extra_kwargs = { "informatieobjecttype": { diff --git a/src/drc/api/tests/test_dso_api_strategy.py b/src/drc/api/tests/test_dso_api_strategy.py index 79d4d0fa..9c1f55c7 100644 --- a/src/drc/api/tests/test_dso_api_strategy.py +++ b/src/drc/api/tests/test_dso_api_strategy.py @@ -23,7 +23,7 @@ def test_api_19_documentation_version_yaml(self): @override_settings(ROOT_URLCONF="drc.api.tests.test_urls") def test_api_24_version_header(self): response = self.client.get("/test-view") - self.assertEqual(response["API-version"], "1.4.3") + self.assertEqual(response["API-version"], "1.5.0") class DSOApi50Tests(APITestCase): diff --git a/src/drc/conf/api.py b/src/drc/conf/api.py index 81197d6b..854e95c0 100644 --- a/src/drc/conf/api.py +++ b/src/drc/conf/api.py @@ -2,7 +2,7 @@ from vng_api_common.conf.api import * # noqa - imports white-listed -API_VERSION = "1.4.3" +API_VERSION = "1.5.0" REST_FRAMEWORK = BASE_REST_FRAMEWORK.copy() diff --git a/src/drc/datamodel/constants.py b/src/drc/datamodel/constants.py index b8e9b93f..8d4f4ec0 100644 --- a/src/drc/datamodel/constants.py +++ b/src/drc/datamodel/constants.py @@ -12,10 +12,14 @@ class Statussen(DjangoChoices): _("In bewerking"), description=_("Aan het informatieobject wordt nog gewerkt."), ) - ter_vaststelling = ChoiceItem( - "ter_vaststelling", - _("Ter vaststelling"), - description=_("Informatieobject gereed maar moet nog vastgesteld " "worden."), + concept = ChoiceItem( + "concept", + _("Concept"), + description=_( + "Het document is inhoudelijk klaar om voorgelegd te" + "worden aan anderen en zo nodig aangepast te worden op" + "basis van commentaar.." + ), ) definitief = ChoiceItem( "definitief", @@ -25,6 +29,16 @@ class Statussen(DjangoChoices): "vastgesteld dan wel ontvangen." ), ) + ter_vaststelling = ChoiceItem( + "ter_vaststelling", + _("Ter vaststelling"), + description=_("Informatieobject gereed maar moet nog vastgesteld " "worden."), + ) + Vastgesteld = ChoiceItem( + "vastgesteld", + _("Vastgesteld"), + description=_("Het besluitvormingstraject is afgerond."), + ) gearchiveerd = ChoiceItem( "gearchiveerd", _("Gearchiveerd"), diff --git a/src/drc/datamodel/models/enkelvoudig_informatieobject.py b/src/drc/datamodel/models/enkelvoudig_informatieobject.py index 679bbdec..6c7026a2 100644 --- a/src/drc/datamodel/models/enkelvoudig_informatieobject.py +++ b/src/drc/datamodel/models/enkelvoudig_informatieobject.py @@ -5,6 +5,7 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ +from djchoices import ChoiceItem, DjangoChoices from privates.fields import PrivateMediaFileField from vng_api_common.caching import ETagMixin from vng_api_common.descriptors import GegevensGroepType @@ -14,6 +15,43 @@ from .informatieobject import InformatieObject +class Persoonsgegevens(DjangoChoices): + onbekend = ChoiceItem( + "onbekend", + _( + "Niet bekend of het document persoonsgegevens bevat die" + "niet vrijelijk openbaar gemaakt mogen worden." + ), + ) + ja = ChoiceItem( + "ja", + _( + "Niet bekend of het document persoonsgegevens bevat die" + "niet vrijelijk openbaar gemaakt mogen worden." + ), + ) + nee = ChoiceItem( + "nee", + _( + "Bevat geen persoonsgegevens die niet vrijelijk openbaar" + "gemaakt mogen worden." + ), + ) + + +class ArchiefStatusEIO(DjangoChoices): + nog_te_archiveren = ChoiceItem( + "nog_te_archiveren", + _("De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd."), + ) + gearchiveerd = ChoiceItem( + "gearchiveerd", + _( + "De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt." + ), + ) + + class EnkelvoudigInformatieObjectCanonical(models.Model): """ Indicates the identity of a document @@ -89,6 +127,7 @@ class EnkelvoudigInformatieObject(ETagMixin, APIMixin, InformatieObject): "informatieobject is vastgelegd, inclusief extensie." ), ) + bestandsomvang = models.BigIntegerField( _("bestandsomvang"), validators=[MinValueValidator(0)], @@ -156,5 +195,44 @@ class EnkelvoudigInformatieObject(ETagMixin, APIMixin, InformatieObject): null=True, ) + vervallen = models.BooleanField( + _("vervallen"), + blank=True, + default=None, + null=True, + help_text=_( + "Legt vast of het document een rol speelt in het huidige of toekomstige proces." + ), + ) + + ontvangen = models.BooleanField( + _("ontvangen"), + blank=True, + default=None, + null=True, + help_text=_("Legt vast of het document afkomstig is van een externe partij."), + ) + + archiefstatus = models.CharField( + _("archiefstatus"), + max_length=40, + choices=ArchiefStatusEIO.choices, + default=ArchiefStatusEIO.nog_te_archiveren, + help_text=_( + "Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden." + ), + ) + + bevat_persoonsgegevens = models.CharField( + _("bevat persoonsgegevens"), + max_length=40, + null=True, + choices=Persoonsgegevens.choices, + default=Persoonsgegevens.onbekend, + help_text=_( + "Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden." + ), + ) + class Meta: unique_together = ("uuid", "versie") diff --git a/src/openapi.yaml b/src/openapi.yaml index 3d0eef1b..c1e27122 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: Documenten API - version: 1.4.3 + version: 1.5.0 description: "Een API om een documentregistratiecomponent (DRC) te benaderen.\n\n\ In een documentregistratiecomponent worden INFORMATIEOBJECTen opgeslagen. Een\n\ @@ -83,6 +83,7 @@ paths: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/BestandsDeelRequest' + required: true security: - JWT-Claims: - documenten.bijwerken @@ -5279,6 +5280,11 @@ components: - sha_512 - sha_3 type: string + ArchiefstatusEnum: + enum: + - nog_te_archiveren + - gearchiveerd + type: string AuditTrail: type: object properties: @@ -5452,7 +5458,6 @@ components: title: voltooid lock: type: string - readOnly: true description: Hash string, which represents id of the lock of related informatieobject title: lock required: @@ -5470,6 +5475,13 @@ components: writeOnly: true description: De (binaire) bestandsinhoud van dit specifieke bestandsdeel. title: inhoud + lock: + type: string + minLength: 1 + description: Hash string, which represents id of the lock of related informatieobject + title: lock + required: + - lock BestandsDeelResponse: type: object properties: @@ -5510,6 +5522,12 @@ components: required: - lock - url + BevatPersoonsgegevensEnum: + enum: + - onbekend + - ja + - nee + type: string BinnenlandsCorrespondentieadresVerzending: type: object description: @@ -5922,12 +5940,17 @@ components: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. - * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar - moet nog vastgesteld worden. + * `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd + teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. + * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar + moet nog vastgesteld worden. + + * `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. + * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element." title: status @@ -6086,6 +6109,34 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + archiefstatus: + allOf: + - $ref: '#/components/schemas/ArchiefstatusEnum' + description: + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + title: archiefstatus + bevatPersoonsgegevens: + nullable: true + description: + Legt vast of het document persoonsgegevens bevat die niet vrijelijk + openbaar gemaakt mogen worden. + title: bevat persoonsgegevens + oneOf: + - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' + - $ref: '#/components/schemas/NullEnum' + ontvangen: + type: boolean + nullable: true + description: Legt vast of het document afkomstig is van een externe partij. + title: ontvangen + vervallen: + type: boolean + nullable: true + description: + Legt vast of het document een rol speelt in het huidige of + toekomstige proces. + title: vervallen required: - auteur - beginRegistratie @@ -6183,12 +6234,17 @@ components: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. - * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar - moet nog vastgesteld worden. + * `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd + teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. + * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar + moet nog vastgesteld worden. + + * `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. + * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element." title: status @@ -6321,6 +6377,34 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + archiefstatus: + allOf: + - $ref: '#/components/schemas/ArchiefstatusEnum' + description: + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + title: archiefstatus + bevatPersoonsgegevens: + nullable: true + description: + Legt vast of het document persoonsgegevens bevat die niet vrijelijk + openbaar gemaakt mogen worden. + title: bevat persoonsgegevens + oneOf: + - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' + - $ref: '#/components/schemas/NullEnum' + ontvangen: + type: boolean + nullable: true + description: Legt vast of het document afkomstig is van een externe partij. + title: ontvangen + vervallen: + type: boolean + nullable: true + description: + Legt vast of het document een rol speelt in het huidige of + toekomstige proces. + title: vervallen required: - auteur - bronorganisatie @@ -6420,12 +6504,17 @@ components: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. - * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar - moet nog vastgesteld worden. + * `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd + teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. + * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar + moet nog vastgesteld worden. + + * `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. + * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element." title: status @@ -6584,6 +6673,34 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + archiefstatus: + allOf: + - $ref: '#/components/schemas/ArchiefstatusEnum' + description: + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + title: archiefstatus + bevatPersoonsgegevens: + nullable: true + description: + Legt vast of het document persoonsgegevens bevat die niet vrijelijk + openbaar gemaakt mogen worden. + title: bevat persoonsgegevens + oneOf: + - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' + - $ref: '#/components/schemas/NullEnum' + ontvangen: + type: boolean + nullable: true + description: Legt vast of het document afkomstig is van een externe partij. + title: ontvangen + vervallen: + type: boolean + nullable: true + description: + Legt vast of het document een rol speelt in het huidige of + toekomstige proces. + title: vervallen required: - auteur - beginRegistratie @@ -6681,12 +6798,17 @@ components: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. - * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar - moet nog vastgesteld worden. + * `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd + teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. + * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar + moet nog vastgesteld worden. + + * `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. + * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element." title: status @@ -6819,6 +6941,34 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + archiefstatus: + allOf: + - $ref: '#/components/schemas/ArchiefstatusEnum' + description: + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + title: archiefstatus + bevatPersoonsgegevens: + nullable: true + description: + Legt vast of het document persoonsgegevens bevat die niet vrijelijk + openbaar gemaakt mogen worden. + title: bevat persoonsgegevens + oneOf: + - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' + - $ref: '#/components/schemas/NullEnum' + ontvangen: + type: boolean + nullable: true + description: Legt vast of het document afkomstig is van een externe partij. + title: ontvangen + vervallen: + type: boolean + nullable: true + description: + Legt vast of het document een rol speelt in het huidige of + toekomstige proces. + title: vervallen lock: type: string writeOnly: true @@ -7101,6 +7251,9 @@ components: title: lock required: - lock + NullEnum: + enum: + - null ObjectInformatieObject: type: object properties: @@ -7378,12 +7531,17 @@ components: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. - * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar - moet nog vastgesteld worden. + * `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd + teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. + * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar + moet nog vastgesteld worden. + + * `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. + * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element." title: status @@ -7516,6 +7674,34 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + archiefstatus: + allOf: + - $ref: '#/components/schemas/ArchiefstatusEnum' + description: + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + title: archiefstatus + bevatPersoonsgegevens: + nullable: true + description: + Legt vast of het document persoonsgegevens bevat die niet vrijelijk + openbaar gemaakt mogen worden. + title: bevat persoonsgegevens + oneOf: + - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' + - $ref: '#/components/schemas/NullEnum' + ontvangen: + type: boolean + nullable: true + description: Legt vast of het document afkomstig is van een externe partij. + title: ontvangen + vervallen: + type: boolean + nullable: true + description: + Legt vast of het document een rol speelt in het huidige of + toekomstige proces. + title: vervallen lock: type: string writeOnly: true @@ -7824,12 +8010,17 @@ components: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. - * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar - moet nog vastgesteld worden. + * `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd + teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. + * `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar + moet nog vastgesteld worden. + + * `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. + * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element." title: status @@ -7988,6 +8179,34 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + archiefstatus: + allOf: + - $ref: '#/components/schemas/ArchiefstatusEnum' + description: + Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde + termijn vernietigd moet worden. + title: archiefstatus + bevatPersoonsgegevens: + nullable: true + description: + Legt vast of het document persoonsgegevens bevat die niet vrijelijk + openbaar gemaakt mogen worden. + title: bevat persoonsgegevens + oneOf: + - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' + - $ref: '#/components/schemas/NullEnum' + ontvangen: + type: boolean + nullable: true + description: Legt vast of het document afkomstig is van een externe partij. + title: ontvangen + vervallen: + type: boolean + nullable: true + description: + Legt vast of het document een rol speelt in het huidige of + toekomstige proces. + title: vervallen required: - auteur - beginRegistratie @@ -8009,8 +8228,10 @@ components: StatusEnum: enum: - in_bewerking - - ter_vaststelling + - concept - definitief + - ter_vaststelling + - vastgesteld - gearchiveerd type: string UnlockEnkelvoudigInformatieObjectRequest: diff --git a/src/resources.md b/src/resources.md index c4507ab4..80ed90e5 100755 --- a/src/resources.md +++ b/src/resources.md @@ -60,7 +60,7 @@ Objecttype op [GEMMA Online](https://www.gemmaonline.nl/index.php/Rgbz_1.0/doc/o | volgnummer | Een volgnummer dat de volgorde van de bestandsdelen aangeeft. | integer | ja | ~~C~~​R​~~U~~​~~D~~ | | omvang | De grootte van dit specifieke bestandsdeel. | integer | ja | ~~C~~​R​~~U~~​~~D~~ | | voltooid | Indicatie of dit bestandsdeel volledig is geupload. Dat wil zeggen: het aantal bytes dat staat genoemd bij grootte is daadwerkelijk ontvangen. | boolean | ja | ~~C~~​R​~~U~~​~~D~~ | -| lock | Hash string, which represents id of the lock of related informatieobject | string | ja | ~~C~~​R​~~U~~​~~D~~ | +| lock | Hash string, which represents id of the lock of related informatieobject | string | ja | C​R​U​D | ## EnkelvoudigInformatieObject @@ -91,8 +91,10 @@ Uitleg bij mogelijke waarden: Uitleg bij mogelijke waarden: * `in_bewerking` - (In bewerking) Aan het informatieobject wordt nog gewerkt. -* `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar moet nog vastgesteld worden. +* `concept` - (Concept) Het document is inhoudelijk klaar om voorgelegd teworden aan anderen en zo nodig aangepast te worden opbasis van commentaar.. * `definitief` - (Definitief) Informatieobject door bevoegd iets of iemand vastgesteld dan wel ontvangen. +* `ter_vaststelling` - (Ter vaststelling) Informatieobject gereed maar moet nog vastgesteld worden. +* `vastgesteld` - (Vastgesteld) Het besluitvormingstraject is afgerond. * `gearchiveerd` - (Gearchiveerd) Informatieobject duurzaam bewaarbaar gemaakt; een gearchiveerd informatie-element. | | nee | C​R​U​D | | formaat | Het "Media Type" (voorheen "MIME type") voor de wijze waaropde inhoud van het INFORMATIEOBJECT is vastgelegd in een computerbestand. Voorbeeld: `application/msword`. Zie: https://www.iana.org/assignments/media-types/media-types.xhtml | string | nee | C​R​U​D | | taal | Een ISO 639-2/B taalcode waarin de inhoud van het INFORMATIEOBJECT is vastgelegd. Voorbeeld: `dut`. Zie: https://www.iso.org/standard/4767.html | string | ja | C​R​U​D | @@ -117,6 +119,10 @@ Uitleg bij mogelijke waarden: | locked | Geeft aan of het document gelocked is. Alleen als een document gelocked is, mogen er aanpassingen gemaakt worden. | boolean | ja | ~~C~~​R​~~U~~​~~D~~ | | bestandsdelen | | array | ja | ~~C~~​R​~~U~~​~~D~~ | | trefwoorden | Een lijst van trefwoorden gescheiden door comma's. | array | nee | C​R​U​D | +| archiefstatus | Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden. | | nee | C​R​U​D | +| bevatPersoonsgegevens | Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden. | | nee | C​R​U​D | +| ontvangen | Legt vast of het document afkomstig is van een externe partij. | boolean | nee | C​R​U​D | +| vervallen | Legt vast of het document een rol speelt in het huidige of toekomstige proces. | boolean | nee | C​R​U​D | ## Gebruiksrechten From b01e7e11bad39e288e464abd6d5f3f6f3387e1ec Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 4 Dec 2023 14:09:25 +0100 Subject: [PATCH 2/7] adds migrations --- CHANGELOG.rst | 7 ++++ README.rst | 6 ++- .../0065_alter_bestandsdeel_lock.py | 23 +++++++++++ .../migrations/0066_auto_20231204_1305.py | 38 +++++++++++++++++++ 4 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py create mode 100644 src/drc/datamodel/migrations/0066_auto_20231204_1305.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a0e6f080..0af62f34 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,5 +1,12 @@ =========== Wijzigingen +=========== +1.5.0 (2023-13-05) +=========== + +- **Changed:** Status within EIO to include more fields. +- **Added:** Fields on EIO (vervallen, ontvangen, archiefstatus, bevat_persoonsgegevens). + =========== 1.4.3 (2023-10-24) =========== diff --git a/README.rst b/README.rst index e3b746d3..fcc7a502 100644 --- a/README.rst +++ b/README.rst @@ -2,7 +2,7 @@ Documenten API ============== -:Version: 1.4.3 +:Version: 1.5.0 :Source: https://github.com/VNG-Realisatie/documenten-api :Keywords: zaken, zaakgericht werken, GEMMA, RGBZ, DRC @@ -24,7 +24,9 @@ Versie Release datum API specificatie master n.v.t. `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ (`verschillen `_) -1.4.3 2023-10-24 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ +1.5.0 2023-12-05 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ + `Swagger `_ +1.4.3 2023-10-24 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ 1.4.1 2023-08-29 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ diff --git a/src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py b/src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py new file mode 100644 index 00000000..9410352f --- /dev/null +++ b/src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.13 on 2023-10-23 07:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("datamodel", "0064_bestandsdeel_lock"), + ] + + operations = [ + migrations.AlterField( + model_name="bestandsdeel", + name="lock", + field=models.CharField( + blank=True, + default="", + help_text="Hash string, which represents id of the lock", + max_length=100, + ), + ), + ] diff --git a/src/drc/datamodel/migrations/0066_auto_20231204_1305.py b/src/drc/datamodel/migrations/0066_auto_20231204_1305.py new file mode 100644 index 00000000..911c41b1 --- /dev/null +++ b/src/drc/datamodel/migrations/0066_auto_20231204_1305.py @@ -0,0 +1,38 @@ +# Generated by Django 3.2.13 on 2023-12-04 13:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('datamodel', '0065_alter_bestandsdeel_lock'), + ] + + operations = [ + migrations.AddField( + model_name='enkelvoudiginformatieobject', + name='archiefstatus', + field=models.CharField(choices=[('nog_te_archiveren', 'De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd.'), ('gearchiveerd', 'De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt.')], default='nog_te_archiveren', help_text='Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden.', max_length=40, verbose_name='archiefstatus'), + ), + migrations.AddField( + model_name='enkelvoudiginformatieobject', + name='bevat_persoonsgegevens', + field=models.CharField(choices=[('onbekend', 'Niet bekend of het document persoonsgegevens bevat dieniet vrijelijk openbaar gemaakt mogen worden.'), ('ja', 'Niet bekend of het document persoonsgegevens bevat dieniet vrijelijk openbaar gemaakt mogen worden.'), ('nee', 'Bevat geen persoonsgegevens die niet vrijelijk openbaargemaakt mogen worden.')], default='onbekend', help_text='Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden.', max_length=40, null=True, verbose_name='bevat persoonsgegevens'), + ), + migrations.AddField( + model_name='enkelvoudiginformatieobject', + name='ontvangen', + field=models.BooleanField(blank=True, default=None, help_text='Legt vast of het document afkomstig is van een externe partij.', null=True, verbose_name='ontvangen'), + ), + migrations.AddField( + model_name='enkelvoudiginformatieobject', + name='vervallen', + field=models.BooleanField(blank=True, default=None, help_text='Legt vast of het document een rol speelt in het huidige of toekomstige proces.', null=True, verbose_name='vervallen'), + ), + migrations.AlterField( + model_name='enkelvoudiginformatieobject', + name='status', + field=models.CharField(blank=True, choices=[('in_bewerking', 'In bewerking'), ('concept', 'Concept'), ('definitief', 'Definitief'), ('ter_vaststelling', 'Ter vaststelling'), ('vastgesteld', 'Vastgesteld'), ('gearchiveerd', 'Gearchiveerd')], help_text="Aanduiding van de stand van zaken van een INFORMATIEOBJECT. De waarden 'in bewerking' en 'ter vaststelling' komen niet voor als het attribuut `ontvangstdatum` van een waarde is voorzien. Wijziging van de Status in 'gearchiveerd' impliceert dat het informatieobject een duurzaam, niet-wijzigbaar Formaat dient te hebben.", max_length=20, verbose_name='status'), + ), + ] From ce7cd95d5141b67f1880e8a15b76e22d7ce80686 Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 4 Dec 2023 14:11:09 +0100 Subject: [PATCH 3/7] runs black --- .../migrations/0066_auto_20231204_1305.py | 92 +++++++++++++++---- 1 file changed, 76 insertions(+), 16 deletions(-) diff --git a/src/drc/datamodel/migrations/0066_auto_20231204_1305.py b/src/drc/datamodel/migrations/0066_auto_20231204_1305.py index 911c41b1..19fc866f 100644 --- a/src/drc/datamodel/migrations/0066_auto_20231204_1305.py +++ b/src/drc/datamodel/migrations/0066_auto_20231204_1305.py @@ -6,33 +6,93 @@ class Migration(migrations.Migration): dependencies = [ - ('datamodel', '0065_alter_bestandsdeel_lock'), + ("datamodel", "0065_alter_bestandsdeel_lock"), ] operations = [ migrations.AddField( - model_name='enkelvoudiginformatieobject', - name='archiefstatus', - field=models.CharField(choices=[('nog_te_archiveren', 'De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd.'), ('gearchiveerd', 'De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt.')], default='nog_te_archiveren', help_text='Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden.', max_length=40, verbose_name='archiefstatus'), + model_name="enkelvoudiginformatieobject", + name="archiefstatus", + field=models.CharField( + choices=[ + ( + "nog_te_archiveren", + "De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd.", + ), + ( + "gearchiveerd", + "De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt.", + ), + ], + default="nog_te_archiveren", + help_text="Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden.", + max_length=40, + verbose_name="archiefstatus", + ), ), migrations.AddField( - model_name='enkelvoudiginformatieobject', - name='bevat_persoonsgegevens', - field=models.CharField(choices=[('onbekend', 'Niet bekend of het document persoonsgegevens bevat dieniet vrijelijk openbaar gemaakt mogen worden.'), ('ja', 'Niet bekend of het document persoonsgegevens bevat dieniet vrijelijk openbaar gemaakt mogen worden.'), ('nee', 'Bevat geen persoonsgegevens die niet vrijelijk openbaargemaakt mogen worden.')], default='onbekend', help_text='Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden.', max_length=40, null=True, verbose_name='bevat persoonsgegevens'), + model_name="enkelvoudiginformatieobject", + name="bevat_persoonsgegevens", + field=models.CharField( + choices=[ + ( + "onbekend", + "Niet bekend of het document persoonsgegevens bevat dieniet vrijelijk openbaar gemaakt mogen worden.", + ), + ( + "ja", + "Niet bekend of het document persoonsgegevens bevat dieniet vrijelijk openbaar gemaakt mogen worden.", + ), + ( + "nee", + "Bevat geen persoonsgegevens die niet vrijelijk openbaargemaakt mogen worden.", + ), + ], + default="onbekend", + help_text="Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden.", + max_length=40, + null=True, + verbose_name="bevat persoonsgegevens", + ), ), migrations.AddField( - model_name='enkelvoudiginformatieobject', - name='ontvangen', - field=models.BooleanField(blank=True, default=None, help_text='Legt vast of het document afkomstig is van een externe partij.', null=True, verbose_name='ontvangen'), + model_name="enkelvoudiginformatieobject", + name="ontvangen", + field=models.BooleanField( + blank=True, + default=None, + help_text="Legt vast of het document afkomstig is van een externe partij.", + null=True, + verbose_name="ontvangen", + ), ), migrations.AddField( - model_name='enkelvoudiginformatieobject', - name='vervallen', - field=models.BooleanField(blank=True, default=None, help_text='Legt vast of het document een rol speelt in het huidige of toekomstige proces.', null=True, verbose_name='vervallen'), + model_name="enkelvoudiginformatieobject", + name="vervallen", + field=models.BooleanField( + blank=True, + default=None, + help_text="Legt vast of het document een rol speelt in het huidige of toekomstige proces.", + null=True, + verbose_name="vervallen", + ), ), migrations.AlterField( - model_name='enkelvoudiginformatieobject', - name='status', - field=models.CharField(blank=True, choices=[('in_bewerking', 'In bewerking'), ('concept', 'Concept'), ('definitief', 'Definitief'), ('ter_vaststelling', 'Ter vaststelling'), ('vastgesteld', 'Vastgesteld'), ('gearchiveerd', 'Gearchiveerd')], help_text="Aanduiding van de stand van zaken van een INFORMATIEOBJECT. De waarden 'in bewerking' en 'ter vaststelling' komen niet voor als het attribuut `ontvangstdatum` van een waarde is voorzien. Wijziging van de Status in 'gearchiveerd' impliceert dat het informatieobject een duurzaam, niet-wijzigbaar Formaat dient te hebben.", max_length=20, verbose_name='status'), + model_name="enkelvoudiginformatieobject", + name="status", + field=models.CharField( + blank=True, + choices=[ + ("in_bewerking", "In bewerking"), + ("concept", "Concept"), + ("definitief", "Definitief"), + ("ter_vaststelling", "Ter vaststelling"), + ("vastgesteld", "Vastgesteld"), + ("gearchiveerd", "Gearchiveerd"), + ], + help_text="Aanduiding van de stand van zaken van een INFORMATIEOBJECT. De waarden 'in bewerking' en 'ter vaststelling' komen niet voor als het attribuut `ontvangstdatum` van een waarde is voorzien. Wijziging van de Status in 'gearchiveerd' impliceert dat het informatieobject een duurzaam, niet-wijzigbaar Formaat dient te hebben.", + max_length=20, + verbose_name="status", + ), ), ] From c272f343ded002a80675406c47242dfa4227e81a Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 4 Dec 2023 14:20:53 +0100 Subject: [PATCH 4/7] adds new data to tests --- src/drc/api/tests/test_enkelvoudiginformatieobject.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/drc/api/tests/test_enkelvoudiginformatieobject.py b/src/drc/api/tests/test_enkelvoudiginformatieobject.py index c6cecf2c..1ad2551f 100644 --- a/src/drc/api/tests/test_enkelvoudiginformatieobject.py +++ b/src/drc/api/tests/test_enkelvoudiginformatieobject.py @@ -57,6 +57,10 @@ def test_create(self, *mocks): "informatieobjecttype": INFORMATIEOBJECTTYPE, "vertrouwelijkheidaanduiding": "openbaar", "verschijningsvorm": "Vorm A", + "archiefstatus": "nog_te_archiveren", + "bevatPersoonsgegevens": "onbekend", + "ontvangen": None, + "vervallen": None, } # Send to the API @@ -175,6 +179,10 @@ def test_read(self): "locked": False, "bestandsdelen": [], "trefwoorden": None, + "archiefstatus": "nog_te_archiveren", + "bevatPersoonsgegevens": "onbekend", + "ontvangen": None, + "vervallen": None, } response_data = response.json() self.assertEqual(sorted(response_data.keys()), sorted(expected.keys())) From 73843b2c983d09513dc06f465cca22b3a708c00a Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 4 Dec 2023 14:39:24 +0100 Subject: [PATCH 5/7] shuffles migrations --- .../0065_alter_bestandsdeel_lock.py | 23 ------------------- ...204_1305.py => 0065_auto_20231204_1305.py} | 2 +- 2 files changed, 1 insertion(+), 24 deletions(-) delete mode 100644 src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py rename src/drc/datamodel/migrations/{0066_auto_20231204_1305.py => 0065_auto_20231204_1305.py} (98%) diff --git a/src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py b/src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py deleted file mode 100644 index 9410352f..00000000 --- a/src/drc/datamodel/migrations/0065_alter_bestandsdeel_lock.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 3.2.13 on 2023-10-23 07:56 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("datamodel", "0064_bestandsdeel_lock"), - ] - - operations = [ - migrations.AlterField( - model_name="bestandsdeel", - name="lock", - field=models.CharField( - blank=True, - default="", - help_text="Hash string, which represents id of the lock", - max_length=100, - ), - ), - ] diff --git a/src/drc/datamodel/migrations/0066_auto_20231204_1305.py b/src/drc/datamodel/migrations/0065_auto_20231204_1305.py similarity index 98% rename from src/drc/datamodel/migrations/0066_auto_20231204_1305.py rename to src/drc/datamodel/migrations/0065_auto_20231204_1305.py index 19fc866f..afbafe19 100644 --- a/src/drc/datamodel/migrations/0066_auto_20231204_1305.py +++ b/src/drc/datamodel/migrations/0065_auto_20231204_1305.py @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ("datamodel", "0065_alter_bestandsdeel_lock"), + ("datamodel", "0064_bestandsdeel_lock"), ] operations = [ From aa282d3d73a9ebbbbc749d61751f122cf40ce108 Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 25 Mar 2024 10:53:43 +0100 Subject: [PATCH 6/7] issue has been updated and redone --- CHANGELOG.rst | 5 +- README.rst | 2 +- requirements/base.in | 2 +- requirements/base.txt | 6 +- requirements/ci.txt | 6 +- requirements/dev.txt | 6 +- requirements/production.txt | 4 +- .../enkelvoudig_informatieobject.py | 5 +- src/drc/api/tests/test_auth.py | 1 + src/drc/api/tests/test_caching.py | 1 + .../tests/test_enkelvoudiginformatieobject.py | 10 +- src/drc/api/validators.py | 3 +- .../api/views/enkelvoudig_informatieobject.py | 10 +- src/drc/conf/plugins.py | 1 + .../models/enkelvoudig_informatieobject.py | 73 +------ src/drc/datamodel/tests/test_statussen.py | 1 + src/drc/setup.py | 1 + src/drc/tests/test_userstory_154.py | 1 + src/drc/tests/test_userstory_169.py | 1 + src/drc/tests/test_userstory_349.py | 1 + src/drc/tests/test_userstory_39.py | 1 + ...erstory_609_vertrouwelijkheidaanduiding.py | 1 + src/drc/wsgi.py | 1 + src/openapi.yaml | 194 +++--------------- src/resources.md | 5 +- 25 files changed, 63 insertions(+), 279 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 0af62f34..357ec2b5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,11 +1,10 @@ =========== Wijzigingen =========== -1.5.0 (2023-13-05) +1.5.0 (2024-25-03) =========== -- **Changed:** Status within EIO to include more fields. -- **Added:** Fields on EIO (vervallen, ontvangen, archiefstatus, bevat_persoonsgegevens). +- **Added:** Fields on EIO (inhoudIsVervallen). =========== 1.4.3 (2023-10-24) diff --git a/README.rst b/README.rst index fcc7a502..a8709547 100644 --- a/README.rst +++ b/README.rst @@ -24,7 +24,7 @@ Versie Release datum API specificatie master n.v.t. `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ (`verschillen `_) -1.5.0 2023-12-05 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ +1.5.0 2024-03-25 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ 1.4.3 2023-10-24 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ diff --git a/requirements/base.in b/requirements/base.in index ad7e6875..287ae053 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,4 +1,4 @@ -Pillow +Pillow==10.2.0 psycopg2-binary python-dotenv python-dateutil diff --git a/requirements/base.txt b/requirements/base.txt index ae7fa4b0..12aff78c 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -144,9 +144,9 @@ oyaml==0.7 # via vng-api-common packaging==21.3 # via sphinx -pillow==6.2.1 +pillow==10.2.0 # via -r requirements/base.in -psycopg2-binary==2.9.3 +psycopg2-binary==2.9.9 # via -r requirements/base.in pycparser==2.21 # via cffi @@ -190,7 +190,7 @@ raven==6.9.0 # via -r requirements/base.in regex==2022.7.25 # via textile -requests==2.21 +requests==2.21.0 # via # gemma-zds-client # requests-mock diff --git a/requirements/ci.txt b/requirements/ci.txt index c2ef0789..43cba6f0 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -235,13 +235,13 @@ pathspec==0.9.0 # via black pep8==1.7.1 # via -r requirements/testing.in -pillow==6.2.1 +pillow==10.2.0 # via -r requirements/base.txt platformdirs==2.5.2 # via # black # pylint -psycopg2-binary==2.9.3 +psycopg2-binary==2.9.9 # via -r requirements/base.txt pycparser==2.21 # via @@ -360,7 +360,7 @@ tomli==2.0.1 # pylint tomlkit==0.11.4 # via pylint -typing-extensions==4.3.0 +typing-extensions==4.10.0 # via # astroid # black diff --git a/requirements/dev.txt b/requirements/dev.txt index 1a6560c5..babceb03 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -238,13 +238,13 @@ pathspec==0.9.0 # via black pep8==1.7.1 # via -r requirements/testing.in -pillow==6.2.1 +pillow==10.2.0 # via -r requirements/base.txt platformdirs==2.5.2 # via # black # pylint -psycopg2-binary==2.9.3 +psycopg2-binary==2.9.9 # via -r requirements/base.txt pycparser==2.21 # via @@ -364,7 +364,7 @@ tomli==2.0.1 # pylint tomlkit==0.11.4 # via pylint -typing-extensions==4.3.0 +typing-extensions==4.10.0 # via # astroid # black diff --git a/requirements/production.txt b/requirements/production.txt index 1bfb79c9..1ca2c41b 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -205,9 +205,9 @@ packaging==21.3 # via # -r requirements/base.txt # sphinx -pillow==6.2.1 +pillow==10.2.0 # via -r requirements/base.txt -psycopg2-binary==2.9.3 +psycopg2-binary==2.9.9 # via -r requirements/base.txt pycparser==2.21 # via diff --git a/src/drc/api/serializers/enkelvoudig_informatieobject.py b/src/drc/api/serializers/enkelvoudig_informatieobject.py index c07d1af2..4c13dcd4 100644 --- a/src/drc/api/serializers/enkelvoudig_informatieobject.py +++ b/src/drc/api/serializers/enkelvoudig_informatieobject.py @@ -132,10 +132,7 @@ class Meta: "locked", "bestandsdelen", "trefwoorden", - "archiefstatus", - "bevat_persoonsgegevens", - "ontvangen", - "vervallen", + "inhoud_is_vervallen", ) extra_kwargs = { "informatieobjecttype": { diff --git a/src/drc/api/tests/test_auth.py b/src/drc/api/tests/test_auth.py index c5502153..f6118b3b 100644 --- a/src/drc/api/tests/test_auth.py +++ b/src/drc/api/tests/test_auth.py @@ -1,6 +1,7 @@ """ Guarantee that the proper authorization amchinery is in place. """ + from django.test import override_settings from rest_framework import status diff --git a/src/drc/api/tests/test_caching.py b/src/drc/api/tests/test_caching.py index 2fd02c30..fe59320c 100644 --- a/src/drc/api/tests/test_caching.py +++ b/src/drc/api/tests/test_caching.py @@ -1,6 +1,7 @@ """ Test that the caching mechanisms are in place. """ + from rest_framework import status from rest_framework.test import APITestCase, APITransactionTestCase from vng_api_common.tests import CacheMixin, JWTAuthMixin, generate_jwt_auth, reverse diff --git a/src/drc/api/tests/test_enkelvoudiginformatieobject.py b/src/drc/api/tests/test_enkelvoudiginformatieobject.py index 1ad2551f..9261c5a7 100644 --- a/src/drc/api/tests/test_enkelvoudiginformatieobject.py +++ b/src/drc/api/tests/test_enkelvoudiginformatieobject.py @@ -57,10 +57,7 @@ def test_create(self, *mocks): "informatieobjecttype": INFORMATIEOBJECTTYPE, "vertrouwelijkheidaanduiding": "openbaar", "verschijningsvorm": "Vorm A", - "archiefstatus": "nog_te_archiveren", - "bevatPersoonsgegevens": "onbekend", - "ontvangen": None, - "vervallen": None, + "inhoudIsVervallen": None, } # Send to the API @@ -179,10 +176,7 @@ def test_read(self): "locked": False, "bestandsdelen": [], "trefwoorden": None, - "archiefstatus": "nog_te_archiveren", - "bevatPersoonsgegevens": "onbekend", - "ontvangen": None, - "vervallen": None, + "inhoudIsVervallen": None, } response_data = response.json() self.assertEqual(sorted(response_data.keys()), sorted(expected.keys())) diff --git a/src/drc/api/validators.py b/src/drc/api/validators.py index 4dacb38d..bbe78174 100644 --- a/src/drc/api/validators.py +++ b/src/drc/api/validators.py @@ -22,7 +22,8 @@ class OneAddressValidator: """ Class to validate that only one address is send with each request and only one address is associated with each Verzending within the database. To replace an address with PUT/PATCH, if it is the same GegevensGroepType, it can just be overwritten. If it is to be replaced with another GegevensGroepType, - the existing GegevensGroepType address, mijn_overheid, emailadres and faxnummer have to be set equal to None to indicate it will be removed.""" + the existing GegevensGroepType address, mijn_overheid, emailadres and faxnummer have to be set equal to None to indicate it will be removed. + """ def set_context(self, serializer): self.instance = getattr(serializer, "instance", None) diff --git a/src/drc/api/views/enkelvoudig_informatieobject.py b/src/drc/api/views/enkelvoudig_informatieobject.py index 8da96a10..fd906d68 100644 --- a/src/drc/api/views/enkelvoudig_informatieobject.py +++ b/src/drc/api/views/enkelvoudig_informatieobject.py @@ -95,19 +95,13 @@ update=extend_schema( summary=_("Werk een (ENKELVOUDIG) INFORMATIEOBJECT in zijn geheel bij."), description=_( - "Dit creëert altijd een nieuwe versie van het (ENKELVOUDIG) INFORMATIEOBJECT. \n" - " \n**Er wordt gevalideerd op**\n" - "- correcte `lock` waarde\n" - "- status NIET `definitief`" + "Dit creëert altijd een nieuwe versie van het (ENKELVOUDIG) INFORMATIEOBJECT." ), ), partial_update=extend_schema( summary=_("Werk een (ENKELVOUDIG) INFORMATIEOBJECT deels bij."), description=_( - "Dit creëert altijd een nieuwe versie van het (ENKELVOUDIG) INFORMATIEOBJECT. \n" - "\n**Er wordt gevalideerd op**\n" - " - correcte `lock` waarde\n" - " - status NIET `definitief`" + "Dit creëert altijd een nieuwe versie van het (ENKELVOUDIG) INFORMATIEOBJECT." ), ), destroy=extend_schema( diff --git a/src/drc/conf/plugins.py b/src/drc/conf/plugins.py index c822a21f..950c04e8 100644 --- a/src/drc/conf/plugins.py +++ b/src/drc/conf/plugins.py @@ -1,6 +1,7 @@ """ Settings for plugins """ + import os import sys from importlib import import_module diff --git a/src/drc/datamodel/models/enkelvoudig_informatieobject.py b/src/drc/datamodel/models/enkelvoudig_informatieobject.py index 6c7026a2..58eb9def 100644 --- a/src/drc/datamodel/models/enkelvoudig_informatieobject.py +++ b/src/drc/datamodel/models/enkelvoudig_informatieobject.py @@ -5,7 +5,6 @@ from django.db import models from django.utils.translation import ugettext_lazy as _ -from djchoices import ChoiceItem, DjangoChoices from privates.fields import PrivateMediaFileField from vng_api_common.caching import ETagMixin from vng_api_common.descriptors import GegevensGroepType @@ -15,43 +14,6 @@ from .informatieobject import InformatieObject -class Persoonsgegevens(DjangoChoices): - onbekend = ChoiceItem( - "onbekend", - _( - "Niet bekend of het document persoonsgegevens bevat die" - "niet vrijelijk openbaar gemaakt mogen worden." - ), - ) - ja = ChoiceItem( - "ja", - _( - "Niet bekend of het document persoonsgegevens bevat die" - "niet vrijelijk openbaar gemaakt mogen worden." - ), - ) - nee = ChoiceItem( - "nee", - _( - "Bevat geen persoonsgegevens die niet vrijelijk openbaar" - "gemaakt mogen worden." - ), - ) - - -class ArchiefStatusEIO(DjangoChoices): - nog_te_archiveren = ChoiceItem( - "nog_te_archiveren", - _("De zaak cq. het zaakdossier is nog niet als geheel gearchiveerd."), - ) - gearchiveerd = ChoiceItem( - "gearchiveerd", - _( - "De zaak cq. het zaakdossier is als geheel niet-wijzigbaar bewaarbaar gemaakt." - ), - ) - - class EnkelvoudigInformatieObjectCanonical(models.Model): """ Indicates the identity of a document @@ -195,42 +157,13 @@ class EnkelvoudigInformatieObject(ETagMixin, APIMixin, InformatieObject): null=True, ) - vervallen = models.BooleanField( - _("vervallen"), + inhoud_is_vervallen = models.BooleanField( + _("inhoud is vervallen"), blank=True, default=None, null=True, help_text=_( - "Legt vast of het document een rol speelt in het huidige of toekomstige proces." - ), - ) - - ontvangen = models.BooleanField( - _("ontvangen"), - blank=True, - default=None, - null=True, - help_text=_("Legt vast of het document afkomstig is van een externe partij."), - ) - - archiefstatus = models.CharField( - _("archiefstatus"), - max_length=40, - choices=ArchiefStatusEIO.choices, - default=ArchiefStatusEIO.nog_te_archiveren, - help_text=_( - "Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden." - ), - ) - - bevat_persoonsgegevens = models.CharField( - _("bevat persoonsgegevens"), - max_length=40, - null=True, - choices=Persoonsgegevens.choices, - default=Persoonsgegevens.onbekend, - help_text=_( - "Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden." + "Geeft aan of de inhoud van het informatieobject vervallen (dus niet langer geldig) is." ), ) diff --git a/src/drc/datamodel/tests/test_statussen.py b/src/drc/datamodel/tests/test_statussen.py index bd896262..b54f33c8 100644 --- a/src/drc/datamodel/tests/test_statussen.py +++ b/src/drc/datamodel/tests/test_statussen.py @@ -1,6 +1,7 @@ """ Tests for the business logic w/r to statussen, from RGBZ. """ + from datetime import date from django.core.exceptions import ValidationError diff --git a/src/drc/setup.py b/src/drc/setup.py index adfcc92d..fc7252ad 100644 --- a/src/drc/setup.py +++ b/src/drc/setup.py @@ -9,6 +9,7 @@ do NOT import anything Django related here, as this file needs to be loaded before Django is initialized. """ + import os from dotenv import load_dotenv diff --git a/src/drc/tests/test_userstory_154.py b/src/drc/tests/test_userstory_154.py index 446b66fe..7079d0c3 100644 --- a/src/drc/tests/test_userstory_154.py +++ b/src/drc/tests/test_userstory_154.py @@ -5,6 +5,7 @@ * https://github.com/VNG-Realisatie/gemma-zaken/issues/154 (us) * https://github.com/VNG-Realisatie/gemma-zaken/issues/239 (mapping) """ + from rest_framework import status from rest_framework.test import APITestCase from vng_api_common.tests import JWTAuthMixin, TypeCheckMixin, get_operation_url diff --git a/src/drc/tests/test_userstory_169.py b/src/drc/tests/test_userstory_169.py index 4c099cbf..00b546b2 100644 --- a/src/drc/tests/test_userstory_169.py +++ b/src/drc/tests/test_userstory_169.py @@ -5,6 +5,7 @@ * https://github.com/VNG-Realisatie/gemma-zaken/issues/169 (us) * https://github.com/VNG-Realisatie/gemma-zaken/issues/182 (mapping) """ + import base64 from io import BytesIO from unittest.mock import patch diff --git a/src/drc/tests/test_userstory_349.py b/src/drc/tests/test_userstory_349.py index 52acf527..42d56b01 100644 --- a/src/drc/tests/test_userstory_349.py +++ b/src/drc/tests/test_userstory_349.py @@ -1,6 +1,7 @@ """ Ref: https://github.com/VNG-Realisatie/gemma-zaken/issues/349 """ + from django.test import override_settings from rest_framework import status diff --git a/src/drc/tests/test_userstory_39.py b/src/drc/tests/test_userstory_39.py index 23b402b3..fa40ffc0 100644 --- a/src/drc/tests/test_userstory_39.py +++ b/src/drc/tests/test_userstory_39.py @@ -1,6 +1,7 @@ """ Test the flow described in https://github.com/VNG-Realisatie/gemma-zaken/issues/39 """ + import base64 from datetime import date from unittest.mock import patch diff --git a/src/drc/tests/test_userstory_609_vertrouwelijkheidaanduiding.py b/src/drc/tests/test_userstory_609_vertrouwelijkheidaanduiding.py index ad3c34b2..2ac318d7 100644 --- a/src/drc/tests/test_userstory_609_vertrouwelijkheidaanduiding.py +++ b/src/drc/tests/test_userstory_609_vertrouwelijkheidaanduiding.py @@ -4,6 +4,7 @@ See: https://github.com/VNG-Realisatie/gemma-zaken/issues/609 """ + from base64 import b64encode from unittest.mock import patch diff --git a/src/drc/wsgi.py b/src/drc/wsgi.py index 1c2944db..d2f40401 100644 --- a/src/drc/wsgi.py +++ b/src/drc/wsgi.py @@ -6,6 +6,7 @@ For more information on this file, see https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ """ + import os from django.core.wsgi import get_wsgi_application diff --git a/src/openapi.yaml b/src/openapi.yaml index c1e27122..931aefc3 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -1104,8 +1104,7 @@ paths: operationId: enkelvoudiginformatieobject_update description: "Dit cre\xEBert altijd een nieuwe versie van het (ENKELVOUDIG)\ - \ INFORMATIEOBJECT. \n \n**Er wordt gevalideerd op**\n- correcte `lock` waarde\n\ - - status NIET `definitief`" + \ INFORMATIEOBJECT." summary: Werk een (ENKELVOUDIG) INFORMATIEOBJECT in zijn geheel bij. parameters: - in: path @@ -1293,8 +1292,7 @@ paths: operationId: enkelvoudiginformatieobject_partial_update description: "Dit cre\xEBert altijd een nieuwe versie van het (ENKELVOUDIG)\ - \ INFORMATIEOBJECT. \n\n**Er wordt gevalideerd op**\n - correcte `lock` waarde\n\ - \ - status NIET `definitief`" + \ INFORMATIEOBJECT." summary: Werk een (ENKELVOUDIG) INFORMATIEOBJECT deels bij. parameters: - in: path @@ -5280,11 +5278,6 @@ components: - sha_512 - sha_3 type: string - ArchiefstatusEnum: - enum: - - nog_te_archiveren - - gearchiveerd - type: string AuditTrail: type: object properties: @@ -5522,12 +5515,6 @@ components: required: - lock - url - BevatPersoonsgegevensEnum: - enum: - - onbekend - - ja - - nee - type: string BinnenlandsCorrespondentieadresVerzending: type: object description: @@ -6109,34 +6096,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden - archiefstatus: - allOf: - - $ref: '#/components/schemas/ArchiefstatusEnum' - description: - Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde - termijn vernietigd moet worden. - title: archiefstatus - bevatPersoonsgegevens: - nullable: true - description: - Legt vast of het document persoonsgegevens bevat die niet vrijelijk - openbaar gemaakt mogen worden. - title: bevat persoonsgegevens - oneOf: - - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' - - $ref: '#/components/schemas/NullEnum' - ontvangen: - type: boolean - nullable: true - description: Legt vast of het document afkomstig is van een externe partij. - title: ontvangen - vervallen: + inhoudIsVervallen: type: boolean nullable: true description: - Legt vast of het document een rol speelt in het huidige of - toekomstige proces. - title: vervallen + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - beginRegistratie @@ -6377,34 +6343,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden - archiefstatus: - allOf: - - $ref: '#/components/schemas/ArchiefstatusEnum' - description: - Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde - termijn vernietigd moet worden. - title: archiefstatus - bevatPersoonsgegevens: - nullable: true - description: - Legt vast of het document persoonsgegevens bevat die niet vrijelijk - openbaar gemaakt mogen worden. - title: bevat persoonsgegevens - oneOf: - - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' - - $ref: '#/components/schemas/NullEnum' - ontvangen: - type: boolean - nullable: true - description: Legt vast of het document afkomstig is van een externe partij. - title: ontvangen - vervallen: + inhoudIsVervallen: type: boolean nullable: true description: - Legt vast of het document een rol speelt in het huidige of - toekomstige proces. - title: vervallen + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - bronorganisatie @@ -6673,34 +6618,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden - archiefstatus: - allOf: - - $ref: '#/components/schemas/ArchiefstatusEnum' - description: - Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde - termijn vernietigd moet worden. - title: archiefstatus - bevatPersoonsgegevens: - nullable: true - description: - Legt vast of het document persoonsgegevens bevat die niet vrijelijk - openbaar gemaakt mogen worden. - title: bevat persoonsgegevens - oneOf: - - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' - - $ref: '#/components/schemas/NullEnum' - ontvangen: - type: boolean - nullable: true - description: Legt vast of het document afkomstig is van een externe partij. - title: ontvangen - vervallen: + inhoudIsVervallen: type: boolean nullable: true description: - Legt vast of het document een rol speelt in het huidige of - toekomstige proces. - title: vervallen + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - beginRegistratie @@ -6941,34 +6865,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden - archiefstatus: - allOf: - - $ref: '#/components/schemas/ArchiefstatusEnum' - description: - Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde - termijn vernietigd moet worden. - title: archiefstatus - bevatPersoonsgegevens: - nullable: true - description: - Legt vast of het document persoonsgegevens bevat die niet vrijelijk - openbaar gemaakt mogen worden. - title: bevat persoonsgegevens - oneOf: - - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' - - $ref: '#/components/schemas/NullEnum' - ontvangen: - type: boolean - nullable: true - description: Legt vast of het document afkomstig is van een externe partij. - title: ontvangen - vervallen: + inhoudIsVervallen: type: boolean nullable: true description: - Legt vast of het document een rol speelt in het huidige of - toekomstige proces. - title: vervallen + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen lock: type: string writeOnly: true @@ -7251,9 +7154,6 @@ components: title: lock required: - lock - NullEnum: - enum: - - null ObjectInformatieObject: type: object properties: @@ -7674,34 +7574,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden - archiefstatus: - allOf: - - $ref: '#/components/schemas/ArchiefstatusEnum' - description: - Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde - termijn vernietigd moet worden. - title: archiefstatus - bevatPersoonsgegevens: - nullable: true - description: - Legt vast of het document persoonsgegevens bevat die niet vrijelijk - openbaar gemaakt mogen worden. - title: bevat persoonsgegevens - oneOf: - - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' - - $ref: '#/components/schemas/NullEnum' - ontvangen: - type: boolean - nullable: true - description: Legt vast of het document afkomstig is van een externe partij. - title: ontvangen - vervallen: + inhoudIsVervallen: type: boolean nullable: true description: - Legt vast of het document een rol speelt in het huidige of - toekomstige proces. - title: vervallen + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen lock: type: string writeOnly: true @@ -8179,34 +8058,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden - archiefstatus: - allOf: - - $ref: '#/components/schemas/ArchiefstatusEnum' - description: - Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde - termijn vernietigd moet worden. - title: archiefstatus - bevatPersoonsgegevens: - nullable: true - description: - Legt vast of het document persoonsgegevens bevat die niet vrijelijk - openbaar gemaakt mogen worden. - title: bevat persoonsgegevens - oneOf: - - $ref: '#/components/schemas/BevatPersoonsgegevensEnum' - - $ref: '#/components/schemas/NullEnum' - ontvangen: - type: boolean - nullable: true - description: Legt vast of het document afkomstig is van een externe partij. - title: ontvangen - vervallen: + inhoudIsVervallen: type: boolean nullable: true description: - Legt vast of het document een rol speelt in het huidige of - toekomstige proces. - title: vervallen + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - beginRegistratie diff --git a/src/resources.md b/src/resources.md index 80ed90e5..6754a9c3 100755 --- a/src/resources.md +++ b/src/resources.md @@ -119,10 +119,7 @@ Uitleg bij mogelijke waarden: | locked | Geeft aan of het document gelocked is. Alleen als een document gelocked is, mogen er aanpassingen gemaakt worden. | boolean | ja | ~~C~~​R​~~U~~​~~D~~ | | bestandsdelen | | array | ja | ~~C~~​R​~~U~~​~~D~~ | | trefwoorden | Een lijst van trefwoorden gescheiden door comma's. | array | nee | C​R​U​D | -| archiefstatus | Aanduiding of het zaakdossier blijvend bewaard of na een bepaalde termijn vernietigd moet worden. | | nee | C​R​U​D | -| bevatPersoonsgegevens | Legt vast of het document persoonsgegevens bevat die niet vrijelijk openbaar gemaakt mogen worden. | | nee | C​R​U​D | -| ontvangen | Legt vast of het document afkomstig is van een externe partij. | boolean | nee | C​R​U​D | -| vervallen | Legt vast of het document een rol speelt in het huidige of toekomstige proces. | boolean | nee | C​R​U​D | +| inhoudIsVervallen | Geeft aan of de inhoud van het informatieobject vervallen (dus niet langer geldig) is. | boolean | nee | C​R​U​D | ## Gebruiksrechten From 87ce42231f317f45aa873d33dcf0703173ec09fa Mon Sep 17 00:00:00 2001 From: joerivrij Date: Mon, 25 Mar 2024 10:56:32 +0100 Subject: [PATCH 7/7] adds migrations --- .../migrations/0066_auto_20240325_0929.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/drc/datamodel/migrations/0066_auto_20240325_0929.py diff --git a/src/drc/datamodel/migrations/0066_auto_20240325_0929.py b/src/drc/datamodel/migrations/0066_auto_20240325_0929.py new file mode 100644 index 00000000..72986a98 --- /dev/null +++ b/src/drc/datamodel/migrations/0066_auto_20240325_0929.py @@ -0,0 +1,50 @@ +# Generated by Django 3.2.13 on 2024-03-25 09:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("datamodel", "0065_auto_20231204_1305"), + ] + + operations = [ + migrations.RemoveField( + model_name="enkelvoudiginformatieobject", + name="archiefstatus", + ), + migrations.RemoveField( + model_name="enkelvoudiginformatieobject", + name="bevat_persoonsgegevens", + ), + migrations.RemoveField( + model_name="enkelvoudiginformatieobject", + name="ontvangen", + ), + migrations.RemoveField( + model_name="enkelvoudiginformatieobject", + name="vervallen", + ), + migrations.AddField( + model_name="enkelvoudiginformatieobject", + name="inhoud_is_vervallen", + field=models.BooleanField( + blank=True, + default=None, + help_text="Geeft aan of de inhoud van het informatieobject vervallen (dus niet langer geldig) is.", + null=True, + verbose_name="inhoud is vervallen", + ), + ), + migrations.AlterField( + model_name="bestandsdeel", + name="lock", + field=models.CharField( + blank=True, + default="", + help_text="Hash string, which represents id of the lock", + max_length=100, + ), + ), + ]