From 7f8e107d92c2ad9d84420ec1c478d5e945ba2ab2 Mon Sep 17 00:00:00 2001 From: Marc Sommerhalder Date: Tue, 28 Apr 2026 08:51:16 +0200 Subject: [PATCH 1/2] Use boto3 TypeSerializer --- app/distributions/export_models.py | 20 ++---- app/tests/distributions/test_export_models.py | 61 +++++++++++++++++++ 2 files changed, 65 insertions(+), 16 deletions(-) create mode 100644 app/tests/distributions/test_export_models.py diff --git a/app/distributions/export_models.py b/app/distributions/export_models.py index e60ff99..c759717 100644 --- a/app/distributions/export_models.py +++ b/app/distributions/export_models.py @@ -1,5 +1,6 @@ from typing import Any +from boto3.dynamodb.types import TypeSerializer from pydantic import BaseModel @@ -12,22 +13,9 @@ def as_dynamodb_item(self) -> dict[str, Any]: Returns: dict[str, Any]: The dataset represented as a DynamoDB item. """ - - def serialize(value: Any) -> dict[str, Any]: - if value is None: - return {"NULL": True} - if isinstance(value, int): - return {"N": str(value)} - if isinstance(value, str): - return {"S": value} - if isinstance(value, list): - return {"L": [serialize(i) for i in value]} - if isinstance(value, dict): - return {"M": {k: serialize(v) for k, v in value.items()}} - raise ValueError(f"Unexpected type {type(value)}") - - item = self.model_dump(mode="json") - return {key: serialize(value) for key, value in item.items()} + serializer = TypeSerializer() + item = self.model_dump() + return {key: serializer.serialize(value) for key, value in item.items()} class ExportDataset(BaseModelWithDynamoDBSerialization): diff --git a/app/tests/distributions/test_export_models.py b/app/tests/distributions/test_export_models.py new file mode 100644 index 0000000..c17a997 --- /dev/null +++ b/app/tests/distributions/test_export_models.py @@ -0,0 +1,61 @@ +from decimal import Decimal + +from distributions.export_models import BaseModelWithDynamoDBSerialization + + +def test_base_model_with_dynamo_db_serialization(): + + class MyModel(BaseModelWithDynamoDBSerialization): + string: str + number_int: Decimal + number_float: Decimal + list: list + map: dict + null: None + bool_true: bool + bool_false: bool + + model = MyModel( + string="value", + number_int=Decimal(10), + number_float=Decimal("10.1"), + list=["value"], + map={"key": "value"}, + null=None, + bool_true=True, + bool_false=False, + ) + item = model.as_dynamodb_item() + + assert item == { + "string": { + "S": "value" + }, + "number_int": { + "N": "10" + }, + "number_float": { + "N": "10.1" + }, + "list": { + "L": [{ + "S": "value" + }] + }, + "map": { + "M": { + "key": { + "S": "value" + } + } + }, + "null": { + "NULL": True + }, + "bool_true": { + "BOOL": True + }, + "bool_false": { + "BOOL": False + }, + } From f2f2a7ab6cee7bdef5ab7af29a6a133105a90882 Mon Sep 17 00:00:00 2001 From: Marc Sommerhalder Date: Thu, 26 Mar 2026 15:50:44 +0100 Subject: [PATCH 2/2] GPS-589: Switch geocat harvester to eCH-0271 --- .../management/commands/geocat_harvest.py | 168 ++++++++++++------ app/tests/distributions/data/geocat_entry.zip | Bin 44794 -> 32563 bytes .../test_geocat_harvest_command.py | 35 ++-- 3 files changed, 128 insertions(+), 75 deletions(-) diff --git a/app/distributions/management/commands/geocat_harvest.py b/app/distributions/management/commands/geocat_harvest.py index 64ada76..9dcd0c5 100644 --- a/app/distributions/management/commands/geocat_harvest.py +++ b/app/distributions/management/commands/geocat_harvest.py @@ -27,11 +27,39 @@ GEOCAT_URL = "https://www.geocat.ch/geonetwork/srv/api/records/{}/formatters/xml?approved=true" NS = { - "che": "http://www.geocat.ch/2008/che", - "gco": "http://www.isotc211.org/2005/gco", - "gmd": "http://www.isotc211.org/2005/gmd", - "gmx": "http://www.isotc211.org/2005/gmx", + "cat": "http://standards.iso.org/iso/19115/-3/cat/1.0", + "che": "http://geocat.ch/che", + "cit": "http://standards.iso.org/iso/19115/-3/cit/2.0", + "dqm": "http://standards.iso.org/iso/19157/-2/dqm/1.0", + "gco": "http://standards.iso.org/iso/19115/-3/gco/1.0", + "gcx": "http://standards.iso.org/iso/19115/-3/gcx/1.0", + "gex": "http://standards.iso.org/iso/19115/-3/gex/1.0", + "gfc": "http://standards.iso.org/iso/19110/gfc/1.1", + "gml": "http://www.opengis.net/gml/3.2", + "lan": "http://standards.iso.org/iso/19115/-3/lan/1.0", + "mac": "http://standards.iso.org/iso/19115/-3/mac/2.0", + "mas": "http://standards.iso.org/iso/19115/-3/mas/1.0", + "mcc": "http://standards.iso.org/iso/19115/-3/mcc/1.0", + "mco": "http://standards.iso.org/iso/19115/-3/mco/1.0", + "md1": "http://standards.iso.org/iso/19115/-3/md1/2.0", + "md2": "http://standards.iso.org/iso/19115/-3/md2/2.0", + "mda": "http://standards.iso.org/iso/19115/-3/mda/2.0", + "mdb": "http://standards.iso.org/iso/19115/-3/mdb/2.0", + "mdq": "http://standards.iso.org/iso/19157/-2/mdq/1.0", + "mds": "http://standards.iso.org/iso/19115/-3/mds/2.0", + "mdt": "http://standards.iso.org/iso/19115/-3/mdt/2.0", + "mex": "http://standards.iso.org/iso/19115/-3/mex/1.0", + "mmi": "http://standards.iso.org/iso/19115/-3/mmi/1.0", + "mpc": "http://standards.iso.org/iso/19115/-3/mpc/1.0", + "mrc": "http://standards.iso.org/iso/19115/-3/mrc/2.0", + "mrd": "http://standards.iso.org/iso/19115/-3/mrd/1.0", + "mri": "http://standards.iso.org/iso/19115/-3/mri/1.0", + "mrl": "http://standards.iso.org/iso/19115/-3/mrl/2.0", + "mrs": "http://standards.iso.org/iso/19115/-3/mrs/1.0", + "msr": "http://standards.iso.org/iso/19115/-3/msr/2.0", + "srv": "http://standards.iso.org/iso/19115/-3/srv/2.0", "xlink": "http://www.w3.org/1999/xlink", + "xsi": "http://www.w3.org/2001/XMLSchema-instance", } TIMEOUT = 30 @@ -253,31 +281,54 @@ def harvest_keywords( # pylint: disable=too-many-positional-arguments,too-many- self.print(f"Getting keywords for dataset {dataset_id} from geocat") keywords = [] - for block in root.findall(".//gmd:MD_Keywords", NS): + for block in root.findall(".//mri:MD_Keywords", NS): keyword_type = None - if (element := block.find(".//gmd:MD_KeywordTypeCode", NS)) is not None: + if (element := block.find(".//mri:MD_KeywordTypeCode", NS)) is not None: keyword_type = element.get("codeListValue") + # Note: eCH defines the thesaurus id as mcc:code only very vaguely as "Zeichenfolge". + # In reality this is typically encapsulated in an gcx:Anchor. But other examples + # (outside of thesauri) of mcc:code encapsulate this in a gco:CharacterString. thesaurus_id = None thesaurus_url = None - if (element := block.find(".//gmd:thesaurusName//gmx:Anchor", NS)) is not None: + if ( + element := + block.find(".//mri:thesaurusName//cit:identifier//mcc:code//gcx:Anchor", NS) + ) is not None: thesaurus_id = element.text thesaurus_url = next( (element.get(key) for key in element.keys() if "href" in str(key)), None, ) + elif ( + element := block.find( + ".//mri:thesaurusName//cit:identifier//mcc:code//gco:CharacterString", NS + ) + ) is not None: + thesaurus_id = element.text + elif ( + element := block.find(".//mri:thesaurusName//cit:identifier//mcc:code", NS) + ) is not None: + thesaurus_id = element.text + + if thesaurus_id: + thesaurus_id = thesaurus_id.strip() - thesaurus_date = None - if (element := block.find(".//gmd:thesaurusName//gco:Date", NS)) is not None: - thesaurus_date = element.text + # Note: eCH defines different types of dates (publication, update etc.), we only care + # about the last of these + thesaurus_dates = sorted({ + str(element.text) + for element in block.findall(".//mri:thesaurusName//gco:Date", NS) + }) + thesaurus_date = thesaurus_dates[-1] if thesaurus_dates else None - for element in block.findall("gmd:keyword", NS): + for element in block.findall("mri:keyword", NS): if (text := element.find("gco:CharacterString", NS)) is None or not text.text: continue translations = { translation.get("locale", "").lstrip("#").lower(): translation.text - for translation in element.findall(".//gmd:LocalisedCharacterString", NS) + for translation in element.findall(".//lan:LocalisedCharacterString", NS) if translation.text } @@ -326,78 +377,77 @@ def find_code(element: etree._Element, path: str) -> str | None: return None contacts: list[Contact] = [] - for block in root.findall(".//gmd:pointOfContact", NS): + for block in root.findall(".//mri:pointOfContact", NS): - name = find(block, './/gmd:organisationName/gco:CharacterString') + name = find(block, './/che:CHE_CI_Organisation/cit:name/gco:CharacterString') if not name: continue - role = find_code(block, ".//gmd:CI_RoleCode") + role = find_code(block, ".//cit:CI_RoleCode") online_resources = [ OnlineResource( - url=find(resource, ".//gmd:linkage/gmd:URL"), - url_de=find(resource, './/che:LocalisedURL[@locale="#DE"]'), - url_fr=find(resource, './/che:LocalisedURL[@locale="#FR"]'), - url_en=find(resource, './/che:LocalisedURL[@locale="#EN"]'), - url_it=find(resource, './/che:LocalisedURL[@locale="#IT"]'), - url_rm=find(resource, './/che:LocalisedURL[@locale="#RM"]'), - protocol=find(resource, ".//gmd:protocol/*"), - name_de=find(resource, './/gmd:name//*[@locale="#DE"]'), - name_fr=find(resource, './/gmd:name//*[@locale="#FR"]'), - name_en=find(resource, './/gmd:name//*[@locale="#EN"]'), - name_it=find(resource, './/gmd:name//*[@locale="#IT"]'), - name_rm=find(resource, './/gmd:name//*[@locale="#RM"]'), - description_de=find(resource, './/gmd:description//*[@locale="#DE"]'), - description_fr=find(resource, './/gmd:description//*[@locale="#FR"]'), - description_en=find(resource, './/gmd:description//*[@locale="#EN"]'), - description_it=find(resource, './/gmd:description//*[@locale="#IT"]'), - description_rm=find(resource, './/gmd:description//*[@locale="#RM"]'), - function=find_code(resource, ".//gmd:function/*"), - ) for resource in block.findall(".//gmd:CI_OnlineResource", NS) + url=find(resource, ".//cit:linkage/gco:CharacterString"), + url_de=find(resource, './/cit:linkage//*[@locale="#DE"]'), + url_fr=find(resource, './/cit:linkage//*[@locale="#FR"]'), + url_en=find(resource, './/cit:linkage//*[@locale="#EN"]'), + url_it=find(resource, './/cit:linkage//*[@locale="#IT"]'), + url_rm=find(resource, './/cit:linkage//*[@locale="#RM"]'), + protocol=find(resource, ".//cit:protocol/*"), + name_de=find(resource, './/cit:name//*[@locale="#DE"]'), + name_fr=find(resource, './/cit:name//*[@locale="#FR"]'), + name_en=find(resource, './/cit:name//*[@locale="#EN"]'), + name_it=find(resource, './/cit:name//*[@locale="#IT"]'), + name_rm=find(resource, './/cit:name//*[@locale="#RM"]'), + description_de=find(resource, './/cit:description//*[@locale="#DE"]'), + description_fr=find(resource, './/cit:description//*[@locale="#FR"]'), + description_en=find(resource, './/cit:description//*[@locale="#EN"]'), + description_it=find(resource, './/cit:description//*[@locale="#IT"]'), + description_rm=find(resource, './/cit:description//*[@locale="#RM"]'), + function=find_code(resource, ".//cit:function/*"), + ) for resource in block.findall(".//cit:CI_OnlineResource", NS) ] online_resources.sort(key=lambda r: r.url or "") - parts = ( - find(block, ".//che:streetName/*"), - find(block, ".//che:streetNumber/*"), - find(block, ".//che:postBox/*") - ) - delivery_point = " ".join(part for part in parts if part) or None + phone_numbers = { + find(resource, ".//cit:CI_TelephoneTypeCode"): + find(resource, ".//cit:number/gco:CharacterString") + for resource in block.findall(".//cit:CI_Telephone", NS) + } emails = [ - email for element in block.findall(".//gmd:electronicMailAddress//*", NS) + email for element in block.findall(".//cit:electronicMailAddress//*", NS) if (email := getattr(element, "text", None)) ] contact = Contact( role=role, org_name=name, - org_name_de=find(block, './/gmd:organisationName//*[@locale="#DE"]'), - org_name_fr=find(block, './/gmd:organisationName//*[@locale="#FR"]'), - org_name_en=find(block, './/gmd:organisationName//*[@locale="#EN"]'), - org_name_it=find(block, './/gmd:organisationName//*[@locale="#IT"]'), - org_name_rm=find(block, './/gmd:organisationName//*[@locale="#RM"]'), + org_name_de=find(block, './/che:CHE_CI_Organisation/cit:name//*[@locale="#DE"]'), + org_name_fr=find(block, './/che:CHE_CI_Organisation/cit:name//*[@locale="#FR"]'), + org_name_en=find(block, './/che:CHE_CI_Organisation/cit:name//*[@locale="#EN"]'), + org_name_it=find(block, './/che:CHE_CI_Organisation/cit:name//*[@locale="#IT"]'), + org_name_rm=find(block, './/che:CHE_CI_Organisation/cit:name//*[@locale="#RM"]'), org_acronym=find(block, './/che:organisationAcronym/gco:CharacterString'), org_acronym_de=find(block, './/che:organisationAcronym//*[@locale="#DE"]'), org_acronym_fr=find(block, './/che:organisationAcronym//*[@locale="#FR"]'), org_acronym_en=find(block, './/che:organisationAcronym//*[@locale="#EN"]'), org_acronym_it=find(block, './/che:organisationAcronym//*[@locale="#IT"]'), org_acronym_rm=find(block, './/che:organisationAcronym//*[@locale="#RM"]'), - position_name_de=find(block, './/gmd:positionName//*[@locale="#DE"]'), - position_name_fr=find(block, './/gmd:positionName//*[@locale="#FR"]'), - position_name_en=find(block, './/gmd:positionName//*[@locale="#EN"]'), - position_name_it=find(block, './/gmd:positionName//*[@locale="#IT"]'), - position_name_rm=find(block, './/gmd:positionName//*[@locale="#RM"]'), - contact_voice=find(block, ".//gmd:voice/*"), - contact_facsimile=find(block, ".//gmd:facsimile/*"), - contact_sms=None, - contact_city=find(block, ".//gmd:city/*"), - contact_administrative_area=find(block, ".//gmd:administrativeArea/*"), - contact_postal_code=find(block, ".//gmd:postalCode/*"), - contact_country=find(block, ".//gmd:country/*"), + position_name_de=find(block, './/cit:CI_Individual//*[@locale="#DE"]'), + position_name_fr=find(block, './/cit:CI_Individual//*[@locale="#FR"]'), + position_name_en=find(block, './/cit:CI_Individual//*[@locale="#EN"]'), + position_name_it=find(block, './/cit:CI_Individual//*[@locale="#IT"]'), + position_name_rm=find(block, './/cit:CI_Individual//*[@locale="#RM"]'), + contact_voice=phone_numbers.get('voice'), + contact_facsimile=phone_numbers.get('facsimile'), + contact_sms=phone_numbers.get('sms'), + contact_city=find(block, ".//cit:city/*"), + contact_administrative_area=find(block, ".//cit:administrativeArea/*"), + contact_postal_code=find(block, ".//cit:postalCode/*"), + contact_country=find(block, ".//cit:country/*"), contact_electronic_mail_addresses=emails, - contact_delivery_point=delivery_point, + contact_delivery_point=find(block, ".//cit:deliveryPoint/*"), online_resources=online_resources ) diff --git a/app/tests/distributions/data/geocat_entry.zip b/app/tests/distributions/data/geocat_entry.zip index 52d67440940db52445aeadcf351b4390027b2bfc..66aff3d4a8808970b61ef1a70d988c7bf37f8729 100644 GIT binary patch literal 32563 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 diff --git a/app/tests/distributions/test_geocat_harvest_command.py b/app/tests/distributions/test_geocat_harvest_command.py index 606c2ef..7f1112b 100644 --- a/app/tests/distributions/test_geocat_harvest_command.py +++ b/app/tests/distributions/test_geocat_harvest_command.py @@ -32,7 +32,10 @@ def not_found_response(): @patch('distributions.management.commands.geocat_harvest.Session') def test_command_harvests(dynamo_session_mock, requests_get_mock, db): requests_get_mock.side_effect = [ - xml_response("geocat_entry"), xml_response("geocat_thesaurus"), not_found_response() + xml_response("geocat_entry"), + xml_response("geocat_thesaurus"), + not_found_response(), + not_found_response() ] BodDataset.objects.create( @@ -44,7 +47,6 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): # Note: These are the actual data in geocat at the time of writing this test, not parsing # errors ;) - assert dynamo_session_mock.mock_calls == [ call(), call().client('dynamodb', region_name='eu-central-1'), @@ -69,11 +71,11 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): }, 'thesaurus_url': { 'S': - 'https://geocat-int.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' + 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' }, 'thesaurus_date': { - 'S': '2024-06-13' + 'S': '2026-03-13' }, 'concept': { @@ -112,7 +114,7 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): }, 'thesaurus_url': { 'S': - 'https://geocat-int.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' + 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' }, 'thesaurus_date': { 'S': '2024-06-13' @@ -148,10 +150,10 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): }, 'thesaurus_url': { 'S': - 'https://geocat-int.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' + 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' }, 'thesaurus_date': { - 'S': '2024-06-13' + 'S': '2026-03-13' }, 'concept': { 'S': @@ -186,10 +188,10 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): }, 'thesaurus_url': { 'S': - 'https://geocat-int.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' + 'https://geocat-dev.dev.bgdi.ch/geonetwork/srv/api/registries/vocabularies/local.theme.geocat.ch' }, 'thesaurus_date': { - 'S': '2024-06-13' + 'S': '2026-03-13' }, 'concept': { 'S': @@ -315,7 +317,7 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): 'L': [{ 'M': { 'url': { - 'NULL': True + 'S': 'https://www.bafu.admin.ch/bafu/de/home.html' }, 'url_de': { 'S': 'https://www.bafu.admin.ch/bafu/de/home.html' @@ -438,7 +440,7 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): 'S': '+41 58 462 93 89' }, 'contact_facsimile': { - 'S': '+41 58 463 89 74' + 'NULL': True }, 'contact_sms': { 'NULL': True @@ -467,23 +469,24 @@ def test_command_harvests(dynamo_session_mock, requests_get_mock, db): 'L': [{ 'M': { 'url': { - 'NULL': True + 'S': + 'https://www.bafu.admin.ch/bafu/de/home/amt/geschaeftsleitung-des-bafu/direktionsbereich-biologische-vielfalt/abteilung-biodiversitaet-und-landschaft.html' }, 'url_de': { 'S': - 'https://www.bafu.admin.ch/bafu/de/home/amt/abteilungen-sektionen/abteilung-biodiversitaet-und-landschaft.html' + 'https://www.bafu.admin.ch/bafu/de/home/amt/geschaeftsleitung-des-bafu/direktionsbereich-biologische-vielfalt/abteilung-biodiversitaet-und-landschaft.html' }, 'url_fr': { 'S': - 'https://www.bafu.admin.ch/bafu/fr/home/office/divisions-sections/division-biodiversite-et-paysage.html' + 'https://www.bafu.admin.ch/bafu/fr/home/office/direction/domaine-de-direction-biodiversite/division-biodiversite-et-paysage.html' }, 'url_en': { 'S': - 'https://www.bafu.admin.ch/bafu/en/home/office/divisions-sections/biodiversity-and-landscape-division.html' + 'https://www.bafu.admin.ch/bafu/en/home/office/management-board/sector-biological-diversity/biodiversity-and-landscape-division.html' }, 'url_it': { 'S': - 'https://www.bafu.admin.ch/bafu/it/home/ufficio/divisioni-sezioni/divisione-biodiversita-e-paesaggio.html' + 'https://www.bafu.admin.ch/bafu/it/home/ufficio/direzione/unita-direzione-biodiversita/divisione-biodiversita-e-paesaggio.html' }, 'url_rm': { 'NULL': True