-
Notifications
You must be signed in to change notification settings - Fork 37
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
✨ [open-zaak/open-notificaties#156] Kenmerk for Zaak.zaaktype.catalogus
because this kenmerk is not part of the standard, it is marked as experimental
- Loading branch information
Showing
3 changed files
with
257 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,190 @@ | ||
## Notificaties | ||
## Berichtkenmerken voor Open Zaak API | ||
|
||
Kanalen worden typisch per component gedefinieerd. Producers versturen berichten op bepaalde kanalen, | ||
consumers ontvangen deze. Consumers abonneren zich via een notificatiecomponent (zoals <a href="https://notificaties-api.vng.cloud/api/v1/schema/" rel="nofollow">https://notificaties-api.vng.cloud/api/v1/schema/</a>) op berichten. | ||
|
||
Hieronder staan de kanalen beschreven die door deze component gebruikt worden, met de kenmerken bij elk bericht. | ||
|
||
De architectuur van de notificaties staat beschreven op <a href="https://github.com/VNG-Realisatie/notificaties-api" rel="nofollow">https://github.com/VNG-Realisatie/notificaties-api</a>. | ||
|
||
|
||
### autorisaties | ||
|
||
**Kanaal** | ||
`autorisaties` | ||
|
||
**Main resource** | ||
|
||
`applicatie` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
|
||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>applicatie</code>: create, update, destroy | ||
|
||
|
||
### besluiten | ||
|
||
**Kanaal** | ||
`besluiten` | ||
|
||
**Main resource** | ||
|
||
`besluit` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
* `verantwoordelijke_organisatie`: Het RSIN van de niet-natuurlijk persoon zijnde de organisatie die het besluit heeft vastgesteld. | ||
* `besluittype`: URL-referentie naar het BESLUITTYPE (in de Catalogi API). | ||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>besluit</code>: create, update, destroy | ||
|
||
* <code>besluitinformatieobject</code>: create, destroy | ||
|
||
|
||
### besluittypen | ||
|
||
**Kanaal** | ||
`besluittypen` | ||
|
||
**Main resource** | ||
|
||
`besluittype` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
* `catalogus`: URL-referentie naar de CATALOGUS waartoe dit BESLUITTYPE behoort. | ||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>besluittype</code>: create, update, destroy | ||
|
||
|
||
### documenten | ||
|
||
**Kanaal** | ||
`documenten` | ||
|
||
**Main resource** | ||
|
||
`enkelvoudiginformatieobject` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
* `bronorganisatie`: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie die het informatieobject heeft gecreëerd of heeft ontvangen en als eerste in een samenwerkingsketen heeft vastgelegd. | ||
* `informatieobjecttype`: URL-referentie naar het INFORMATIEOBJECTTYPE (in de Catalogi API). | ||
* `vertrouwelijkheidaanduiding`: Aanduiding van de mate waarin het INFORMATIEOBJECT voor de openbaarheid bestemd is. | ||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>enkelvoudiginformatieobject</code>: create, update, destroy | ||
|
||
* <code>gebruiksrechten</code>: create, update, destroy | ||
|
||
* <code>verzending</code>: create, update, destroy | ||
|
||
|
||
### informatieobjecttypen | ||
|
||
**Kanaal** | ||
`informatieobjecttypen` | ||
|
||
**Main resource** | ||
|
||
`informatieobjecttype` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
* `catalogus`: URL-referentie naar de CATALOGUS waartoe dit INFORMATIEOBJECTTYPE behoort. | ||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>informatieobjecttype</code>: create, update, destroy | ||
|
||
|
||
### zaaktypen | ||
|
||
**Kanaal** | ||
`zaaktypen` | ||
|
||
**Main resource** | ||
|
||
`zaaktype` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
* `catalogus`: URL-referentie naar de CATALOGUS waartoe dit ZAAKTYPE behoort. | ||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>zaaktype</code>: create, update, destroy | ||
|
||
|
||
### zaken | ||
|
||
**Kanaal** | ||
`zaken` | ||
|
||
**Main resource** | ||
|
||
`zaak` | ||
|
||
|
||
|
||
**Kenmerken** | ||
|
||
* `bronorganisatie`: Het RSIN van de Niet-natuurlijk persoon zijnde de organisatie die de zaak heeft gecreeerd. Dit moet een geldig RSIN zijn van 9 nummers en voldoen aan <a href="https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef" rel="nofollow">https://nl.wikipedia.org/wiki/Burgerservicenummer#11-proef</a> | ||
* `zaaktype`: URL-referentie naar het ZAAKTYPE (in de Catalogi API). | ||
* `zaaktype.catalogus`: **EXPERIMENTEEL** URL-referentie naar de CATALOGUS waartoe dit ZAAKTYPE behoort. | ||
* `vertrouwelijkheidaanduiding`: Aanduiding van de mate waarin het zaakdossier van de ZAAK voor de openbaarheid bestemd is. | ||
|
||
**Resources en acties** | ||
|
||
|
||
* <code>zaak</code>: create, update, destroy | ||
|
||
* <code>status</code>: create | ||
|
||
* <code>zaakobject</code>: create, update, destroy | ||
|
||
* <code>zaakinformatieobject</code>: create | ||
|
||
* <code>zaakeigenschap</code>: create, update, destroy | ||
|
||
* <code>klantcontact</code>: create | ||
|
||
* <code>rol</code>: create, destroy | ||
|
||
* <code>resultaat</code>: create, update, destroy | ||
|
||
* <code>zaakbesluit</code>: create | ||
|
||
* <code>zaakcontactmoment</code>: create | ||
|
||
* <code>zaakverzoek</code>: create | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,75 @@ | ||
# SPDX-License-Identifier: EUPL-1.2 | ||
# Copyright (C) 2019 - 2020 Dimpact | ||
from notifications_api_common.kanalen import Kanaal | ||
from typing import Dict, cast | ||
|
||
from django.db.models import Field, Model | ||
|
||
from glom import glom | ||
from notifications_api_common.kanalen import Kanaal as _Kanaal | ||
from rest_framework.request import Request | ||
from vng_api_common.tests import reverse | ||
|
||
from openzaak.utils.help_text import mark_experimental | ||
|
||
from ..models import Zaak | ||
|
||
|
||
class Kanaal(_Kanaal): | ||
@staticmethod | ||
def get_field(model: Model, field: str) -> Field: | ||
""" | ||
Function to retrieve a field from a Model, can also be passed a path to a field | ||
(e.g. `zaaktype.catalogus`) | ||
""" | ||
if "." in field: | ||
model_field = None | ||
bits = field.split(".") | ||
for i, part in enumerate(bits): | ||
model_field = model._meta.get_field(part) | ||
if fk_field := getattr(model_field, "fk_field", None): | ||
model_field = model._meta.get_field(fk_field) | ||
if i != len(bits): | ||
model = cast(Model, model_field.related_model) | ||
assert model_field, "Could not find field on model" | ||
return model_field | ||
return model._meta.get_field(field) | ||
|
||
def get_kenmerken( | ||
self, obj: Model, data: dict | None = None, request: Request | None = None | ||
) -> Dict: | ||
""" | ||
Overridden to support sending kenmerken that are not directly part of the main | ||
resource (e.g `Zaak.zaaktype.catalogus`) | ||
""" | ||
data = data or {} | ||
kenmerken = {} | ||
for kenmerk in self.kenmerken: | ||
value = data.get(kenmerk, glom(obj, kenmerk, default="")) | ||
if isinstance(value, Model): | ||
if _loose_fk_data := getattr(value, "_loose_fk_data", None): | ||
value = _loose_fk_data["url"] | ||
else: | ||
value = reverse(value) | ||
if request: | ||
value = request.build_absolute_uri(value) | ||
kenmerken[kenmerk] = value | ||
return kenmerken | ||
|
||
|
||
KANAAL_ZAKEN = Kanaal( | ||
"zaken", | ||
main_resource=Zaak, | ||
kenmerken=("bronorganisatie", "zaaktype", "vertrouwelijkheidaanduiding"), | ||
kenmerken=( | ||
"bronorganisatie", | ||
"zaaktype", | ||
"zaaktype.catalogus", | ||
"vertrouwelijkheidaanduiding", | ||
), | ||
extra_kwargs={ | ||
"zaaktype.catalogus": { | ||
"help_text": mark_experimental( | ||
"URL-referentie naar de CATALOGUS waartoe dit ZAAKTYPE behoort." | ||
) | ||
} | ||
}, | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters