def convert_persoon_to_instance_dict(persoon): ingeschreven_persoon_dict = { "burgerservicenummer": persoon.burgerservicenummer_persoon, "geheimhoudingPersoonsgegevens": True, "naam": { "geslachtsnaam": persoon.geslachtsnaam_persoon, "voorletters": "string", "voornamen": persoon.voornamen_persoon, "voorvoegsel": persoon.voorvoegsel_geslachtsnaam_persoon, "inOnderzoek": { "geslachtsnaam": bool(persoon.geslachtsnaam_persoon), "voornamen": bool(persoon.voornamen_persoon), "voorvoegsel": bool(persoon.voorvoegsel_geslachtsnaam_persoon), "datumIngangOnderzoek": { "dag": int(persoon.datum_ingang_onderzoek[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( persoon.datum_ingang_onderzoek) else 0, "datum": persoon.datum_ingang_onderzoek, "jaar": int(persoon.datum_ingang_onderzoek[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( persoon.datum_ingang_onderzoek) else 0, "maand": int(persoon.datum_ingang_onderzoek[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( persoon.datum_ingang_onderzoek) else 0, }, }, "aanduidingNaamgebruik": persoon.aanduiding_naamgebruik, }, "geboorte": { "datum": { "dag": int(persoon.geboortedatum_persoon[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format(persoon.geboortedatum_persoon) else 0, "datum": persoon.geboortedatum_persoon, "jaar": int(persoon.geboortedatum_persoon[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format(persoon.geboortedatum_persoon) else 0, "maand": int(persoon.geboortedatum_persoon[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format(persoon.geboortedatum_persoon) else 0, }, "land": { "code": persoon.geboorteland_persoon, "omschrijving": CountryCodeAndOmschrijving.get_omschrijving_from_code( persoon.geboorteland_persoon), }, "plaats": { "code": persoon.geboorteplaats_persoon, "omschrijving": GemeenteCodeAndOmschrijving.get_omschrijving_from_code( persoon.geboorteplaats_persoon), }, "inOnderzoek": { "datum": True, "land": True, "plaats": True, "datumIngangOnderzoek": { "dag": 0, "datum": "string", "jaar": 0, "maand": 0, }, }, }, "geslachtsaanduiding": persoon.geslachtsaanduiding, "leeftijd": calculate_age(persoon.geboortedatum_persoon), "datumEersteInschrijvingGBA": { "dag": 0, "datum": "string", "jaar": 0, "maand": 0, }, "inOnderzoek": { "burgerservicenummer": bool(persoon.burgerservicenummer_persoon), "geslachtsaanduiding": bool(persoon.geslachtsaanduiding), "datumIngangOnderzoek": { "dag": 0, "datum": "string", "jaar": 0, "maand": 0, }, }, "opschortingBijhouding": { "reden": "overlijden", "datum": { "dag": 0, "datum": "string", "jaar": 0, "maand": 0 }, }, } ingeschreven_persoon_dict["kiesrecht"] = dict() kiesrecht = persoon.kiesrecht_set.first() if kiesrecht: ingeschreven_persoon_dict["kiesrecht"] = { "europeesKiesrecht": bool(kiesrecht.aanduiding_europees_kiesrecht), "uitgeslotenVanKiesrecht": bool(kiesrecht.aanduiding_uitgesloten_kiesrecht), "einddatumUitsluitingEuropeesKiesrecht": { "dag": int(kiesrecht.einddatum_uitsluiting_europees_kiesrecht[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( kiesrecht.einddatum_uitsluiting_europees_kiesrecht) else 0, "datum": kiesrecht.einddatum_uitsluiting_europees_kiesrecht, "jaar": int(kiesrecht.einddatum_uitsluiting_europees_kiesrecht[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( kiesrecht.einddatum_uitsluiting_europees_kiesrecht) else 0, "maand": int(kiesrecht.einddatum_uitsluiting_europees_kiesrecht[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( kiesrecht.einddatum_uitsluiting_europees_kiesrecht) else 0, }, "einddatumUitsluitingKiesrecht": { "dag": int(kiesrecht.einddatum_uitsluiting_kiesrecht[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( kiesrecht.einddatum_uitsluiting_kiesrecht) else 0, "datum": kiesrecht.einddatum_uitsluiting_kiesrecht, "jaar": int(kiesrecht.einddatum_uitsluiting_kiesrecht[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( kiesrecht.einddatum_uitsluiting_kiesrecht) else 0, "maand": int(kiesrecht.einddatum_uitsluiting_kiesrecht[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( kiesrecht.einddatum_uitsluiting_kiesrecht) else 0, }, } ingeschreven_persoon_dict["overlijden"] = dict() overlijden = persoon.overlijden_set.first() if overlijden: ingeschreven_persoon_dict["overlijden"] = { "indicatieOverleden": True, "datum": { "dag": int(overlijden. datum_overlijden[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format(overlijden.datum_overlijden) else 0, "datum": overlijden.datum_overlijden, "jaar": int(overlijden. datum_overlijden[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format(overlijden.datum_overlijden) else 0, "maand": int(overlijden. datum_overlijden[settings.OPENPERSONEN_MONTH_START:settings .OPENPERSONEN_MONTH_END]) if is_valid_date_format(overlijden.datum_overlijden) else 0, }, "land": { "code": overlijden.land_overlijden, "omschrijving": CountryCodeAndOmschrijving.get_omschrijving_from_code( overlijden.land_overlijden), }, "plaats": { "code": overlijden.plaats_overlijden, "omschrijving": GemeenteCodeAndOmschrijving.get_omschrijving_from_code( overlijden.plaats_overlijden), }, "inOnderzoek": { "datum": bool(overlijden.datum_overlijden), "land": bool(overlijden.land_overlijden), "plaats": bool(overlijden.plaats_overlijden), "datumIngangOnderzoek": { "dag": 0, "datum": "string", "jaar": 0, "maand": 0, }, }, } ingeschreven_persoon_dict["verblijfplaats"] = dict() verblijfplaats = persoon.verblijfplaats_set.first() if verblijfplaats: ingeschreven_persoon_dict["verblijfplaats"] = { "functieAdres": verblijfplaats.functie_adres, "huisletter": verblijfplaats.huisletter, "huisnummer": verblijfplaats.huisnummer, "huisnummertoevoeging": verblijfplaats.huisnummertoevoeging, "aanduidingBijHuisnummer": verblijfplaats.aanduiding_bij_huisnummer, "identificatiecodeNummeraanduiding": verblijfplaats.identificatiecode_nummeraanduiding, "naamOpenbareRuimte": verblijfplaats.naam_openbare_ruimte, "postcode": verblijfplaats.postcode, "woonplaatsnaam": verblijfplaats.woonplaatsnaam, "identificatiecodeAdresseerbaarObject": "string", "indicatieVestigingVanuitBuitenland": True, "locatiebeschrijving": verblijfplaats.locatiebeschrijving, "straatnaam": verblijfplaats.straatnaam, "vanuitVertrokkenOnbekendWaarheen": True, "datumAanvangAdreshouding": { "dag": int(verblijfplaats.datum_aanvang_adres_buitenland[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfplaats.datum_aanvang_adres_buitenland) else 0, "datum": verblijfplaats.datum_aanvang_adres_buitenland, "jaar": int(verblijfplaats.datum_aanvang_adres_buitenland[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfplaats.datum_aanvang_adres_buitenland) else 0, "maand": int(verblijfplaats.datum_aanvang_adres_buitenland[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfplaats.datum_aanvang_adres_buitenland) else 0, }, "datumIngangGeldigheid": { "dag": int(verblijfplaats.ingangsdatum_geldigheid_met_betrekking[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfplaats.ingangsdatum_geldigheid_met_betrekking) else 0, "datum": verblijfplaats.ingangsdatum_geldigheid_met_betrekking, "jaar": int(verblijfplaats.ingangsdatum_geldigheid_met_betrekking[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfplaats.ingangsdatum_geldigheid_met_betrekking) else 0, "maand": int(verblijfplaats.ingangsdatum_geldigheid_met_betrekking[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfplaats.ingangsdatum_geldigheid_met_betrekking) else 0, }, "datumInschrijvingInGemeente": { "dag": int(verblijfplaats.datum_inschrijving_in_de_gemeente[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfplaats.datum_inschrijving_in_de_gemeente) else 0, "datum": verblijfplaats.datum_inschrijving_in_de_gemeente, "jaar": int(verblijfplaats.datum_inschrijving_in_de_gemeente[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfplaats.datum_inschrijving_in_de_gemeente) else 0, "maand": int(verblijfplaats.datum_inschrijving_in_de_gemeente[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfplaats.datum_inschrijving_in_de_gemeente) else 0, }, "datumVestigingInNederland": { "dag": int(verblijfplaats.datum_vestiging_in_nederland[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfplaats.datum_vestiging_in_nederland) else 0, "datum": verblijfplaats.datum_vestiging_in_nederland, "jaar": int(verblijfplaats.datum_vestiging_in_nederland[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfplaats.datum_vestiging_in_nederland) else 0, "maand": int(verblijfplaats.datum_vestiging_in_nederland[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfplaats.datum_vestiging_in_nederland) else 0, }, "gemeenteVanInschrijving": { "code": "string", "omschrijving": verblijfplaats.gemeente_van_inschrijving, }, "landVanwaarIngeschreven": { "code": "string", "omschrijving": verblijfplaats.land_vanwaar_ingeschreven, }, "verblijfBuitenland": { "adresRegel1": verblijfplaats.regel_1_adres_buitenland, "adresRegel2": verblijfplaats.regel_2_adres_buitenland, "adresRegel3": verblijfplaats.regel_3_adres_buitenland, "vertrokkenOnbekendWaarheen": True, "land": { "code": "string", "omschrijving": "string" }, }, "inOnderzoek": { "aanduidingBijHuisnummer": bool(verblijfplaats.aanduiding_bij_huisnummer), "datumAanvangAdreshouding": bool(verblijfplaats.datum_aanvang_adreshouding), "datumIngangGeldigheid": True, "datumInschrijvingInGemeente": bool(verblijfplaats.datum_inschrijving_in_de_gemeente), "datumVestigingInNederland": bool(verblijfplaats.datum_vestiging_in_nederland), "functieAdres": True, "gemeenteVanInschrijving": bool(verblijfplaats.gemeente_van_inschrijving), "huisletter": bool(verblijfplaats.huisletter), "huisnummer": bool(verblijfplaats.huisnummer), "huisnummertoevoeging": bool(verblijfplaats.huisnummertoevoeging), "identificatiecodeNummeraanduiding": bool(verblijfplaats.identificatiecode_nummeraanduiding), "identificatiecodeAdresseerbaarObject": True, "landVanwaarIngeschreven": bool(verblijfplaats.land_vanwaar_ingeschreven), "locatiebeschrijving": bool(verblijfplaats.locatiebeschrijving), "naamOpenbareRuimte": bool(verblijfplaats.naam_openbare_ruimte), "postcode": bool(verblijfplaats.postcode), "straatnaam": bool(verblijfplaats.straatnaam), "verblijfBuitenland": True, "woonplaatsnaam": bool(verblijfplaats.woonplaatsnaam), "datumIngangOnderzoek": { "dag": int(verblijfplaats.datum_ingang_onderzoek[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfplaats.datum_ingang_onderzoek) else 0, "datum": verblijfplaats.datum_ingang_onderzoek, "jaar": int(verblijfplaats.datum_ingang_onderzoek[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfplaats.datum_ingang_onderzoek) else 0, "maand": int(verblijfplaats.datum_ingang_onderzoek[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfplaats.datum_ingang_onderzoek) else 0, }, }, } ingeschreven_persoon_dict["gezagsverhouding"] = dict() gezagsverhouding = persoon.gezagsverhouding_set.first() if gezagsverhouding: ingeschreven_persoon_dict["gezagsverhouding"] = { "indicatieCurateleRegister": gezagsverhouding.indicatie_curateleregister, "indicatieGezagMinderjarige": gezagsverhouding.indicatie_gezag_minderjarige, "inOnderzoek": { "indicatieCurateleRegister": bool(gezagsverhouding.indicatie_curateleregister), "indicatieGezagMinderjarige": bool(gezagsverhouding.indicatie_gezag_minderjarige), "datumIngangOnderzoek": { "dag": int(gezagsverhouding.datum_ingang_onderzoek[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( gezagsverhouding.datum_ingang_onderzoek) else 0, "datum": gezagsverhouding.datum_ingang_onderzoek, "jaar": int(gezagsverhouding.datum_ingang_onderzoek[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( gezagsverhouding.datum_ingang_onderzoek) else 0, "maand": int(gezagsverhouding.datum_ingang_onderzoek[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( gezagsverhouding.datum_ingang_onderzoek) else 0, }, }, } ingeschreven_persoon_dict["verblijfstitel"] = dict() verblijfstitel = persoon.verblijfstitel_set.first() if verblijfstitel: ingeschreven_persoon_dict["verblijfstitel"] = { "aanduiding": { "code": "string", "omschrijving": verblijfstitel.aanduiding_verblijfstitel, }, "datumEinde": { "dag": int(verblijfstitel.datum_einde_verblijfstitel[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfstitel.datum_einde_verblijfstitel) else 0, "datum": verblijfstitel.datum_einde_verblijfstitel, "jaar": int(verblijfstitel.datum_einde_verblijfstitel[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfstitel.datum_einde_verblijfstitel) else 0, "maand": int(verblijfstitel.datum_einde_verblijfstitel[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfstitel.datum_einde_verblijfstitel) else 0, }, "datumIngang": { "dag": int(verblijfstitel.ingangsdatum_verblijfstitel[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfstitel.ingangsdatum_verblijfstitel) else 0, "datum": verblijfstitel.ingangsdatum_verblijfstitel, "jaar": int(verblijfstitel.ingangsdatum_verblijfstitel[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfstitel.ingangsdatum_verblijfstitel) else 0, "maand": int(verblijfstitel.ingangsdatum_verblijfstitel[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfstitel.ingangsdatum_verblijfstitel) else 0, }, "inOnderzoek": { "aanduiding": bool(verblijfstitel.aanduiding_verblijfstitel), "datumEinde": bool(verblijfstitel.datum_einde_verblijfstitel), "datumIngang": bool(verblijfstitel.ingangsdatum_verblijfstitel), "datumIngangOnderzoek": { "dag": int(verblijfstitel.datum_ingang_onderzoek[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( verblijfstitel.datum_ingang_onderzoek) else 0, "datum": verblijfstitel.datum_ingang_onderzoek, "jaar": int(verblijfstitel.datum_ingang_onderzoek[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( verblijfstitel.datum_ingang_onderzoek) else 0, "maand": int(verblijfstitel.datum_ingang_onderzoek[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( verblijfstitel.datum_ingang_onderzoek) else 0, }, }, } ingeschreven_persoon_dict["nationaliteit"] = [] nationaliteiten = persoon.nationaliteit_set.all() for nationaliteit in nationaliteiten: ingeschreven_persoon_dict["nationaliteit"].append({ "aanduidingBijzonderNederlanderschap": nationaliteit.aanduiding_bijzonder_nederlanderschap, "datumIngangGeldigheid": { "dag": int(nationaliteit.datum_van_ingang_geldigheid_met_betrekking[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( nationaliteit.datum_van_ingang_geldigheid_met_betrekking) else 0, "datum": nationaliteit.datum_van_ingang_geldigheid_met_betrekking, "jaar": int(nationaliteit.datum_van_ingang_geldigheid_met_betrekking[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( nationaliteit.datum_van_ingang_geldigheid_met_betrekking) else 0, "maand": int(nationaliteit.datum_van_ingang_geldigheid_met_betrekking[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( nationaliteit.datum_van_ingang_geldigheid_met_betrekking) else 0, }, "nationaliteit": { "code": "string", "omschrijving": nationaliteit.nationaliteit, }, "redenOpname": { "code": nationaliteit.reden_opname_nationaliteit, "omschrijving": RedenCodeAndOmschrijving.get_omschrijving_from_code( nationaliteit.reden_opname_nationaliteit), }, "inOnderzoek": { "aanduidingBijzonderNederlanderschap": bool(nationaliteit.aanduiding_bijzonder_nederlanderschap), "nationaliteit": bool(nationaliteit.nationaliteit), "redenOpname": bool(nationaliteit.reden_opname_nationaliteit), "datumIngangOnderzoek": { "dag": int(nationaliteit.datum_ingang_onderzoek[ settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if is_valid_date_format( nationaliteit.datum_ingang_onderzoek) else 0, "datum": nationaliteit.datum_ingang_onderzoek, "jaar": int(nationaliteit.datum_ingang_onderzoek[ settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if is_valid_date_format( nationaliteit.datum_ingang_onderzoek) else 0, "maand": int(nationaliteit.datum_ingang_onderzoek[ settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if is_valid_date_format( nationaliteit.datum_ingang_onderzoek) else 0, }, }, }) ingeschreven_persoon_dict["reisdocumenten"] = [] for reisdocument in persoon.reisdocument_set.all(): ingeschreven_persoon_dict["reisdocumenten"].append( reisdocument.nummer_nederlands_reisdocument) ingeschreven_persoon_dict["kinderen"] = [] for kind in persoon.kind_set.all(): ingeschreven_persoon_dict["kinderen"].append( convert_kind_instance_to_dict(kind)) partners_title = None partners_last_name_prefix = None partners_last_name = None partners_date = None ingeschreven_persoon_dict["partners"] = [] for partner in persoon.partnerschap_set.all(): ingeschreven_persoon_dict["partners"].append( convert_partner_instance_to_dict(partner)) if (not partners_last_name or (partner.datum_ontbinding_huwelijk_geregistreerd_partnerschap and partners_date > partner.datum_huwelijkssluiting_aangaan_geregistreerd_partnerschap ) or (partner.datum_ontbinding_huwelijk_geregistreerd_partnerschap == "" and partners_date < partner.datum_huwelijkssluiting_aangaan_geregistreerd_partnerschap )): ( partners_title, partners_last_name_prefix, partners_last_name, partners_date, ) = _get_partner_info(partner) ingeschreven_persoon_dict["ouders"] = [] for ouder in persoon.ouder_set.all(): ingeschreven_persoon_dict["ouders"].append( convert_ouder_instance_to_dict(ouder)) ingeschreven_persoon_dict["naam"]["aanhef"] = get_aanhef( persoon.voorvoegsel_geslachtsnaam_persoon, persoon.geslachtsnaam_persoon, partners_last_name_prefix, partners_last_name, persoon.aanduiding_naamgebruik, persoon.geslachtsaanduiding, persoon.adellijke_titel_predikaat_persoon, partners_title, ) ingeschreven_persoon_dict["naam"]["aanschrijfwijze"] = get_aanschrijfwijze( persoon.voorvoegsel_geslachtsnaam_persoon, persoon.geslachtsnaam_persoon, persoon.voornamen_persoon, partners_last_name_prefix, partners_last_name, persoon.aanduiding_naamgebruik, persoon.geslachtsaanduiding, persoon.adellijke_titel_predikaat_persoon, partners_title, ) ingeschreven_persoon_dict["naam"][ "gebruikInLopendeTekst"] = get_gebruik_in_lopende_tekst( persoon.voorvoegsel_geslachtsnaam_persoon, persoon.geslachtsnaam_persoon, partners_last_name_prefix, partners_last_name, persoon.aanduiding_naamgebruik, persoon.geslachtsaanduiding, persoon.adellijke_titel_predikaat_persoon, partners_title, ) return ingeschreven_persoon_dict
def test_get_aanhef_with_adelijke_titel_of_predikaat(self): table_string = """ | geslachtsaanduiding | geslachtsaanduiding partner | adellijkeTitel_predikaat partner | aanduidingNaamgebruik | aanschrijfwijze | aanhef | | V | M | Baron | Eigen | A.C. van der Veen | Geachte mevrouw Van der Veen | | V | M | Baron | Partner na eigen | A.C. van der Veen-barones van den Aedel | Hoogwelgeboren vrouwe | | V | M | Baron | Partner | A.C. barones van den Aedel | Hoogwelgeboren vrouwe | | V | M | Baron | Partner voor eigen | A.C. barones van den Aedel-van der Veen | Hoogwelgeboren vrouwe | | M | V | Gravin | Eigen | W. van der Veen | Geachte heer Van der Veen | | M | V | Gravin | Partner na eigen | W. van der Veen-van den Aedel | Geachte heer Van der Veen-van den Aedel | | M | V | Gravin | Partner | W. van den Aedel | Geachte heer Van den Aedel | | M | V | Gravin | Partner voor eigen | W. van den Aedel-van der Veen | Geachte heer Van den Aedel-van der Veen | | M | M | Baron | Partner na eigen | W. van der Veen-van den Aedel | Geachte heer Van der Veen-van den Aedel | | V | V | Barones | Partner na eigen | W. van der Veen-van den Aedel | Geachte mevrouw Van der Veen-van den Aedel | | V | M | Ridder | Partner na eigen | W. van der Veen-van den Aedel | Geachte mevrouw Van der Veen-van den Aedel | | V | M | Ridder | Partner | W. van den Aedel | Geachte mevrouw Van den Aedel | | V | M | Jonkheer | Eigen | A.C. van der Veen | Geachte mevrouw Van der Veen | | V | M | Jonkheer | Partner na eigen | A.C. van der Veen-van den Aedel | Geachte mevrouw Van der Veen-van den Aedel | | V | M | Jonkheer | Partner | A.C. van den Aedel | Geachte mevrouw Van den Aedel | | V | M | Jonkheer | Partner voor eigen | A.C. van den Aedel-van der Veen | Geachte mevrouw Van den Aedel-van der Veen | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( gender_designation, geslachtsaanduiding_partner, adelijke_title_predikaat_partner, aanduiding_naamgebruik, aanschrijfwijze, aanhef, ) = row last_name = aanhef for title in [ "Hoogwelgeboren heer", "Hoogwelgeboren vrouwe", "Geachte mevrouw ", ]: last_name = last_name.replace(title, "") last_name_prefix = None partner_last_name_prefix = None partner_last_name = None if aanduiding_naamgebruik == "Eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] elif aanduiding_naamgebruik == "Partner na eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner": partner_last_name = aanschrijfwijze.split(" ", 1)[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner voor eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest( gender_designation=gender_designation, geslachtsaanduiding_partner=geslachtsaanduiding_partner, adelijke_title_predikaat_partner=adelijke_title_predikaat_partner, aanduiding_naamgebruik=aanduiding_naamgebruik, ): result = get_aanhef( last_name_prefix, last_name, partner_last_name_prefix, partner_last_name, aanduiding_naamgebruik_to_enumeration[aanduiding_naamgebruik], gender_designation, None, adelijke_title_predikaat_partner, ) self.assertEqual(aanhef, result)
def test_get_aanhef_with_predikaat(self): table_string = """ | adellijkeTitel_predikaat | aanduidingNaamgebruik | partner | Ontbinding huwelijk/geregistreerd partnerschap | aanhef | | Jonkheer | Eigen | Geen | Geen | Hoogwelgeboren heer | | Jonkheer | Eigen | Ja | Geen | Hoogwelgeboren heer | | Jonkheer | Partner na eigen | Ja | Geen | Hoogwelgeboren heer | | Jonkheer | Partner | Ja | Geen | Hoogwelgeboren heer | | Jonkheer | Partner voor eigen | Ja | Geen | Hoogwelgeboren heer | | Jonkvrouw | Eigen | Geen | Geen | Hoogwelgeboren vrouwe | | Jonkvrouw | Eigen | Ja | Geen | Geachte mevrouw Van Hoogh | | Jonkvrouw | Partner na eigen | Ja | Geen | Geachte mevrouw Van Hoogh-van der Veen | | Jonkvrouw | Partner | Ja | Geen | Geachte mevrouw Van der Veen-van Hoogh | | Jonkvrouw | Partner voor eigen | Ja | Geen | Geachte mevrouw Van der Veen | | Jonkvrouw | Eigen | Ja | Ja | Hoogwelgeboren vrouwe | | Jonkvrouw | Partner na eigen | Ja | Ja | Geachte mevrouw Van Hoogh-van der Veen | | Jonkvrouw | Partner | Ja | Ja | Geachte mevrouw Van der Veen-van Hoogh | | Jonkvrouw | Partner voor eigen | Ja | Ja | Geachte mevrouw Van der Veen | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( adellijke_titel_predikaat, aanduiding_naamgebruik, has_partner, is_dissolved, aanhef, ) = row last_name = aanhef for title in [ "Hoogwelgeboren heer", "Hoogwelgeboren vrouwe", "Geachte mevrouw ", ]: last_name = last_name.replace(title, "") gender_designation = None if "heer" in aanhef: gender_designation = "M" if "mevrouw" in aanhef: gender_designation = "V" last_name_prefix = None partner_last_name_prefix = None partner_last_name = None if last_name and aanduiding_naamgebruik == "Eigen": if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if has_partner == "Ja": partner_last_name = last_name elif last_name and aanduiding_naamgebruik == "Partner na eigen": last_name, partner_last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif last_name and aanduiding_naamgebruik == "Partner": partner_last_name = last_name last_name = None last_name_prefix = None elif last_name and aanduiding_naamgebruik == "Partner voor eigen": if len(last_name.split("-")) > 1: partner_last_name, last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if partner_last_name and len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] if not partner_last_name: partner_last_name = "" partner_last_name_prefix = "" with self.subTest( adellijke_titel_predikaat=adellijke_titel_predikaat, aanduiding_naamgebruik=aanduiding_naamgebruik, has_partner=has_partner, ): result = get_aanhef( last_name_prefix, last_name, partner_last_name_prefix, partner_last_name, aanduiding_naamgebruik_to_enumeration[aanduiding_naamgebruik], gender_designation, adellijke_titel_predikaat, None, ) self.assertEqual(aanhef, result)
def test_get_aanhef_with_title(self): table_string = """ | adellijkeTitel_predikaat | aanduidingNaamgebruik | aanschrijfwijze | aanhef | | Baron | Eigen | H.W. baron van den Aedel | Hoogwelgeboren heer | | Barones | Partner na eigen | W. barones van den Aedel-van der Veen | Hoogwelgeboren vrouwe | | Graaf | Partner | F. van der Veen | Geachte heer Van der Veen | | Gravin | Partner voor eigen | E.L. van der Veen-gravin van den Aedel | Hooggeboren vrouwe | | Prins | Eigen | O.B.B. prins van Roodt de Wit Blaauw | Hoogheid | | Prinses | Eigen | E.M.V. prinses van Roodt de Wit Blaauw | Hoogheid | | Ridder | Eigen | M. ridder van Hoogh | Hoogwelgeboren heer | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( adellijke_titel_predikaat, aanduiding_naamgebruik, aanschrijfwijze, aanhef, ) = row gender_designation = None if "heer" in aanhef: gender_designation = "M" if "vrouwe" in aanhef: gender_designation = "V" last_name_prefix = None last_name = None partner_last_name_prefix = None partner_last_name = None if aanduiding_naamgebruik == "Eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] elif aanduiding_naamgebruik == "Partner na eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner": partner_last_name = aanschrijfwijze.split(" ", 1)[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner voor eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest(adellijke_titel_predikaat=adellijke_titel_predikaat): result = get_aanhef( last_name_prefix, last_name, partner_last_name_prefix, partner_last_name, aanduiding_naamgebruik_to_enumeration[aanduiding_naamgebruik], gender_designation, adellijke_titel_predikaat, None, ) self.assertEqual(aanhef, result)
def test_aanhef_without_title(self): """ Testing examples given here: https://github.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/blob/v1.0.0/features/aanhef.feature """ table_string = """ | aanduidingNaamgebruik | geslachtsaanduiding |samenstelling aanhef | aanschrijfwijze | aanhef | | Eigen | Man | GA VV GN | H. in het Veld | Geachte heer In het Veld | | Eigen | Man | GA VV GN | F. Groenen | Geachte heer Groenen | | Partner na eigen | Vrouw | GA VV GN-VP GP | I. van Velzen-in het Veld | Geachte mevrouw Van Velzen-in het Veld | | Partner na eigen | Vrouw | GA VV GN-VP GP | F. Groenen-Groenink | Geachte mevrouw Groenen-Groenink | | Partner | Vrouw | GA VP GP | S. van Velzen | Geachte mevrouw Van Velzen | | Partner | Vrouw | GA VP GP | J.F.R. Groenen | Geachte mevrouw Groenen | | Partner voor eigen | Man | GA VP GP-VV GN | F. in het Veld-van Velzen | Geachte heer In het Veld-van Velzen | | Partner voor eigen | Man | GA VP GP-VV GN | F. Groenen-Groenink | Geachte heer Groenen-Groenink | """ # Convert table string to rows and remove empty rows, white spaces, and header row table_rows = [ [item.strip() for item in row.strip().split("|") if item] for row in table_string.split("\n") if row.strip() ][1:] for row in table_rows: ( aanduiding_naamgebruik, geslachtsaanduiding, _, aanschrijfwijze, aanhef, ) = row last_name_prefix = None last_name = None partner_last_name_prefix = None partner_last_name = None if aanduiding_naamgebruik == "Eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] elif aanduiding_naamgebruik == "Partner na eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] last_name, partner_last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner": partner_last_name = aanschrijfwijze.split(" ", 1)[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] elif aanduiding_naamgebruik == "Partner voor eigen": last_name = aanschrijfwijze.split(" ", 1)[-1] partner_last_name, last_name = last_name.split("-") if len(last_name.split(" ")) > 1: split_last_name = last_name.split(" ") last_name_prefix = " ".join(split_last_name[:-1]) last_name = split_last_name[-1] if len(partner_last_name.split(" ")) > 1: split_partner_last_name = partner_last_name.split(" ") partner_last_name_prefix = " ".join(split_partner_last_name[:-1]) partner_last_name = split_partner_last_name[-1] with self.subTest(aanhef=aanhef): result = get_aanhef( last_name_prefix, last_name, partner_last_name_prefix, partner_last_name, aanduiding_naamgebruik_to_enumeration[aanduiding_naamgebruik], geslachtsaanduiding_to_enumeration[geslachtsaanduiding], None, None, ) self.assertEqual(aanhef, result)
def get_persoon_instance_dict(instance_xml_dict): ingeschreven_persoon_dict = { "burgerservicenummer": instance_xml_dict.get("inp.bsn", "string"), "geheimhoudingPersoonsgegevens": instance_xml_dict.get("inp.indicatieGeheim", "string"), "naam": { "geslachtsnaam": instance_xml_dict.get("geslachtsnaam", "string"), "voorletters": instance_xml_dict.get("voorletters", "string"), "voornamen": instance_xml_dict.get("voornamen", "string"), "voorvoegsel": instance_xml_dict.get("voorvoegselGeslachtsnaam", "string"), "inOnderzoek": { "geslachtsnaam": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "voornamen": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "voorvoegsel": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, "aanduidingNaamgebruik": instance_xml_dict.get("aanduidingNaamgebruik", "string"), }, "geboorte": { "datum": { "dag": int( instance_xml_dict.get( "geboortedatum", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("geboortedatum") and not isinstance(instance_xml_dict["geboortedatum"], dict) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("geboortedatum")) if instance_xml_dict.get("geboortedatum") and not isinstance(instance_xml_dict["geboortedatum"], dict) else None, "jaar": int( instance_xml_dict.get( "geboortedatum", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("geboortedatum") and not isinstance(instance_xml_dict["geboortedatum"], dict) else None, "maand": int( instance_xml_dict.get( "geboortedatum", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("geboortedatum") and not isinstance(instance_xml_dict["geboortedatum"], dict) else None, }, "land": { "code": instance_xml_dict.get("inp.geboorteLand"), "omschrijving": CountryCodeAndOmschrijving.get_omschrijving_from_code( instance_xml_dict.get("inp.geboorteLand")) if instance_xml_dict.get("inp.geboorteLand") and not isinstance(instance_xml_dict.get("inp.geboorteLand"), dict) else None, }, "plaats": { "code": GemeenteCodeAndOmschrijving.get_code_from_omschrijving( instance_xml_dict.get("inp.geboorteplaats", 0)) if not isinstance(instance_xml_dict.get("inp.geboorteplaats"), dict) else 0, "omschrijving": instance_xml_dict.get("inp.geboorteplaats", "string"), }, "inOnderzoek": { "datum": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "land": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "plaats": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, }, "geslachtsaanduiding": instance_xml_dict.get("geslachtsaanduiding", "string"), "leeftijd": calculate_age(instance_xml_dict.get("geboortedatum", "string")), "datumEersteInschrijvingGBA": { "dag": int( instance_xml_dict.get("inp.datumInschrijving", "19000101") [settings.OPENPERSONEN_DAY_START:settings.OPENPERSONEN_DAY_END] ) if instance_xml_dict.get("inp.datumInschrijving") and not isinstance(instance_xml_dict["inp.datumInschrijving"], dict) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("inp.datumInschrijving")) if instance_xml_dict.get("inp.datumInschrijving") and not isinstance(instance_xml_dict["inp.datumInschrijving"], dict) else None, "jaar": int( instance_xml_dict.get( "inp.datumInschrijving", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("inp.datumInschrijving") and not isinstance(instance_xml_dict["inp.datumInschrijving"], dict) else None, "maand": int( instance_xml_dict.get( "inp.datumInschrijving", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("inp.datumInschrijving") and not isinstance( instance_xml_dict["inp.datumInschrijving"], dict) else None, }, "kiesrecht": { "europeesKiesrecht": instance_xml_dict.get("ing.aanduidingEuropeesKiesrecht") == "2", "uitgeslotenVanKiesrecht": instance_xml_dict.get("ing.aanduidingUitgeslotenKiesrecht") == "A", "einddatumUitsluitingEuropeesKiesrecht": { "dag": None, "datum": None, "jaar": None, "maand": None, }, "einddatumUitsluitingKiesrecht": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, "inOnderzoek": { "burgerservicenummer": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get("inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "geslachtsaanduiding": any([ "Persoonsgegevens" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get("inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, "nationaliteit": [{ "aanduidingBijzonderNederlanderschap": instance_xml_dict.get("inp.aanduidingBijzonderNederlanderschap", "string") if not isinstance( instance_xml_dict.get( "inp.aanduidingBijzonderNederlanderschap"), dict, ) else 1, "datumIngangGeldigheid": { "dag": int( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get( "inp.datumVerkrijging", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.datumVerkrijging") and not isinstance( instance_xml_dict.get("inp.heeftAlsNationaliteit", {})["inp.datumVerkrijging"], dict, ) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.datumVerkrijging")) if instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.datumVerkrijging") and not isinstance( instance_xml_dict.get("inp.heeftAlsNationaliteit", {})["inp.datumVerkrijging"], dict, ) else None, "jaar": int( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get( "inp.datumVerkrijging", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.datumVerkrijging") and not isinstance( instance_xml_dict.get("inp.heeftAlsNationaliteit", {})["inp.datumVerkrijging"], dict, ) else None, "maand": int( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get( "inp.datumVerkrijging", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.datumVerkrijging") and not isinstance( instance_xml_dict.get("inp.heeftAlsNationaliteit", {})["inp.datumVerkrijging"], dict, ) else None, }, "nationaliteit": { "code": instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("gerelateerde", {}).get("code"), "omschrijving": instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("gerelateerde", {}).get("omschrijving"), }, "redenOpname": { "code": instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get( "inp.redenVerkrijging", ".") if not isinstance( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.redenVerkrijging"), dict, ) else "string", "omschrijving": RedenCodeAndOmschrijving.get_omschrijving_from_code( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get( "inp.redenVerkrijging", 0)) if not isinstance( instance_xml_dict.get("inp.heeftAlsNationaliteit", {}).get("inp.redenVerkrijging"), dict, ) else 0, }, "inOnderzoek": { "aanduidingBijzonderNederlanderschap": any([ "aanduidingBijzonderNederlanderschap" == in_onderzoek.get( "elementnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "nationaliteit": any([ "Nationaliteit" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "redenOpname": False, "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, }], "opschortingBijhouding": { "reden": instance_xml_dict.get("inp.redenOpschortingBijhouding", "string"), "datum": { "dag": int( instance_xml_dict.get( "inp.datumOpschortingBijhouding", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("inp.datumOpschortingBijhouding") and not isinstance( instance_xml_dict.get("inp.datumOpschortingBijhouding"), dict) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("inp.datumOpschortingBijhouding")) if instance_xml_dict.get("inp.datumOpschortingBijhouding") and not isinstance( instance_xml_dict.get("inp.datumOpschortingBijhouding"), dict) else None, "jaar": int( instance_xml_dict.get( "inp.datumOpschortingBijhouding", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("inp.datumOpschortingBijhouding") and not isinstance( instance_xml_dict.get("inp.datumOpschortingBijhouding"), dict) else None, "maand": int( instance_xml_dict.get( "inp.datumOpschortingBijhouding", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("inp.datumOpschortingBijhouding") and not isinstance( instance_xml_dict.get("inp.datumOpschortingBijhouding"), dict) else None, }, }, "overlijden": { "indicatieOverleden": instance_xml_dict.get("inp.redenOpschortingBijhouding") == "O", "datum": { "dag": int( instance_xml_dict.get( "overlijdensdatum", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("overlijdensdatum") and not isinstance(instance_xml_dict["overlijdensdatum"], dict) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("overlijdensdatum")) if instance_xml_dict.get("overlijdensdatum") and not isinstance(instance_xml_dict["overlijdensdatum"], dict) else None, "jaar": int( instance_xml_dict.get( "overlijdensdatum", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("overlijdensdatum") and not isinstance(instance_xml_dict["overlijdensdatum"], dict) else None, "maand": int( instance_xml_dict.get( "overlijdensdatum", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("overlijdensdatum") and not isinstance(instance_xml_dict["overlijdensdatum"], dict) else None, }, "land": { "code": instance_xml_dict.get("inp.overlijdenLand") if not isinstance(instance_xml_dict.get("overlijdensdatum"), dict) else None, "omschrijving": CountryCodeAndOmschrijving.get_omschrijving_from_code( instance_xml_dict.get("inp.overlijdenLand")) if instance_xml_dict.get("inp.overlijdenLand") and not isinstance(instance_xml_dict.get("inp.overlijdenLand"), dict) else None, }, "plaats": { "code": GemeenteCodeAndOmschrijving.get_code_from_omschrijving( instance_xml_dict.get("inp.overlijdenplaats", 0)) if not isinstance(instance_xml_dict.get("inp.overlijdenplaats"), dict) else 0, "omschrijving": (instance_xml_dict.get("inp.overlijdenplaats", "string")), }, "inOnderzoek": { "datum": any([ "Overlijden" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "land": any([ "Overlijden" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "plaats": any([ "Overlijden" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, }, "verblijfplaats": { "functieAdres": "woonadres", "huisletter": instance_xml_dict.get("verblijfsadres", {}).get("aoa.huisletter", "string"), "huisnummer": instance_xml_dict.get("verblijfsadres", {}).get("aoa.huisnummer", "string"), "huisnummertoevoeging": instance_xml_dict.get("verblijfsadres", {}).get("aoa.huisnummertoevoeging", "string"), "aanduidingBijHuisnummer": None, "identificatiecodeNummeraanduiding": instance_xml_dict.get("verblijfsadres", {}).get("aoa.identificatie", "string"), "naamOpenbareRuimte": instance_xml_dict.get("verblijfsadres", {}).get("gor.openbareRuimteNaam", "string"), "postcode": instance_xml_dict.get("verblijfsadres", {}).get("aoa.postcode", "string"), "woonplaatsnaam": instance_xml_dict.get("verblijfsadres", {}).get("wpl.woonplaatsNaam", "string"), "identificatiecodeAdresseerbaarObject": instance_xml_dict.get("verblijfsadres", {}).get("wpl.identificatie", "string"), "indicatieVestigingVanuitBuitenland": True, "locatiebeschrijving": instance_xml_dict.get("verblijfsadres", {}).get("inp.locatiebeschrijving", "string"), "straatnaam": instance_xml_dict.get("verblijfsadres", {}).get("gor.straatnaam", "string"), "vanuitVertrokkenOnbekendWaarheen": True, "datumAanvangAdreshouding": { "dag": int( instance_xml_dict.get("verblijfsadres", {}).get( "begindatumVerblijf", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("verblijfsadres", {}).get("begindatumVerblijf") and not isinstance( instance_xml_dict.get("verblijfsadres", {})["begindatumVerblijf"], dict, ) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("verblijfsadres", {}).get("begindatumVerblijf")) if instance_xml_dict.get("verblijfsadres", {}).get("begindatumVerblijf") and not isinstance( instance_xml_dict.get("verblijfsadres", {})["begindatumVerblijf"], dict, ) else None, "jaar": int( instance_xml_dict.get("verblijfsadres", {}).get( "begindatumVerblijf", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("verblijfsadres", {}).get("begindatumVerblijf") and not isinstance( instance_xml_dict.get("verblijfsadres", {})["begindatumVerblijf"], dict, ) else None, "maand": int( instance_xml_dict.get("verblijfsadres", {}).get( "begindatumVerblijf", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("verblijfsadres", {}).get("begindatumVerblijf") and not isinstance( instance_xml_dict.get("verblijfsadres", {})["begindatumVerblijf"], dict, ) else None, }, "datumIngangGeldigheid": { "dag": int( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject", "19000101") [settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject") and not isinstance( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {})["ingangsdatumObject"], dict, ) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject")) if instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject") and not isinstance( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {})["ingangsdatumObject"], dict, ) else None, "jaar": int( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject", "19000101") [settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject") and not isinstance( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {})["ingangsdatumObject"], dict, ) else None, "maand": int( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject", "19000101") [settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {}).get("ingangsdatumObject") and not isinstance( instance_xml_dict.get("inp.verblijftIn", {}).get( "gerelateerde", {})["ingangsdatumObject"], dict, ) else None, }, "datumInschrijvingInGemeente": { "dag": None, "datum": None, "jaar": None, "maand": None, }, "datumVestigingInNederland": { "dag": None, "datum": None, "jaar": None, "maand": None, }, "gemeenteVanInschrijving": { "code": instance_xml_dict.get("inp.verblijftIn", {}).get("gerelateerde", {}).get("gemeenteCode"), "omschrijving": instance_xml_dict.get("inp.verblijftIn", {}).get("gerelateerde", {}).get("gemeenteNaam"), }, "landVanwaarIngeschreven": { "code": "", "omschrijving": "" }, "verblijfBuitenland": { "adresRegel1": instance_xml_dict.get("sub.verblijfBuitenland", {}).get("sub.adresBuitenland1"), "adresRegel2": instance_xml_dict.get("sub.verblijfBuitenland", {}).get("sub.adresBuitenland2"), "adresRegel3": instance_xml_dict.get("sub.verblijfBuitenland", {}).get("sub.adresBuitenland3"), "vertrokkenOnbekendWaarheen": True, "land": { "code": instance_xml_dict.get("sub.verblijfBuitenland", {}).get("lnd.landcode"), "omschrijving": CountryCodeAndOmschrijving.get_omschrijving_from_code( instance_xml_dict.get("sub.verblijfBuitenland", {}).get("lnd.landcode", 0)) if not isinstance( instance_xml_dict.get("sub.verblijfBuitenland", {}).get("lnd.landcode"), dict, ) else None, }, }, "inOnderzoek": { "aanduidingBijHuisnummer": False, "datumAanvangAdreshouding": False, "datumIngangGeldigheid": False, "datumInschrijvingInGemeente": False, "datumVestigingInNederland": False, "functieAdres": False, "gemeenteVanInschrijving": False, "huisletter": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "huisnummer": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "huisnummertoevoeging": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "identificatiecodeNummeraanduiding": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "identificatiecodeAdresseerbaarObject": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "landVanwaarIngeschreven": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "locatiebeschrijving": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "naamOpenbareRuimte": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "postcode": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "straatnaam": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "verblijfBuitenland": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "woonplaatsnaam": any([ "Verblijfplaats" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, }, "gezagsverhouding": { "indicatieCurateleRegister": instance_xml_dict.get("ing.indicatieCurateleRegister", False), "indicatieGezagMinderjarige": instance_xml_dict.get("ing.indicatieGezagMinderjarige", False), "inOnderzoek": { "indicatieCurateleRegister": any([ "Gezagsverhouding" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "indicatieGezagMinderjarige": any([ "Gezagsverhouding" == in_onderzoek.get("groepsnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, }, "verblijfstitel": { "aanduiding": { "code": instance_xml_dict.get("vbt.aanduidingVerblijfstitel"), "omschrijving": None, }, "datumEinde": { "dag": int( instance_xml_dict.get( "ing.datumVerliesVerblijfstitel", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("ing.datumVerliesVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerliesVerblijfstitel"], dict, ) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("ing.datumVerliesVerblijfstitel", "19000101")) if instance_xml_dict.get("ing.datumVerliesVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerliesVerblijfstitel"], dict, ) else None, "jaar": int( instance_xml_dict.get( "ing.datumVerliesVerblijfstitel", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("ing.datumVerliesVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerliesVerblijfstitel"], dict, ) else None, "maand": int( instance_xml_dict.get( "ing.datumVerliesVerblijfstitel", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("ing.datumVerliesVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerliesVerblijfstitel"], dict, ) else None, }, "datumIngang": { "dag": int( instance_xml_dict.get( "ing.datumVerkrijgingVerblijfstitel", "19000101")[settings.OPENPERSONEN_DAY_START:settings. OPENPERSONEN_DAY_END]) if instance_xml_dict.get("ing.datumVerkrijgingVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerkrijgingVerblijfstitel"], dict, ) else None, "datum": convert_datum_to_proper_date_format( instance_xml_dict.get("ing.datumVerkrijgingVerblijfstitel", "19000101")) if instance_xml_dict.get("ing.datumVerkrijgingVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerkrijgingVerblijfstitel"], dict, ) else None, "jaar": int( instance_xml_dict.get( "ing.datumVerkrijgingVerblijfstitel", "19000101")[settings.OPENPERSONEN_YEAR_START:settings. OPENPERSONEN_YEAR_END]) if instance_xml_dict.get("ing.datumVerkrijgingVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerkrijgingVerblijfstitel"], dict, ) else None, "maand": int( instance_xml_dict.get( "ing.datumVerkrijgingVerblijfstitel", "19000101")[settings.OPENPERSONEN_MONTH_START:settings. OPENPERSONEN_MONTH_END]) if instance_xml_dict.get("ing.datumVerkrijgingVerblijfstitel") and not isinstance( instance_xml_dict["ing.datumVerkrijgingVerblijfstitel"], dict, ) else None, }, "inOnderzoek": { "aanduiding": any([ "aanduidingVerblijfstitel" == in_onderzoek.get( "elementnaam") for in_onderzoek in instance_xml_dict.get( "inOnderzoek", []) if isinstance(in_onderzoek, dict) ]), "datumEinde": False, "datumIngang": False, "datumIngangOnderzoek": { "dag": None, "datum": None, "jaar": None, "maand": None, }, }, }, "reisdocumenten": [], } kinderen_info = instance_xml_dict["inp.heeftAlsKinderen"] ouders_info = instance_xml_dict["inp.heeftAlsOuders"] partners_info = instance_xml_dict["inp.heeftAlsEchtgenootPartner"] if not isinstance(kinderen_info, list): kinderen_info = [kinderen_info] if not isinstance(ouders_info, list): ouders_info = [ouders_info] if not isinstance(partners_info, list): partners_info = [partners_info] ingeschreven_persoon_dict["kinderen"] = [] ingeschreven_persoon_dict["ouders"] = [] ingeschreven_persoon_dict["partners"] = [] for kind_info in kinderen_info: if "gerelateerde" in kind_info: ingeschreven_persoon_dict["kinderen"].append( get_kind_instance_dict(kind_info["gerelateerde"])) for ouder_info in ouders_info: if "gerelateerde" in ouder_info: ingeschreven_persoon_dict["ouders"].append( get_ouder_instance_dict(ouder_info["gerelateerde"])) partners_title = None partners_last_name_prefix = None partners_last_name = None partners_date = None for partner_info in partners_info: if "gerelateerde" in partner_info: ingeschreven_persoon_dict["partners"].append( get_partner_instance_dict(partner_info["gerelateerde"])) if (not partners_last_name or (partner_info.get("datumOntbinding") and partners_date and partners_date > partner_info["datumSluiting"]) or (partner_info.get("datumOntbinding") is None and partners_date and partners_date < partner_info["datumSluiting"])): ( partners_title, partners_last_name_prefix, partners_last_name, partners_date, ) = _get_partner_info(partner_info) ingeschreven_persoon_dict["naam"]["aanhef"] = get_aanhef( instance_xml_dict.get("voorvoegselGeslachtsnaam"), instance_xml_dict.get("geslachtsnaam"), partners_last_name_prefix, partners_last_name, instance_xml_dict.get("aanduidingNaamgebruik"), instance_xml_dict.get("geslachtsaanduiding"), instance_xml_dict.get("adellijkeTitelPredikaat"), partners_title, ) ingeschreven_persoon_dict["naam"]["aanschrijfwijze"] = get_aanschrijfwijze( instance_xml_dict.get("voorvoegselGeslachtsnaam"), instance_xml_dict.get("geslachtsnaam"), instance_xml_dict.get("voornamen"), partners_last_name_prefix, partners_last_name, instance_xml_dict.get("aanduidingNaamgebruik"), instance_xml_dict.get("geslachtsaanduiding"), instance_xml_dict.get("adellijkeTitelPredikaat"), partners_title, ) ingeschreven_persoon_dict["naam"][ "gebruikInLopendeTekst"] = get_gebruik_in_lopende_tekst( instance_xml_dict.get("voorvoegselGeslachtsnaam"), instance_xml_dict.get("geslachtsnaam"), partners_last_name_prefix, partners_last_name, instance_xml_dict.get("aanduidingNaamgebruik"), instance_xml_dict.get("geslachtsaanduiding"), instance_xml_dict.get("adellijkeTitelPredikaat"), partners_title, ) convert_empty_instances(ingeschreven_persoon_dict) return ingeschreven_persoon_dict