Skip to content

Commit

Permalink
✨ [#10] transformed datefield to the correct depiction of a datetime …
Browse files Browse the repository at this point in the history
…field and changed test class to document from publication
  • Loading branch information
bart-maykin committed Feb 12, 2025
1 parent a772743 commit 0d8dfc2
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 15 deletions.
2 changes: 1 addition & 1 deletion src/woo_search/search_index/documents/publications.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class Document(ES_Document):
# for typing support.
uuid: M[str] = mapped_field(Text(required=True))
publicatie: M[str] = mapped_field(Text(required=True))
publisher: PublisherType = mapped_field(Object(Publisher, required=True))
publisher: M[PublisherType] = mapped_field(Object(Publisher, required=True))
identifier: M[str] = mapped_field(Text(required=True))
officiele_titel: M[str] = mapped_field(Text(required=True))
verkorte_titel: M[str] = mapped_field(Text())
Expand Down
7 changes: 4 additions & 3 deletions src/woo_search/search_index/tasks/publications.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from datetime import datetime
from datetime import date, datetime

from woo_search.celery import app
from woo_search.utils.date import date_to_datetime

from ..client import get_client
from ..documents import Document
Expand All @@ -16,7 +17,7 @@ def index_document(
officiele_titel: str,
verkorte_titel: str,
omschrijving: str,
creatiedatum: datetime,
creatiedatum: date,
registratiedatum: datetime,
laatst_gewijzigd_datum: datetime,
):
Expand All @@ -29,7 +30,7 @@ def index_document(
officiele_titel=officiele_titel,
verkorte_titel=verkorte_titel,
omschrijving=omschrijving,
creatiedatum=creatiedatum,
creatiedatum=date_to_datetime(creatiedatum),
registratiedatum=registratiedatum,
laatst_gewijzigd_datum=laatst_gewijzigd_datum,
)
Expand Down
2 changes: 1 addition & 1 deletion src/woo_search/search_index/tests/test_publications_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
from .base import ElasticSearchAPITestCase


class PublicationsAPITest(APITestCase):
class DocumentAPITest(APITestCase):
url = reverse("api:document-list")

@patch("woo_search.search_index.tasks.publications.index_document.delay")
Expand Down
7 changes: 4 additions & 3 deletions src/woo_search/search_index/tests/test_tasks.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from datetime import datetime, timezone
from datetime import date, datetime, timezone

from woo_search.utils.date import TIMEZONE_AMS
from woo_search.utils.tests.vcr import VCRMixin

from ..client import get_client
Expand All @@ -23,7 +24,7 @@ def test_index_document_roundtrip(self):
officiele_titel="A test document",
verkorte_titel="A document",
omschrijving="Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
creatiedatum=datetime(2026, 1, 1, tzinfo=timezone.utc),
creatiedatum=date(2026, 1, 1),
registratiedatum=datetime(2026, 1, 5, 12, 0, 0, tzinfo=timezone.utc),
laatst_gewijzigd_datum=datetime(2026, 1, 5, 12, 0, 0, tzinfo=timezone.utc),
)
Expand Down Expand Up @@ -55,7 +56,7 @@ def test_index_document_roundtrip(self):
)
# date -> converted to naive datetime
self.assertEqual(
doc.creatiedatum, datetime(2026, 1, 1, 0, 0, 0, tzinfo=timezone.utc)
doc.creatiedatum, datetime(2026, 1, 1, 0, 0, 0, tzinfo=TIMEZONE_AMS)
)
self.assertEqual(
doc.registratiedatum,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ interactions:
- request:
body: '{"uuid":"0c5730c7-17ed-42a7-bc3b-5ee527ef3326","publicatie":"e28fba05-14b3-4d9f-94c1-de95b60cc5b3","publisher":{"uuid":"f8b2b355-1d6e-4c1a-ba18-565f422997da","naam":"Utrecht"},"identifier":"https://example.com/b36519a5-64d9-4316-a042-3ac5406f8f61","officiele_titel":"Een
erg belangrijk bestand.","verkorte_titel":"Een bestand.","omschrijving":"bla
bla bla bla.","creatiedatum":"2025-02-04","registratiedatum":"2025-02-04T15:42:53.646693+01:00","laatst_gewijzigd_datum":"2025-02-04T15:42:53.646700+01:00"}'
bla bla bla.","creatiedatum":"2025-02-04T00:00:00+01:00","registratiedatum":"2025-02-04T15:42:53.646693+01:00","laatst_gewijzigd_datum":"2025-02-04T15:42:53.646700+01:00"}'
headers:
accept:
- application/vnd.elasticsearch+json; compatible-with=8
Expand Down Expand Up @@ -48,12 +48,12 @@ interactions:
body:
string: '{"_index":"document","_id":"0c5730c7-17ed-42a7-bc3b-5ee527ef3326","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{"uuid":"0c5730c7-17ed-42a7-bc3b-5ee527ef3326","publicatie":"e28fba05-14b3-4d9f-94c1-de95b60cc5b3","publisher":{"uuid":"f8b2b355-1d6e-4c1a-ba18-565f422997da","naam":"Utrecht"},"identifier":"https://example.com/b36519a5-64d9-4316-a042-3ac5406f8f61","officiele_titel":"Een
erg belangrijk bestand.","verkorte_titel":"Een bestand.","omschrijving":"bla
bla bla bla.","creatiedatum":"2025-02-04","registratiedatum":"2025-02-04T15:42:53.646693+01:00","laatst_gewijzigd_datum":"2025-02-04T15:42:53.646700+01:00"}}'
bla bla bla.","creatiedatum":"2025-02-04T00:00:00+01:00","registratiedatum":"2025-02-04T15:42:53.646693+01:00","laatst_gewijzigd_datum":"2025-02-04T15:42:53.646700+01:00"}}'
headers:
X-elastic-product:
- Elasticsearch
content-length:
- '637'
- '652'
content-type:
- application/vnd.elasticsearch+json;compatible-with=8
status:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ interactions:
- request:
body: '{"uuid":"0095704d-4216-4de3-83d2-20dba551b0dc","publicatie":"d481bea6-335b-4d90-9b27-ac49f7196633","publisher":{"uuid":"f8b2b355-1d6e-4c1a-ba18-565f422997da","naam":"Utrecht"},"identifier":"https://www.example.com/1","officiele_titel":"A
test document","verkorte_titel":"A document","omschrijving":"Lorem ipsum dolor
sit amet, consectetur adipiscing elit.","creatiedatum":"2026-01-01T00:00:00+00:00","registratiedatum":"2026-01-05T12:00:00+00:00","laatst_gewijzigd_datum":"2026-01-05T12:00:00+00:00"}'
sit amet, consectetur adipiscing elit.","creatiedatum":"2026-01-01T00:00:00+01:00","registratiedatum":"2026-01-05T12:00:00+00:00","laatst_gewijzigd_datum":"2026-01-05T12:00:00+00:00"}'
headers:
accept:
- application/vnd.elasticsearch+json; compatible-with=8
Expand Down Expand Up @@ -48,7 +48,7 @@ interactions:
body:
string: '{"_index":"document","_id":"0095704d-4216-4de3-83d2-20dba551b0dc","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{"uuid":"0095704d-4216-4de3-83d2-20dba551b0dc","publicatie":"d481bea6-335b-4d90-9b27-ac49f7196633","publisher":{"uuid":"f8b2b355-1d6e-4c1a-ba18-565f422997da","naam":"Utrecht"},"identifier":"https://www.example.com/1","officiele_titel":"A
test document","verkorte_titel":"A document","omschrijving":"Lorem ipsum dolor
sit amet, consectetur adipiscing elit.","creatiedatum":"2026-01-01T00:00:00+00:00","registratiedatum":"2026-01-05T12:00:00+00:00","laatst_gewijzigd_datum":"2026-01-05T12:00:00+00:00"}}'
sit amet, consectetur adipiscing elit.","creatiedatum":"2026-01-01T00:00:00+01:00","registratiedatum":"2026-01-05T12:00:00+00:00","laatst_gewijzigd_datum":"2026-01-05T12:00:00+00:00"}}'
headers:
X-elastic-product:
- Elasticsearch
Expand Down
4 changes: 2 additions & 2 deletions src/woo_search/search_index/typing.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import datetime
from datetime import date, datetime
from typing import TypedDict


Expand All @@ -15,6 +15,6 @@ class DocumentType(TypedDict):
officiele_titel: str
verkorte_titel: str
omschrijving: str
creatiedatum: datetime
creatiedatum: date
registratiedatum: datetime
laatst_gewijzigd_datum: datetime
9 changes: 9 additions & 0 deletions src/woo_search/utils/date.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from datetime import date, datetime
from zoneinfo import ZoneInfo

TIMEZONE_AMS = ZoneInfo("Europe/Amsterdam")


def date_to_datetime(value: date, timezone: ZoneInfo = TIMEZONE_AMS) -> datetime:
"""return the date as datetime of specific timezone, default timezone is Europe/Amsterdam"""
return datetime.combine(value, datetime.min.time(), tzinfo=timezone)

0 comments on commit 0d8dfc2

Please sign in to comment.