Skip to content

Commit

Permalink
Merge pull request #1414 from open-zaak/feature/1413-besluiten-add-etag
Browse files Browse the repository at this point in the history
add Etag for Besluit and BesluitInformatieObject
  • Loading branch information
annashamray committed Aug 14, 2023
2 parents 29808cf + e06b954 commit 69c63cd
Show file tree
Hide file tree
Showing 7 changed files with 433 additions and 8 deletions.
3 changes: 3 additions & 0 deletions src/openzaak/components/besluiten/api/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
AuditTrailViewSet,
AuditTrailViewsetMixin,
)
from vng_api_common.caching import conditional_retrieve
from vng_api_common.viewsets import CheckQueryParamsMixin

from openzaak.components.zaken.api.mixins import ClosedZaakMixin
Expand All @@ -40,6 +41,7 @@
from .serializers import BesluitInformatieObjectSerializer, BesluitSerializer


@conditional_retrieve()
class BesluitViewSet(
CheckQueryParamsMixin,
NotificationViewSetMixin,
Expand Down Expand Up @@ -146,6 +148,7 @@ def perform_destroy(self, instance):
)


@conditional_retrieve()
class BesluitInformatieObjectViewSet(
NotificationCreateMixin,
NotificationDestroyMixin,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# SPDX-License-Identifier: EUPL-1.2
# Copyright (C) 2023 Dimpact
# Generated by Django 3.2.18 on 2023-07-18 14:01

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
("besluiten", "0017_alter_besluit_identificatie"),
]

operations = [
migrations.AddField(
model_name="besluit",
name="_etag",
field=models.CharField(
default="",
editable=False,
help_text="MD5 hash of the resource representation in its current version.",
max_length=32,
verbose_name="etag value",
),
preserve_default=False,
),
migrations.AddField(
model_name="besluitinformatieobject",
name="_etag",
field=models.CharField(
default="",
editable=False,
help_text="MD5 hash of the resource representation in its current version.",
max_length=32,
verbose_name="etag value",
),
preserve_default=False,
),
]
5 changes: 3 additions & 2 deletions src/openzaak/components/besluiten/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from django.utils.translation import ugettext_lazy as _

from django_loose_fk.virtual_models import ProxyMixin
from vng_api_common.caching import ETagMixin
from vng_api_common.fields import RSINField
from vng_api_common.models import APIMixin
from vng_api_common.utils import generate_unique_identification
Expand All @@ -27,7 +28,7 @@
__all__ = ["Besluit", "BesluitInformatieObject"]


class Besluit(AuditTrailMixin, APIMixin, models.Model):
class Besluit(ETagMixin, AuditTrailMixin, APIMixin, models.Model):
uuid = models.UUIDField(
unique=True, default=_uuid.uuid4, help_text="Unieke resource identifier (UUID4)"
)
Expand Down Expand Up @@ -234,7 +235,7 @@ def previous_zaak(self):
return None


