From c99f3aa7fcc22c11b856666b007ef52578ab6d84 Mon Sep 17 00:00:00 2001 From: Ondrej Kokes Date: Wed, 23 Nov 2022 15:45:41 +0100 Subject: [PATCH] =?UTF-8?q?[justice]=20neukl=C3=A1dej=20bydli=C5=A1t=C4=9B?= =?UTF-8?q?=20a=20adresy=20do=20zvl=C3=A1=C5=A1=C5=A5=20sloupc=C5=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/justice/main.py | 13 +++- data/justice/schema.py | 65 ++---------------- data/justice/xml_schema.json | 126 +++++++++++++++++++---------------- 3 files changed, 86 insertions(+), 118 deletions(-) diff --git a/data/justice/main.py b/data/justice/main.py index 05f9f942..f9b55e10 100644 --- a/data/justice/main.py +++ b/data/justice/main.py @@ -49,8 +49,15 @@ def merge(a, b, path=None): def extrahuj(node, schema): ret = {} for k, v in schema.items(): + # TODO: autodict v pripade, ze len(node.find(v).getchildren()) > 0? + # neco jako + # if found := node.find(v): + # if len(found.getchildren()) > 0: + # ret[k] = {v.tag: v.text.strip() for v in node.iterchildren()} if isinstance(v, dict): - ret[k] = extrahuj(node, v) + # neukladej nully do dictionary hodnot (JSON v pg) + mapping = {key: val for key, val in extrahuj(node, v).items() if val is not None} + ret[k] = mapping if len(mapping) > 0 else None else: ret[k] = getattr(node.find(v), "text", None) @@ -156,7 +163,7 @@ def zpracuj_ds(url, schemas, outdir, partial, autogen): row = extrahuj(udaj_raw, schema) row = uprav_data(row, schemasd[udaj_typ]) row = { - k: json.dumps(v) if isinstance(v, dict) else v + k: json.dumps(v, ensure_ascii=False) if isinstance(v, dict) else v for k, v in row.items() } row["ico"] = ico @@ -181,7 +188,7 @@ def zpracuj_ds(url, schemas, outdir, partial, autogen): row = extrahuj(podudaj_raw, schema) row = uprav_data(row, schemasd[podudaj_typ]) row = { - k: json.dumps(v) if isinstance(v, dict) else v + k: json.dumps(v, ensure_ascii=False) if isinstance(v, dict) else v for k, v in row.items() } row["ico"] = ico diff --git a/data/justice/schema.py b/data/justice/schema.py index b2617cdb..0a77e1da 100644 --- a/data/justice/schema.py +++ b/data/justice/schema.py @@ -1,5 +1,5 @@ from sqlalchemy import Column, ForeignKey, MetaData, Table -from sqlalchemy.sql.sqltypes import Boolean, Date, Integer, Numeric, Text +from sqlalchemy.sql.sqltypes import JSON, Boolean, Date, Integer, Numeric, Text meta = MetaData() @@ -257,23 +257,8 @@ Column("osoba_datum_narozeni", Date, nullable=True), Column("osoba_titul_pred", Text, nullable=True), Column("osoba_titul_za", Text, nullable=True), - Column("adresa_stat_nazev", Text, nullable=True), - Column("adresa_obec", Text, nullable=True), - Column("adresa_cast_obce", Text, nullable=True), - Column("adresa_ulice", Text, nullable=True), - Column("adresa_cislo_po", Text, nullable=True), - Column("adresa_cislo_or", Text, nullable=True), - Column("adresa_psc", Text, nullable=True), - Column("adresa_okres", Text, nullable=True), - Column("adresa_cislo_ev", Text, nullable=True), - Column("adresa_text", Text, nullable=True), - Column("bydliste_stat_nazev", Text, nullable=True), - Column("bydliste_obec", Text, nullable=True), - Column("bydliste_cast_obce", Text, nullable=True), - Column("bydliste_cislo_po", Text, nullable=True), - Column("bydliste_cislo_or", Text, nullable=True), - Column("bydliste_psc", Text, nullable=True), - Column("bydliste_ulice", Text, nullable=True), + Column("adresa", JSON, nullable=True), + Column("bydliste", JSON, nullable=True), ), Table( "insolvencni_zapis", @@ -319,29 +304,8 @@ Column("reg_cislo", Text, nullable=True), Column("ico_angos", Integer, nullable=True), Column("euid", Text, nullable=True), - Column("adresa_stat", Text, nullable=True), - Column("adresa_obec", Text, nullable=True), - Column("adresa_cast_obce", Text, nullable=True), - Column("adresa_ulice", Text, nullable=True), - Column("adresa_cislo_po", Text, nullable=True), - Column("adresa_psc", Text, nullable=True), - Column("adresa_okres", Text, nullable=True), - Column("adresa_cislo_or", Text, nullable=True), - Column("adresa_adresa_text", Text, nullable=True), - Column("adresa_cislo_ev", Text, nullable=True), - Column("adresa_doplnujici_text", Text, nullable=True), - Column("adresa_cislo_text", Text, nullable=True), - Column("bydliste_stat", Text, nullable=True), - Column("bydliste_ulice", Text, nullable=True), - Column("bydliste_obec", Text, nullable=True), - Column("bydliste_psc", Text, nullable=True), - Column("bydliste_cast_obce", Text, nullable=True), - Column("bydliste_cislo_po", Text, nullable=True), - Column("bydliste_cislo_or", Text, nullable=True), - Column("bydliste_okres", Text, nullable=True), - Column("bydliste_cislo_ev", Text, nullable=True), - Column("bydliste_cislo_text", Text, nullable=True), - Column("bydliste_doplnujici_text", Text, nullable=True), + Column("adresa", JSON, nullable=True), + Column("bydliste", JSON, nullable=True), ), Table( "zahajeni_zruseni", @@ -415,15 +379,7 @@ Column("osoba_jmeno", Text, nullable=True), Column("osoba_prijmeni", Text, nullable=True), Column("osoba_datum_narozeni", Date, nullable=True), - Column("adresa_stat_nazev", Text, nullable=False), - Column("adresa_obec", Text, nullable=True), - Column("adresa_ulice", Text, nullable=True), - Column("adresa_psc", Text, nullable=True), - Column("adresa_cast_obce", Text, nullable=True), - Column("adresa_cislo_po", Integer, nullable=True), - Column("adresa_cislo_or", Integer, nullable=True), - Column("adresa_okres", Text, nullable=True), - Column("adresa_adresa_text", Text, nullable=True), + Column("adresa", JSON, nullable=True), ), Table( "odstepny_zavod_vedouci", @@ -438,14 +394,7 @@ Column("osoba_datum_narozeni", Date, nullable=False), Column("osoba_titul_pred", Text, nullable=True), Column("osoba_titul_za", Text, nullable=True), - Column("adresa_stat_nazev", Text, nullable=False), - Column("adresa_ulice", Text, nullable=False), - Column("adresa_psc", Text, nullable=True), - Column("adresa_obec", Text, nullable=True), - Column("adresa_cast_obce", Text, nullable=True), - Column("adresa_cislo_po", Integer, nullable=True), - Column("adresa_cislo_or", Integer, nullable=True), - Column("adresa_okres", Text, nullable=True), + Column("adresa", JSON, nullable=True), ), Table( "nesrovnalost", diff --git a/data/justice/xml_schema.json b/data/justice/xml_schema.json index 3e0ba1aa..df5670ce 100644 --- a/data/justice/xml_schema.json +++ b/data/justice/xml_schema.json @@ -390,23 +390,27 @@ "osoba_datum_narozeni": "osoba/narozDatum", "osoba_titul_pred": "osoba/titulPred", "osoba_titul_za": "osoba/titulZa", - "adresa_stat_nazev": "adresa/statNazev", - "adresa_obec": "adresa/obec", - "adresa_cast_obce": "adresa/castObce", - "adresa_ulice": "adresa/ulice", - "adresa_cislo_po": "adresa/cisloPo", - "adresa_cislo_or": "adresa/cisloOr", - "adresa_psc": "adresa/psc", - "adresa_okres": "adresa/okres", - "adresa_cislo_ev": "adresa/cisloEv", - "adresa_text": "adresa/adresaText", - "bydliste_stat_nazev": "bydliste/statNazev", - "bydliste_obec": "bydliste/obec", - "bydliste_cast_obce": "bydliste/castObce", - "bydliste_cislo_po": "bydliste/cisloPo", - "bydliste_cislo_or": "bydliste/cisloOr", - "bydliste_psc": "bydliste/psc", - "bydliste_ulice": "bydliste/ulice" + "adresa": { + "stat_nazev": "adresa/statNazev", + "obec": "adresa/obec", + "cast_obce": "adresa/castObce", + "ulice": "adresa/ulice", + "cislo_po": "adresa/cisloPo", + "cislo_or": "adresa/cisloOr", + "psc": "adresa/psc", + "okres": "adresa/okres", + "cislo_ev": "adresa/cisloEv", + "text": "adresa/adresaText" + }, + "bydliste": { + "stat_nazev": "bydliste/statNazev", + "obec": "bydliste/obec", + "cast_obce": "bydliste/castObce", + "cislo_po": "bydliste/cisloPo", + "cislo_or": "bydliste/cisloOr", + "psc": "bydliste/psc", + "ulice": "bydliste/ulice" + } } }, { @@ -492,29 +496,33 @@ "reg_cislo": "osoba/regCislo", "ico_angos": "osoba/ico", "euid": "osoba/euid", - "adresa_stat": "adresa/statNazev", - "adresa_obec": "adresa/obec", - "adresa_cast_obce": "adresa/castObce", - "adresa_ulice": "adresa/ulice", - "adresa_cislo_po": "adresa/cisloPo", - "adresa_psc": "adresa/psc", - "adresa_okres": "adresa/okres", - "adresa_cislo_or": "adresa/cisloOr", - "adresa_adresa_text": "adresa/adresaText", - "adresa_cislo_ev": "adresa/cisloEv", - "adresa_doplnujici_text": "adresa/doplnujiciText", - "adresa_cislo_text": "adresa/cisloText", - "bydliste_stat": "bydliste/statNazev", - "bydliste_ulice": "bydliste/ulice", - "bydliste_obec": "bydliste/obec", - "bydliste_psc": "bydliste/psc", - "bydliste_cast_obce": "bydliste/castObce", - "bydliste_cislo_po": "bydliste/cisloPo", - "bydliste_cislo_or": "bydliste/cisloOr", - "bydliste_okres": "bydliste/okres", - "bydliste_cislo_ev": "bydliste/cisloEv", - "bydliste_cislo_text": "bydliste/cisloText", - "bydliste_doplnujici_text": "bydliste/doplnujiciText" + "adresa": { + "stat": "adresa/statNazev", + "obec": "adresa/obec", + "cast_obce": "adresa/castObce", + "ulice": "adresa/ulice", + "cislo_po": "adresa/cisloPo", + "psc": "adresa/psc", + "okres": "adresa/okres", + "cislo_or": "adresa/cisloOr", + "adresa_text": "adresa/adresaText", + "cislo_ev": "adresa/cisloEv", + "doplnujici_text": "adresa/doplnujiciText", + "cislo_text": "adresa/cisloText" + }, + "bydliste": { + "stat": "bydliste/statNazev", + "ulice": "bydliste/ulice", + "obec": "bydliste/obec", + "psc": "bydliste/psc", + "cast_obce": "bydliste/castObce", + "cislo_po": "bydliste/cisloPo", + "cislo_or": "bydliste/cisloOr", + "okres": "bydliste/okres", + "cislo_ev": "bydliste/cisloEv", + "cislo_text": "bydliste/cisloText", + "doplnujici_text": "bydliste/doplnujiciText" + } } }, { @@ -593,14 +601,16 @@ "osoba_datum_narozeni": "osoba/narozDatum", "osoba_titul_pred": "osoba/titulPred", "osoba_titul_za": "osoba/titulZa", - "adresa_stat_nazev": "adresa/statNazev", - "adresa_ulice": "adresa/ulice", - "adresa_psc": "adresa/psc", - "adresa_obec": "adresa/obec", - "adresa_cast_obce": "adresa/castObce", - "adresa_cislo_po": "adresa/cisloPo", - "adresa_cislo_or": "adresa/cisloOr", - "adresa_okres": "adresa/okres" + "adresa": { + "stat_nazev": "adresa/statNazev", + "ulice": "adresa/ulice", + "psc": "adresa/psc", + "obec": "adresa/obec", + "cast_obce": "adresa/castObce", + "cislo_po": "adresa/cisloPo", + "cislo_or": "adresa/cisloOr", + "okres": "adresa/okres" + } } }, { @@ -633,15 +643,17 @@ "osoba_jmeno": "osoba/jmeno", "osoba_prijmeni": "osoba/prijmeni", "osoba_datum_narozeni": "osoba/narozDatum", - "adresa_stat_nazev": "adresa/statNazev", - "adresa_obec": "adresa/obec", - "adresa_ulice": "adresa/ulice", - "adresa_psc": "adresa/psc", - "adresa_cast_obce": "adresa/castObce", - "adresa_cislo_po": "adresa/cisloPo", - "adresa_cislo_or": "adresa/cisloOr", - "adresa_okres": "adresa/okres", - "adresa_adresa_text": "adresa/adresaText" + "adresa": { + "stat_nazev": "adresa/statNazev", + "obec": "adresa/obec", + "ulice": "adresa/ulice", + "psc": "adresa/psc", + "cast_obce": "adresa/castObce", + "cislo_po": "adresa/cisloPo", + "cislo_or": "adresa/cisloOr", + "okres": "adresa/okres", + "adresa_text": "adresa/adresaText" + } } } ] \ No newline at end of file