Skip to content

Commit

Permalink
Connect Berichten views to Objects API
Browse files Browse the repository at this point in the history
  • Loading branch information
swrichards committed Oct 8, 2024
1 parent 7b6c2a1 commit 3af2ab8
Show file tree
Hide file tree
Showing 7 changed files with 58 additions and 75 deletions.
11 changes: 6 additions & 5 deletions src/open_inwoner/berichten/api_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from datetime import date
from typing import List, Optional

from pydantic import AnyUrl, BaseModel, Field, constr
from pydantic import BaseModel, Field, constr
from typing_extensions import Literal


Expand All @@ -19,15 +19,15 @@ class Identificatie(BaseModel):
class Bericht(BaseModel):
object_uuid: str = Field(..., description="UUID van het onderliggende object")
onderwerp: str = Field(..., description="Onderwerp van het bericht")
berichtTekst: str = Field(
bericht_tekst: 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(
einddatum_handelingstermijn: Optional[date] = Field(
None, description="Termijn waarbinnen de geadresseerde moet reageren"
)
referentie: Optional[str] = Field(None, description="TODO")
Expand All @@ -38,11 +38,12 @@ class Bericht(BaseModel):
...,
description="Het bericht is door de geadresseerde geopend of nog niet geopend",
)
berichtType: Literal[
bericht_type: Literal[
"notificatie", "betaalverzoek", "uitnodiging", "verzoek", "TODO"
] = Field(..., description="Type bericht")
identificatie: Identificatie = Field(..., description="TODO")
bijlages: List[AnyUrl] = Field(
# TODO: Should be AnyUrl
bijlages: List[str] = Field(
...,
description="TODO",
examples=[["https://documenten.nl/api/v1/enkelvoudiginformatieobjecten/1"]],
Expand Down
63 changes: 0 additions & 63 deletions src/open_inwoner/berichten/mock_data.py

This file was deleted.

41 changes: 41 additions & 0 deletions src/open_inwoner/berichten/services.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
from typing import Literal

from objectsapiclient.client import Client as ObjectenClient
from objectsapiclient.models import Configuration

from open_inwoner.berichten.api_models import Bericht


class BerichtenService:

client: ObjectenClient

def __init__(self, client: ObjectenClient | None = None):
self.client = client or Configuration.get_solo().client

def fetch_berichten_for_bsn(self, bsn: str):
return self.fetch_berichten_for_identificatie("bsn", bsn)

def fetch_berichten_for_kvk(self, kvk: str):
return self.fetch_berichten_for_identificatie("kvk", kvk)

def fetch_berichten_for_identificatie(
self, identificatie_type: Literal["bsn", "kvk"], identificatie_value: str
):
objects = self.client.get_objects(
object_type_uuid="98b9b5dd-9c2c-44ba-b5bf-13edaed668f9",
data_attrs=[
f"identificatie__type__exact__{identificatie_type}",
f"identificatie__value__exact__{identificatie_value}",
],
)

return [
Bericht.model_validate(obj.record["data"] | {"object_uuid": obj.uuid})
for obj in objects
]

def fetch_bericht(self, uuid: str):
obj = self.client.get_object(uuid)

return Bericht.model_validate(obj.record["data"] | {"object_uuid": obj.uuid})
5 changes: 3 additions & 2 deletions src/open_inwoner/berichten/views/bericht_detail.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from view_breadcrumbs import BaseBreadcrumbMixin

from open_inwoner.berichten.mock_data import MOCK_BERICHTEN
from open_inwoner.berichten.services import BerichtenService
from open_inwoner.utils.views import CommonPageMixin

logger = logging.getLogger(__name__)
Expand All @@ -29,5 +29,6 @@ def page_title(self):

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["bericht"] = MOCK_BERICHTEN[0]
service = BerichtenService()
context["bericht"] = service.fetch_bericht(self.kwargs["object_uuid"])
return context
7 changes: 5 additions & 2 deletions src/open_inwoner/berichten/views/bericht_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

from view_breadcrumbs import BaseBreadcrumbMixin

from open_inwoner.berichten.mock_data import MOCK_BERICHTEN
from open_inwoner.berichten.services import BerichtenService
from open_inwoner.utils.views import CommonPageMixin

logger = logging.getLogger(__name__)
Expand All @@ -28,5 +28,8 @@ def page_title(self):

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["berichten"] = MOCK_BERICHTEN
service = BerichtenService()
if self.request.user.is_authenticated and (bsn := self.request.user.bsn):
context["berichten"] = service.fetch_berichten_for_bsn(bsn)

return context
4 changes: 2 additions & 2 deletions src/open_inwoner/templates/pages/berichten/detail.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ <h1 class="utrecht-heading-1" id="title">
</div>
</div>
<p class="utrecht-paragraph denhaag-page-content__message">berichtTekst: <br>
<span>{{ bericht.berichtTekst|linebreaks }}</span></p>
<span>{{ bericht.bericht_tekst|linebreaks }}</span></p>
<div class="denhaag-action denhaag-action--multi denhaag-page-content__task">
<div class="denhaag-action__content">handelingsperspectief: {{ bericht.handelingsperspectief }}</div>
<div>
Expand Down Expand Up @@ -67,7 +67,7 @@ <h2>Bijlagen</h2>

<script>
// Get the end date from the Django context
const einddatum = new Date("{{ bericht.einddatumHandelingstermijn }}");
const einddatum = new Date("{{ bericht.einddatum_handelingstermijn }}");
const today = new Date();

// Calculate the remaining days
Expand Down
2 changes: 1 addition & 1 deletion src/open_inwoner/templates/pages/berichten/list.html
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ <h1 class="utrecht-heading-1" id="title">
{% endif %}
</div>
</td>
<td class="table__item">{{ bericht.berichtType }}
<td class="table__item">{{ bericht.bericht_type }}
<a href="{{ bericht.object_uuid }}">
<span class="button button--icon-before button--transparent button--secondary">
<span aria-hidden="true" class="material-icons-outlined ">arrow_forward</span>
Expand Down

0 comments on commit 3af2ab8

Please sign in to comment.