add script for generating fake testing data

This commit is contained in:
dreamer committed 2026-11-03 17:50:13 +01:00
1 parent f8a6ade8e6
commit 3f86cc1b57
6 files changed
+683 -373

No files matched your search

+3
View File
@@ -2,3 +2,6 @@
*.venv/ *.venv/
*.env *.env
*cache* *cache*
.python-version
*.xml
.vscode/
+10 -4
View File
@@ -5,14 +5,20 @@ from datetime import datetime
from typing import Annotated from typing import Annotated
from zoneinfo import ZoneInfo from zoneinfo import ZoneInfo
from pydantic import BeforeValidator from pydantic import BeforeValidator, PlainSerializer
from pydantic_xml import BaseXmlModel, RootXmlModel, element, wrapped from pydantic_xml import BaseXmlModel, RootXmlModel, element, wrapped
from fhdhview.core.config import settings from fhdhview.core.config import settings
DT = Annotated[datetime, BeforeValidator(lambda v: datetime.strptime(v, "%Y%m%d%H%M").replace( # DateTime annotation with timezone handling and serialization format
tzinfo=ZoneInfo(settings.timezone) # Allows both string and datetime inputs, ensuring they have the correct timezone
))] DT = Annotated[datetime, BeforeValidator(
lambda v:
(datetime.strptime(v, "%Y%m%d%H%M").replace(tzinfo=ZoneInfo(settings.timezone))
if isinstance(v, str)
else (v.replace(tzinfo=ZoneInfo(settings.timezone)))
)), PlainSerializer(lambda dt: dt.strftime("%Y%m%d%H%M"))
]
class Session(BaseXmlModel, tag='session'): class Session(BaseXmlModel, tag='session'):
Generated
+593 -368
View File
File diff suppressed because it is too large. Load diff
+3 -1
View File
@@ -11,7 +11,7 @@ dependencies = [
"fastapi (>=0.141.1,<0.142.0)", "fastapi (>=0.141.1,<0.142.0)",
"pydantic-xml (>=2.21.1,<3.0.0)", "pydantic-xml (>=2.21.1,<3.0.0)",
"sqlmodel (>=0.0.42,<0.0.43)", "sqlmodel (>=0.0.42,<0.0.43)",
"uvicorn (>=0.53.0,<0.54.0)", "uvicorn (>=0.54.0,<0.55.0)",
"python-multipart (>=0.0.32,<0.0.33)", "python-multipart (>=0.0.32,<0.0.33)",
"pydantic-settings (>=2.15.0,<3.0.0)", "pydantic-settings (>=2.15.0,<3.0.0)",
"aiosqlite (>=0.22.1,<0.23.0)" "aiosqlite (>=0.22.1,<0.23.0)"
@@ -24,6 +24,8 @@ dev = [
"ruff (>=0.16.6,<0.17.0)", "ruff (>=0.16.6,<0.17.0)",
"httpx2 (>=2.13.1,<3.0.0)", "httpx2 (>=2.13.1,<3.0.0)",
"pytest-asyncio (>=1.4.0,<2.0.0)", "pytest-asyncio (>=1.4.0,<2.0.0)",
"faker (>=40.44.0,<41.0.0)",
"lxml (>=6.1.3,<7.0.0)",
] ]
View File
Whitespace-only changes.
+74
View File
@@ -0,0 +1,74 @@
from datetime import UTC, datetime, timedelta
from random import randint, sample
from zoneinfo import ZoneInfo
from faker import Faker
from faker.providers import company
from fhdhview.services.screenwriter.schema import AAMPos, Session, Sessions
fake = Faker()
fake.add_provider(company)
zaal = [
"DenHaag_zaal_1",
"DenHaag_zaal_2",
"DenHaag_zaal_3",
"DenHaag_zaal_4",
"DenHaag_zaal_5",
"DenHaag_zaal_6",
"Filmhuis Den Haag 10 (buitenbios)"
]
kw_age = [
"vanaf 6 jaar",
"vanaf 9 jaar",
"vanaf 12 jaar",
"vanaf 14 jaar",
"vanaf 18 jaar",
"Alle leeftijden"
]
kw_keywords = [
"Angst",
"Discriminatie",
"Drugs- en/of alcoholmisbruik",
"Grof taalgebruik",
"Gevaarlijk gedrag",
"Geweld",
"Seks"
]
attr_extra = [
"EN subs"
]
sessions: list[Session] = []
for i in range(20):
start_time = datetime.now(tz=ZoneInfo("Europe/Amsterdam"))+timedelta(minutes=randint(-20, 59))
attrs = sample(kw_age, 1) + sample(kw_keywords, randint(0, 3)) + sample(attr_extra, randint(0, 1))
session = Session(
session_id=randint(1000, 9999),
screen_identifier=sample(zaal, 1)[0],
complex_identifier="Filmhuis Den Haag",
start=start_time,
end=start_time+timedelta(hours=2),
feature_duration=int(timedelta(hours=2).total_seconds()),
title=fake.catch_phrase(),
rating=randint(1, 10),
seats_available=100,
seats_sold=randint(0, 100),
attributes=attrs
)
sessions.append(session)
xml_data = AAMPos(sessions=Sessions(root=sessions))
with open("test_xml.xml", "wb") as f:
result = xml_data.to_xml(pretty_print=True)
f.write(result if isinstance(result, bytes) else result.encode("utf-8"))