diff --git a/.bumpversion.cfg b/.bumpversion.cfg index 9f9a4d11..60e26e03 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,7 +1,7 @@ [bumpversion] commit = False tag = False -current_version = 1.4.2 +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/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65ad0095..98cd48a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,6 @@ on: pull_request: branches: - "develop" - - "master" env: DJANGO_SETTINGS_MODULE: drc.conf.ci @@ -104,7 +103,6 @@ jobs: - check-format - check-sort - check-oas - - unit-tests steps: - name: Checkout diff --git a/CHANGELOG.rst b/CHANGELOG.rst index bef7ec13..357ec2b5 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,5 +1,17 @@ =========== Wijzigingen +=========== +1.5.0 (2024-25-03) +=========== + +- **Added:** Fields on EIO (inhoudIsVervallen). + +=========== +1.4.3 (2023-10-24) +=========== + +- **Changed:** `lock` attribute shows up in EIO.bestandsdelen POST response after creating an EIO. + =========== 1.4.2 (2023-09-25) =========== diff --git a/README.rst b/README.rst index 3c94fcb1..a8709547 100644 --- a/README.rst +++ b/README.rst @@ -2,7 +2,7 @@ Documenten API ============== -:Version: 1.4.2 +:Version: 1.5.0 :Source: https://github.com/VNG-Realisatie/documenten-api :Keywords: zaken, zaakgericht werken, GEMMA, RGBZ, DRC @@ -24,6 +24,10 @@ Versie Release datum API specificatie master n.v.t. `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ (`verschillen `_) +1.5.0 2024-03-25 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ + `Swagger `_ +1.4.3 2023-10-24 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ + `Swagger `_ 1.4.1 2023-08-29 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ `Swagger `_ 1.4.0 2023-08-22 `ReDoc `_, `Scopes `_ `Berichtkenmerken `_ diff --git a/package.json b/package.json index b7a4c1dd..38cb0516 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "drc", - "version": "1.4.2", + "version": "1.5.0", "description": "drc referentie implementatie API", "main": "src/index.js", "directories": { 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/__init__.py b/src/drc/__init__.py index 1264f0ce..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.2" +__version__ = "1.5.0" __author__ = "VNG Realisatie" __homepage__ = "https://github.com/VNG-Realisatie/documenten-api" __docformat__ = "restructuredtext" diff --git a/src/drc/api/serializers/bestandsdeel.py b/src/drc/api/serializers/bestandsdeel.py index 9b46acd1..10054de7 100644 --- a/src/drc/api/serializers/bestandsdeel.py +++ b/src/drc/api/serializers/bestandsdeel.py @@ -7,7 +7,6 @@ class BestandsDeelSerializer(serializers.HyperlinkedModelSerializer): lock = serializers.CharField( - write_only=True, help_text="Hash string, which represents id of the lock of related informatieobject", ) diff --git a/src/drc/api/serializers/enkelvoudig_informatieobject.py b/src/drc/api/serializers/enkelvoudig_informatieobject.py index 4d17de29..4c13dcd4 100644 --- a/src/drc/api/serializers/enkelvoudig_informatieobject.py +++ b/src/drc/api/serializers/enkelvoudig_informatieobject.py @@ -132,6 +132,7 @@ class Meta: "locked", "bestandsdelen", "trefwoorden", + "inhoud_is_vervallen", ) extra_kwargs = { "informatieobjecttype": { @@ -238,7 +239,10 @@ def _create_bestandsdeel(self, full_size, canonical): for i in range(parts): chunk_size = min(settings.CHUNK_SIZE, full_size) BestandsDeel.objects.create( - informatieobject=canonical, omvang=chunk_size, volgnummer=i + 1 + informatieobject=canonical, + omvang=chunk_size, + volgnummer=i + 1, + lock=canonical.lock, ) full_size -= chunk_size @@ -266,10 +270,6 @@ def create(self, validated_data): eio.ondertekening = ondertekening eio.save() - # large file process - if not eio.inhoud and eio.bestandsomvang and eio.bestandsomvang > 0: - self._create_bestandsdeel(validated_data["bestandsomvang"], canonical) - # create empty file if size == 0 if eio.bestandsomvang == 0: eio.inhoud.save("empty_file", ContentFile("")) @@ -381,6 +381,8 @@ def create(self, validated_data): # lock document if it is a large file upload if not eio.inhoud and eio.bestandsomvang and eio.bestandsomvang > 0: eio.canonical.lock = uuid.uuid4().hex + # large file process + self._create_bestandsdeel(validated_data["bestandsomvang"], eio.canonical) eio.canonical.save() return eio 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_dso_api_strategy.py b/src/drc/api/tests/test_dso_api_strategy.py index a5b2a31f..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.2") + self.assertEqual(response["API-version"], "1.5.0") class DSOApi50Tests(APITestCase): diff --git a/src/drc/api/tests/test_enkelvoudiginformatieobject.py b/src/drc/api/tests/test_enkelvoudiginformatieobject.py index c6cecf2c..9261c5a7 100644 --- a/src/drc/api/tests/test_enkelvoudiginformatieobject.py +++ b/src/drc/api/tests/test_enkelvoudiginformatieobject.py @@ -57,6 +57,7 @@ def test_create(self, *mocks): "informatieobjecttype": INFORMATIEOBJECTTYPE, "vertrouwelijkheidaanduiding": "openbaar", "verschijningsvorm": "Vorm A", + "inhoudIsVervallen": None, } # Send to the API @@ -175,6 +176,7 @@ def test_read(self): "locked": False, "bestandsdelen": [], "trefwoorden": 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/api.py b/src/drc/conf/api.py index b5e85cc7..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.2" +API_VERSION = "1.5.0" REST_FRAMEWORK = BASE_REST_FRAMEWORK.copy() 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/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/migrations/0064_bestandsdeel_lock.py b/src/drc/datamodel/migrations/0064_bestandsdeel_lock.py new file mode 100644 index 00000000..f10a4405 --- /dev/null +++ b/src/drc/datamodel/migrations/0064_bestandsdeel_lock.py @@ -0,0 +1,23 @@ +# Generated by Django 3.2.13 on 2023-10-19 12:27 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("datamodel", "0063_enkelvoudiginformatieobject_trefwoorden"), + ] + + operations = [ + migrations.AddField( + model_name="bestandsdeel", + name="lock", + field=models.CharField( + blank=True, + help_text="Hash string, which represents id of the lock of related informatieobject", + max_length=255, + null=True, + ), + ), + ] diff --git a/src/drc/datamodel/migrations/0065_auto_20231204_1305.py b/src/drc/datamodel/migrations/0065_auto_20231204_1305.py new file mode 100644 index 00000000..afbafe19 --- /dev/null +++ b/src/drc/datamodel/migrations/0065_auto_20231204_1305.py @@ -0,0 +1,98 @@ +# Generated by Django 3.2.13 on 2023-12-04 13:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("datamodel", "0064_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", + ), + ), + ] 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, + ), + ), + ] diff --git a/src/drc/datamodel/models/bestandsdeel.py b/src/drc/datamodel/models/bestandsdeel.py index 5c038384..c5796363 100644 --- a/src/drc/datamodel/models/bestandsdeel.py +++ b/src/drc/datamodel/models/bestandsdeel.py @@ -28,6 +28,12 @@ class BestandsDeel(models.Model): blank=True, help_text=_("De (binaire) bestandsinhoud van dit specifieke bestandsdeel."), ) + lock = models.CharField( + default="", + blank=True, + max_length=100, + help_text=_("Hash string, which represents id of the lock"), + ) class Meta: verbose_name = "bestands deel" diff --git a/src/drc/datamodel/models/enkelvoudig_informatieobject.py b/src/drc/datamodel/models/enkelvoudig_informatieobject.py index 679bbdec..58eb9def 100644 --- a/src/drc/datamodel/models/enkelvoudig_informatieobject.py +++ b/src/drc/datamodel/models/enkelvoudig_informatieobject.py @@ -89,6 +89,7 @@ class EnkelvoudigInformatieObject(ETagMixin, APIMixin, InformatieObject): "informatieobject is vastgelegd, inclusief extensie." ), ) + bestandsomvang = models.BigIntegerField( _("bestandsomvang"), validators=[MinValueValidator(0)], @@ -156,5 +157,15 @@ class EnkelvoudigInformatieObject(ETagMixin, APIMixin, InformatieObject): null=True, ) + inhoud_is_vervallen = models.BooleanField( + _("inhoud is vervallen"), + blank=True, + default=None, + null=True, + help_text=_( + "Geeft aan of de inhoud van het informatieobject vervallen (dus niet langer geldig) is." + ), + ) + class Meta: unique_together = ("uuid", "versie") 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 97060041..931aefc3 100644 --- a/src/openapi.yaml +++ b/src/openapi.yaml @@ -1,7 +1,7 @@ openapi: 3.0.3 info: title: Documenten API - version: 1.4.2 + version: 1.5.0 description: "Een API om een documentregistratiecomponent (DRC) te benaderen.\n\n\ In een documentregistratiecomponent worden INFORMATIEOBJECTen opgeslagen. Een\n\ @@ -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 @@ -5451,7 +5449,12 @@ components: zeggen: het aantal bytes dat staat genoemd bij grootte is daadwerkelijk ontvangen.' title: voltooid + lock: + type: string + description: Hash string, which represents id of the lock of related informatieobject + title: lock required: + - lock - omvang - url - volgnummer @@ -5467,7 +5470,6 @@ components: title: inhoud lock: type: string - writeOnly: true minLength: 1 description: Hash string, which represents id of the lock of related informatieobject title: lock @@ -5925,12 +5927,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 @@ -6089,6 +6096,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + inhoudIsVervallen: + type: boolean + nullable: true + description: + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - beginRegistratie @@ -6186,12 +6200,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 @@ -6324,6 +6343,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + inhoudIsVervallen: + type: boolean + nullable: true + description: + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - bronorganisatie @@ -6423,12 +6449,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 @@ -6587,6 +6618,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + inhoudIsVervallen: + type: boolean + nullable: true + description: + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - beginRegistratie @@ -6684,12 +6722,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 @@ -6822,6 +6865,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + inhoudIsVervallen: + type: boolean + nullable: true + description: + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen lock: type: string writeOnly: true @@ -7381,12 +7431,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 @@ -7519,6 +7574,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + inhoudIsVervallen: + type: boolean + nullable: true + description: + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen lock: type: string writeOnly: true @@ -7827,12 +7889,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 @@ -7991,6 +8058,13 @@ components: nullable: true description: Een lijst van trefwoorden gescheiden door comma's. title: trefwoorden + inhoudIsVervallen: + type: boolean + nullable: true + description: + Geeft aan of de inhoud van het informatieobject vervallen (dus + niet langer geldig) is. + title: inhoud is vervallen required: - auteur - beginRegistratie @@ -8012,8 +8086,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 ef74e9b5..6754a9c3 100755 --- a/src/resources.md +++ b/src/resources.md @@ -60,6 +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 | ## EnkelvoudigInformatieObject @@ -90,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 | @@ -116,6 +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 | +| inhoudIsVervallen | Geeft aan of de inhoud van het informatieobject vervallen (dus niet langer geldig) is. | boolean | nee | C​R​U​D | ## Gebruiksrechten