From 8c38c703d8f54f91ead86f7f3df94c4684663792 Mon Sep 17 00:00:00 2001 From: Sidney Richards Date: Mon, 7 Oct 2024 16:40:40 +0200 Subject: [PATCH] Add a mock Bericht object and model --- src/open_inwoner/berichten/api_models.py | 49 +++++++++++++++++++ src/open_inwoner/berichten/mock_data.py | 23 +++++++++ .../berichten/views/bericht_detail.py | 2 + .../berichten/views/bericht_list.py | 2 + .../templates/pages/berichten/detail.html | 2 + .../templates/pages/berichten/list.html | 8 ++- 6 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 src/open_inwoner/berichten/api_models.py create mode 100644 src/open_inwoner/berichten/mock_data.py diff --git a/src/open_inwoner/berichten/api_models.py b/src/open_inwoner/berichten/api_models.py new file mode 100644 index 0000000000..117bb9dd02 --- /dev/null +++ b/src/open_inwoner/berichten/api_models.py @@ -0,0 +1,49 @@ +# generated by datamodel-codegen: +# filename: bericht.json +# timestamp: 2024-10-07T14:27:37+00:00 + +from __future__ import annotations + +from datetime import date +from typing import List, Optional + +from pydantic import AnyUrl, BaseModel, Field, constr +from typing_extensions import Literal + + +class Identificatie(BaseModel): + type: Literal["bsn", "kvk"] = "bsn" + value: Optional[constr(pattern=r"^[0-9]+$")] = None # noqa: F722 + + +class Bericht(BaseModel): + object_uuid: str = Field(..., description="UUID van het onderliggende object") + onderwerp: str = Field(..., description="Onderwerp van het bericht") + berichtTekst: str = Field( + ..., + description="Tekst van het bericht. Mag URL bevatten en /r/n voor newline. Geen verdere opmaak mogelijk.", + ) + publicatiedatum: date = Field( + ..., + description="Tijdstip van verwerken van het bericht of de PublicatieDatum indien deze is ingevuld", + ) + einddatumHandelingstermijn: Optional[date] = Field( + None, description="Termijn waarbinnen de geadresseerde moet reageren" + ) + referentie: Optional[str] = Field(None, description="TODO") + handelingsperspectief: Optional[ + Literal["betalen", "informatie verstrekken", "informatie ontvangen", "TODO"] + ] = Field(None, description="TODO: Benodigde reactie van de geadresseerde") + geopend: bool = Field( + ..., + description="Het bericht is door de geadresseerde geopend of nog niet geopend", + ) + berichtType: Literal[ + "notificatie", "betaalverzoek", "uitnodiging", "verzoek", "TODO" + ] = Field(..., description="Type bericht") + identificatie: Identificatie = Field(..., description="TODO") + bijlages: List[AnyUrl] = Field( + ..., + description="TODO", + examples=[["https://documenten.nl/api/v1/enkelvoudiginformatieobjecten/1"]], + ) diff --git a/src/open_inwoner/berichten/mock_data.py b/src/open_inwoner/berichten/mock_data.py new file mode 100644 index 0000000000..8594715960 --- /dev/null +++ b/src/open_inwoner/berichten/mock_data.py @@ -0,0 +1,23 @@ +import uuid + +from open_inwoner.berichten.api_models import Bericht + +MOCK_BERICHT = { + "onderwerp": "Besluit", + "berichtTekst": "Hallo\neen\nbericht", + "publicatiedatum": "2024-01-01", + "referentie": "TODO", + "handelingsperspectief": "TODO", + "geopend": False, + "berichtType": "TODO", + "identificatie": {"type": "bsn", "value": "999991954"}, + "bijlages": [ + "https://documenten.nl/api/v1/enkelvoudiginformatieobjecten/1", + "https://documenten.nl/api/v1/enkelvoudiginformatieobjecten/2", + ], +} + +MOCK_BERICHTEN = [ + Bericht.model_validate(MOCK_BERICHT | {"object_uuid": str(uuid.uuid4())}) + for _ in range(25) +] diff --git a/src/open_inwoner/berichten/views/bericht_detail.py b/src/open_inwoner/berichten/views/bericht_detail.py index 7f185d6e19..828f037fae 100644 --- a/src/open_inwoner/berichten/views/bericht_detail.py +++ b/src/open_inwoner/berichten/views/bericht_detail.py @@ -7,6 +7,7 @@ from view_breadcrumbs import BaseBreadcrumbMixin +from open_inwoner.berichten.mock_data import MOCK_BERICHTEN from open_inwoner.utils.views import CommonPageMixin logger = logging.getLogger(__name__) @@ -28,4 +29,5 @@ def page_title(self): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) + context["bericht"] = MOCK_BERICHTEN[0] return context diff --git a/src/open_inwoner/berichten/views/bericht_list.py b/src/open_inwoner/berichten/views/bericht_list.py index 951c780de9..698b3e5e5e 100644 --- a/src/open_inwoner/berichten/views/bericht_list.py +++ b/src/open_inwoner/berichten/views/bericht_list.py @@ -7,6 +7,7 @@ from view_breadcrumbs import BaseBreadcrumbMixin +from open_inwoner.berichten.mock_data import MOCK_BERICHTEN from open_inwoner.utils.views import CommonPageMixin logger = logging.getLogger(__name__) @@ -27,4 +28,5 @@ def page_title(self): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) + context["berichten"] = MOCK_BERICHTEN return context diff --git a/src/open_inwoner/templates/pages/berichten/detail.html b/src/open_inwoner/templates/pages/berichten/detail.html index 02e9534eed..37e59bcbfa 100644 --- a/src/open_inwoner/templates/pages/berichten/detail.html +++ b/src/open_inwoner/templates/pages/berichten/detail.html @@ -1 +1,3 @@ Bericht Detail. + +{{ bericht.berichtTekst }} \ No newline at end of file diff --git a/src/open_inwoner/templates/pages/berichten/list.html b/src/open_inwoner/templates/pages/berichten/list.html index 527ee5fd46..f5ba4719d0 100644 --- a/src/open_inwoner/templates/pages/berichten/list.html +++ b/src/open_inwoner/templates/pages/berichten/list.html @@ -1 +1,7 @@ -Berichten List. +Berichten List. + +{% for bericht in berichten %} + +{{ bericht.berichtTekst }} + +{% endfor %}