class BesluitInformatieObject(models.Model):
class BesluitInformatieObject(ETagMixin, models.Model):
"""
Aanduiding van het (de) INFORMATIEOBJECT(en) waarin
het BESLUIT beschreven is.
Expand Down
136 changes: 136 additions & 0 deletions src/openzaak/components/besluiten/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -325,10 +325,35 @@ paths:
operationId: besluit_read
summary: Een specifiek BESLUIT opvragen.
description: Een specifiek BESLUIT opvragen.
parameters:
- name: If-None-Match
in: header
description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\xE9\
n of meerdere ETag-waardes bevatten van resources die de consumer gecached\
\ heeft. Indien de waarde van de ETag van de huidige resource voorkomt in\
\ deze set, dan antwoordt de provider met een lege HTTP 304 request. Zie\
\ [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\
\ voor meer informatie."
required: false
examples:
oneValue:
summary: "E\xE9n ETag-waarde"
value: '"79054025255fb1a26e4bc422aef54eb4"'
multipleValues:
summary: Meerdere ETag-waardes
value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"'
schema:
type: string
responses:
'200':
description: OK
headers:
ETag:
description: De ETag berekend op de response body JSON. Indien twee
resources exact dezelfde ETag hebben, dan zijn deze resources identiek
aan elkaar. Je kan de ETag gebruiken om caching te implementeren.
schema:
type: string
API-version:
schema:
type: string
Expand Down Expand Up @@ -361,6 +386,49 @@ paths:
security:
- JWT-Claims:
- besluiten.lezen
head:
operationId: besluit_headers
summary: De headers voor een specifiek(e) BESLUIT opvragen
description: Vraag de headers op die je bij een GET request zou krijgen.
parameters:
- name: If-None-Match
in: header
description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\xE9\
n of meerdere ETag-waardes bevatten van resources die de consumer gecached\
\ heeft. Indien de waarde van de ETag van de huidige resource voorkomt in\
\ deze set, dan antwoordt de provider met een lege HTTP 304 request. Zie\
\ [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\
\ voor meer informatie."
required: false
examples:
oneValue:
summary: "E\xE9n ETag-waarde"
value: '"79054025255fb1a26e4bc422aef54eb4"'
multipleValues:
summary: Meerdere ETag-waardes
value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"'
schema:
type: string
responses:
'200':
description: OK
headers:
ETag:
description: De ETag berekend op de response body JSON. Indien twee
resources exact dezelfde ETag hebben, dan zijn deze resources identiek
aan elkaar. Je kan de ETag gebruiken om caching te implementeren.
schema:
type: string
API-version:
schema:
type: string
description: 'Geeft een specifieke API-versie aan in de context van
een specifieke aanroep. Voorbeeld: 1.2.1.'
tags:
- besluiten
security:
- JWT-Claims:
- besluiten.lezen
put:
operationId: besluit_update
summary: Werk een BESLUIT in zijn geheel bij.
Expand Down Expand Up @@ -709,10 +777,35 @@ paths:
operationId: besluitinformatieobject_read
summary: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen.
description: Een specifieke BESLUIT-INFORMATIEOBJECT relatie opvragen.
parameters:
- name: If-None-Match
in: header
description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\xE9\
n of meerdere ETag-waardes bevatten van resources die de consumer gecached\
\ heeft. Indien de waarde van de ETag van de huidige resource voorkomt in\
\ deze set, dan antwoordt de provider met een lege HTTP 304 request. Zie\
\ [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\
\ voor meer informatie."
required: false
examples:
oneValue:
summary: "E\xE9n ETag-waarde"
value: '"79054025255fb1a26e4bc422aef54eb4"'
multipleValues:
summary: Meerdere ETag-waardes
value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"'
schema:
type: string
responses:
'200':
description: OK
headers:
ETag:
description: De ETag berekend op de response body JSON. Indien twee
resources exact dezelfde ETag hebben, dan zijn deze resources identiek
aan elkaar. Je kan de ETag gebruiken om caching te implementeren.
schema:
type: string
API-version:
schema:
type: string
Expand Down Expand Up @@ -745,6 +838,49 @@ paths:
security:
- JWT-Claims:
- besluiten.lezen
head:
operationId: besluitinformatieobject_headers
summary: De headers voor een specifiek(e) BESLUITINFORMATIEOBJECT opvragen
description: Vraag de headers op die je bij een GET request zou krijgen.
parameters:
- name: If-None-Match
in: header
description: "Voer een voorwaardelijk verzoek uit. Deze header moet \xE9\xE9\
n of meerdere ETag-waardes bevatten van resources die de consumer gecached\
\ heeft. Indien de waarde van de ETag van de huidige resource voorkomt in\
\ deze set, dan antwoordt de provider met een lege HTTP 304 request. Zie\
\ [MDN](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-None-Match)\
\ voor meer informatie."
required: false
examples:
oneValue:
summary: "E\xE9n ETag-waarde"
value: '"79054025255fb1a26e4bc422aef54eb4"'
multipleValues:
summary: Meerdere ETag-waardes
value: '"79054025255fb1a26e4bc422aef54eb4", "e4d909c290d0fb1ca068ffaddf22cbd0"'
schema:
type: string
responses:
'200':
description: OK
headers:
ETag:
description: De ETag berekend op de response body JSON. Indien twee
resources exact dezelfde ETag hebben, dan zijn deze resources identiek
aan elkaar. Je kan de ETag gebruiken om caching te implementeren.
schema:
type: string
API-version:
schema:
type: string
description: 'Geeft een specifieke API-versie aan in de context van
een specifieke aanroep. Voorbeeld: 1.2.1.'
tags:
- besluitinformatieobjecten
security:
- JWT-Claims:
- besluiten.lezen
delete:
operationId: besluitinformatieobject_delete
summary: Verwijder een BESLUIT-INFORMATIEOBJECT relatie.
Expand Down

0 comments on commit 69c63cd

Please sign in to comment.