enable datetime objects in parser

This commit is contained in:
2026-05-22 13:45:08 +02:00
parent f66b535ac2
commit fce3429f34

View File

@@ -221,7 +221,7 @@ class FlatBaseModel(BaseModel):
def to_db(self) -> dict[str, Any]: def to_db(self) -> dict[str, Any]:
"""Ausgang für die DB: Flach, Listen sind JSON-Strings.""" """Ausgang für die DB: Flach, Listen sind JSON-Strings."""
nested = super().model_dump(mode="json") nested = super().model_dump()
return self.__flatten_dict(nested, serialize_lists=True) return self.__flatten_dict(nested, serialize_lists=True)
def to_gui(self) -> dict[str, Any]: def to_gui(self) -> dict[str, Any]:
@@ -251,7 +251,7 @@ class FlatBaseModel(BaseModel):
processed_list.append(item) processed_list.append(item)
if serialize_lists: if serialize_lists:
items.append((new_key, json.dumps(processed_list))) items.append((new_key, json.dumps(processed_list, default=_parse_json)))
else: else:
items.append((new_key, processed_list)) items.append((new_key, processed_list))
else: else:
@@ -259,6 +259,15 @@ class FlatBaseModel(BaseModel):
return dict(items) return dict(items)
def _parse_json(value: Any) -> str:
if isinstance(value, datetime.date):
return value.isoformat()
elif isinstance(value, datetime.datetime):
return value.isoformat()
else:
raise TypeError
@dc.dataclass(slots=True) @dc.dataclass(slots=True)
class CountryList: class CountryList:
iso_to_country: dict[str, str] iso_to_country: dict[str, str]