From 3cf03b174b40e74c9ab67c45007d5ec3e538acad Mon Sep 17 00:00:00 2001 From: Ondrej Kokes Date: Wed, 20 Jul 2022 17:20:51 +0200 Subject: [PATCH] =?UTF-8?q?[justice]=20nov=C3=A9=20objekty=20(#203)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/justice/main.py | 36 +++++++--- data/justice/schema.py | 118 +++++++++++++++++++++++++++++++ data/justice/xml_schema.json | 133 ++++++++++++++++++++++++++++++++++- 3 files changed, 275 insertions(+), 12 deletions(-) diff --git a/data/justice/main.py b/data/justice/main.py index 4c417ab..05f9f94 100644 --- a/data/justice/main.py +++ b/data/justice/main.py @@ -74,7 +74,7 @@ def nahraj_ds(url): yield from et -def zpracuj_ds(url, schemas, outdir, partial): +def zpracuj_ds(url, schemas, outdir, partial, autogen): et = nahraj_ds(url) fs, csvs, schemasd = dict(), dict(), dict() @@ -147,7 +147,8 @@ def zpracuj_ds(url, schemas, outdir, partial): udaj_typ = udaj_raw.find("udajTyp/kod").text if udaj_typ not in schemasd: - # TODO(PR): queue na schema_autogen + # print("nenalezeno", udaj_typ, url) + autogen.put((udaj_typ, gen_schema(udaj_raw))) continue if not schemasd[udaj_typ].get("ignore", False): @@ -171,11 +172,8 @@ def zpracuj_ds(url, schemas, outdir, partial): podudaj_typ = podudaj_raw.find("udajTyp/kod").text if podudaj_typ not in schemasd: - # TODO(PR): queue na schema_autogen - # schema_autogen[podudaj_typ] = merge( - # gen_schema(podudaj_raw), - # schema_autogen.get(podudaj_typ, {}), - # ) + # print("nenalezeno", podudaj_typ, url) + autogen.put((podudaj_typ, gen_schema(podudaj_raw))) continue if not schemasd[podudaj_typ].get("ignore", False): @@ -252,8 +250,14 @@ def main(outdir: str, partial: bool = False): with open(os.path.join(cdir, "xml_schema.json"), encoding="utf-8") as f: schemas = json.load(f) + # samotna multiprocessing.queue z nejakyho duvodu nefungovala + autogen = multiprocessing.Manager().Queue() zpracuj = functools.partial( - zpracuj_ds, schemas=schemas, outdir=outdir, partial=partial + zpracuj_ds, + schemas=schemas, + outdir=outdir, + partial=partial, + autogen=autogen, ) progress = tqdm(total=len(urls)) # TODO: chcem fakt jet naplno? co kdyz budem parametrizovat jednotlivy moduly? @@ -267,9 +271,19 @@ def main(outdir: str, partial: bool = False): # logging.debug(url)? progress.update(n=1) - # TODO: resolve - # with open('xml_schema_chybejici.json', 'w') as fw: - # json.dump(schema_autogen, fw, indent=2, ensure_ascii=False) + # nezpracovany objekty je treba rucne projit + schema_autogen = dict() + while not autogen.empty(): + obj, schema = autogen.get() + schema_autogen[obj] = merge( + schema, + schema_autogen.get(obj, {}), + ) + if len(schema_autogen): + print(f"nalezeno {len(schema_autogen)} neznamych objektu ve zdrojovych datech") + print("exportuji xml_schema_chybejici.json") + with open("xml_schema_chybejici.json", "w") as fw: + json.dump(schema_autogen, fw, indent=2, ensure_ascii=False) if __name__ == "__main__": diff --git a/data/justice/schema.py b/data/justice/schema.py index d4ea2ce..df81328 100644 --- a/data/justice/schema.py +++ b/data/justice/schema.py @@ -343,6 +343,124 @@ Column("bydliste_cislo_text", Text, nullable=True), Column("bydliste_doplnujici_text", Text, nullable=True), ), + Table( + "zahajeni_zruseni", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("text", Text, nullable=False), + ), + Table( + "euid", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("euid", Text, nullable=False), + ), + Table( + "sicav", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("text", Text, nullable=False), + ), + Table( + "status_spolku", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("text", Text, nullable=False), + ), + Table( + "predmet_vedlejsi_cinnosti", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("text", Text, nullable=False), + ), + Table( + "omezeni_darcem", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("text", Text, nullable=False), + ), + Table( + "znepristupneni_udaju", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("znepristupneno", Boolean, nullable=False), + ), + Table( + "clen_sdruzeni_osoba", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("angazma_typ", Text, nullable=False), + Column("text_osoba", Text, nullable=True), + Column("text_zruseni", Text, nullable=True), + Column("osoba_nazev", Text, nullable=True), + Column("osoba_reg_cislo", Text, nullable=True), + Column("osoba_ico", Integer, nullable=True), + Column("osoba_euid", Text, nullable=True), + 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), + ), + Table( + "odstepny_zavod_vedouci", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + Column("spravce", Boolean, nullable=True), + Column("text", Text, nullable=True), + Column("osoba_jmeno", Text, nullable=False), + Column("osoba_prijmeni", Text, nullable=False), + 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=True), + 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), + ), + Table( + "nesrovnalost", + meta, + Column("ico", Integer, nullable=False), + Column("datum_zapis", Date, nullable=False), + Column("datum_vymaz", Date, nullable=True), + # TODO: tyhle dve jsou ve skutecnosti datum, ale spatne uvedeny + Column("zahajeni_rizeni", Text, nullable=True), + Column("ukonceni_rizeni", Text, nullable=True), + Column("zpusob_vyrizeni", Text, nullable=True), + Column("verejna", Boolean, nullable=True), + Column("text_prvni_faze", Text, nullable=False), + Column("text_druha_faze", Text, nullable=True), + ), ] diff --git a/data/justice/xml_schema.json b/data/justice/xml_schema.json index 0a9981f..3e0ba1a 100644 --- a/data/justice/xml_schema.json +++ b/data/justice/xml_schema.json @@ -93,7 +93,8 @@ "NASTUPCE_ZRIZOVATELE_SEKCE", "OPATROVNIK_SEKCE", "ROZHODCI_KOMISE", - "VKLAD_CLEN_DRUZSTVA_SEKCE" + "VKLAD_CLEN_DRUZSTVA_SEKCE", + "CLEN_SDRUZENI" ], "ignore": true, "schema": { @@ -121,6 +122,9 @@ "UCEL_SUBJEKTU_SEKCE", "DOPLNKOVA_CINNOST_SEKCE", "SKUTECNY_MAJITEL_SEKCE", + "NESROVNALOST_SEKCE", + "OMEZENI_DARCEM_SEKCE", + "PREDMET_VEDLEJSI_CINNOSTI_SEKCE", "INSOLVENCE" ], "ignore": true, @@ -512,5 +516,132 @@ "bydliste_cislo_text": "bydliste/cisloText", "bydliste_doplnujici_text": "bydliste/doplnujiciText" } + }, + { + "udaj": "ZAHAJENI_O_ZRUSENI", + "soubor": "zahajeni_zruseni", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "text": "hodnotaText" + } + }, + { + "udaj": "EUID", + "soubor": "euid", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "euid": "hodnotaText" + } + }, + { + "udaj": "SICAV", + "soubor": "sicav", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "text": "hodnotaText" + } + }, + { + "udaj": "STATUS_SPOLKU", + "soubor": "status_spolku", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "text": "hodnotaText" + } + }, + { + "udaj": "PREDMET_VEDLEJSI_CINNOSTI", + "soubor": "predmet_vedlejsi_cinnosti", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "text": "hodnotaText" + } + }, + { + "udaj": "OMEZENI_DARCEM", + "soubor": "omezeni_darcem", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "text": "hodnotaText" + } + }, + { + "udaj": "ZNEPRISTUPNENI_UDAJU", + "soubor": "znepristupneni_udaju", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "znepristupneno": "hodnotaText" + } + }, + { + "udaj": "OZ_VEDOUCI", + "soubor": "odstepny_zavod_vedouci", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "spravce": "hodnotaUdaje/spravce", + "text": "hodnotaUdaje/textZaOsobu/value", + "osoba_jmeno": "osoba/jmeno", + "osoba_prijmeni": "osoba/prijmeni", + "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" + } + }, + { + "udaj": "NESROVNALOST", + "soubor": "nesrovnalost", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "zahajeni_rizeni": "hodnotaUdaje/zahajeniRizeni", + "ukonceni_rizeni": "hodnotaUdaje/ukonceniRizeni", + "zpusob_vyrizeni": "hodnotaUdaje/zpusobVyrizeni", + "verejna": "hodnotaUdaje/verejna", + "text_prvni_faze": "hodnotaUdaje/textPrvniFaze", + "text_druha_faze": "hodnotaUdaje/textDruhaFaze" + } + }, + { + "udaj": "CLEN_SDRUZENI_OSOBA", + "soubor": "clen_sdruzeni_osoba", + "schema": { + "datum_zapis": "zapisDatum", + "datum_vymaz": "vymazDatum", + "angazma_typ": "hodnotaText", + "text_osoba": "hodnotaUdaje/textZaOsobu", + "text_zruseni": "hodnotaUdaje/textZruseni", + "osoba_nazev": "osoba/nazev", + "osoba_reg_cislo": "osoba/regCislo", + "osoba_ico": "osoba/ico", + "osoba_euid": "osoba/euid", + "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" + } } ] \ No newline at end of file