generated from dopt-python/py311
better automatic export, prepare data validation for backend export
This commit is contained in:
@@ -3,10 +3,74 @@ import dataclasses as dc
|
||||
import enum
|
||||
import re
|
||||
from collections.abc import Sequence
|
||||
from typing import Any
|
||||
|
||||
import babel
|
||||
from PySide6.QtCore import QDate, Qt
|
||||
|
||||
# %%
|
||||
DYNAMIC_LIST_KEY_PATTERN = re.compile(r"-\[(\d+)\]")
|
||||
|
||||
dynamic_content = {
|
||||
"Stammdaten_anzahl_kinder-[0]": {"Stammdaten_anzahl_kinder": "5"},
|
||||
"Stammdaten_anzahl_kinder-[1]": {"Stammdaten_alter_kinder": "23213"},
|
||||
"Stammdaten_anzahl_kinder-[2]": {"Stammdaten_alter_kinder": "123123"},
|
||||
"Stammdaten_anzahl_kinder-[3]": {"Stammdaten_alter_kinder": "123213"},
|
||||
"Stammdaten_anzahl_kinder-[4]": {"Stammdaten_alter_kinder": "123123"},
|
||||
"Stammdaten_anzahl_kinder-[5]": {"Stammdaten_alter_kinder": "123123"},
|
||||
}
|
||||
|
||||
|
||||
def find_dynamic_content(content: dict[str, Any]) -> dict[str, Any] | None:
|
||||
|
||||
found = None
|
||||
for key in dynamic_content.keys():
|
||||
if DYNAMIC_LIST_KEY_PATTERN.search(key):
|
||||
# found an match: this is dynamic content dictionary
|
||||
print("found")
|
||||
found = dynamic_content
|
||||
break
|
||||
|
||||
return found
|
||||
|
||||
|
||||
# %%
|
||||
new_content = {
|
||||
"Stammdaten": {
|
||||
"Stammdaten_PLZ": "",
|
||||
"Stammdaten_anrede_anschrift": "asdasdas",
|
||||
"Stammdaten_anzahl_kinder": [
|
||||
{
|
||||
"Stammdaten_anzahl_kinder-[0]": {"Stammdaten_anzahl_kinder": "5"},
|
||||
"Stammdaten_anzahl_kinder-[1]": {"Stammdaten_alter_kinder": "23213"},
|
||||
"Stammdaten_anzahl_kinder-[2]": {"Stammdaten_alter_kinder": "123123"},
|
||||
"Stammdaten_anzahl_kinder-[3]": {"Stammdaten_alter_kinder": "123213"},
|
||||
"Stammdaten_anzahl_kinder-[4]": {"Stammdaten_alter_kinder": "123123"},
|
||||
"Stammdaten_anzahl_kinder-[5]": {"Stammdaten_alter_kinder": "123123"},
|
||||
}
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def flat_dict(contents):
|
||||
for x in contents:
|
||||
if isinstance(contents, dict):
|
||||
yield from flat_dict(tuple(contents[x]))
|
||||
elif isinstance(x, (list, tuple, set)):
|
||||
yield from flat_dict(x)
|
||||
else:
|
||||
yield x
|
||||
|
||||
|
||||
# %%
|
||||
for x in flat_dict(new_content):
|
||||
print(x)
|
||||
|
||||
|
||||
# %%
|
||||
find_dynamic_content(dynamic_content)
|
||||
|
||||
|
||||
# %%
|
||||
@dc.dataclass(slots=True)
|
||||
|
||||
Reference in New Issue
Block a user