From 0befc4dd0185c1bafbc1b166d88d9d7b639562da Mon Sep 17 00:00:00 2001 From: Paul van Genuchten Date: Mon, 10 Feb 2025 13:33:37 +0100 Subject: [PATCH 1/2] dq is not in info fixes #923 --- pycsw/core/metadata.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/pycsw/core/metadata.py b/pycsw/core/metadata.py index 68e357519..6742313f6 100644 --- a/pycsw/core/metadata.py +++ b/pycsw/core/metadata.py @@ -1521,15 +1521,22 @@ def _parse_iso(context, repos, exml): _set(context, recobj, 'pycsw:ServiceType', ','.join(service_types)) - if hasattr(md_identification, 'dataquality'): - _set(context, recobj, 'pycsw:Degree', md.dataquality.conformancedegree) - _set(context, recobj, 'pycsw:Lineage', md.dataquality.lineage) - _set(context, recobj, 'pycsw:SpecificationTitle', md.dataquality.specificationtitle) - if hasattr(md.dataquality, 'specificationdate'): - _set(context, recobj, 'pycsw:specificationDate', - md.dataquality.specificationdate[0].date) - _set(context, recobj, 'pycsw:SpecificationDateType', - md.dataquality.specificationdate[0].datetype) + if hasattr(md, 'dataquality'): + try: + _set(context, recobj, 'pycsw:Degree', ','.join(md.dataquality.conformancedegree)) + except: + None + try: + _set(context, recobj, 'pycsw:Lineage', md.dataquality.lineage) + except: + None + try: + _set(context, recobj, 'pycsw:SpecificationTitle', md.dataquality.specificationtitle) + _set(context, recobj, 'pycsw:specificationDate', md.dataquality.specificationDate[0]) + # owslib does not provide datetype + # _set(context, recobj, 'pycsw:SpecificationDateType', md.dataquality.specificationDate[0].datetype) + except: + None if hasattr(md, 'contact') and len(md.contact) > 0: _set(context, recobj, 'pycsw:ResponsiblePartyRole', md.contact[0].role) From f124a8260b97ffe60197403d75bc76d5d3cc2385 Mon Sep 17 00:00:00 2001 From: Paul van Genuchten Date: Sat, 15 Mar 2025 16:39:33 +0100 Subject: [PATCH 2/2] add explicit debug messages if element is not available --- pycsw/core/metadata.py | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/pycsw/core/metadata.py b/pycsw/core/metadata.py index 6742313f6..c2b697059 100644 --- a/pycsw/core/metadata.py +++ b/pycsw/core/metadata.py @@ -1523,25 +1523,30 @@ def _parse_iso(context, repos, exml): if hasattr(md, 'dataquality'): try: - _set(context, recobj, 'pycsw:Degree', ','.join(md.dataquality.conformancedegree)) - except: - None - try: - _set(context, recobj, 'pycsw:Lineage', md.dataquality.lineage) - except: - None + if hasattr(md.dataquality, 'conformancedegree'): + _set(context, recobj, 'pycsw:Degree', ','.join(md.dataquality.conformancedegree)) + except Exception as err: + LOGGER.debug('No dq conformancedegree', err) + try: + if hasattr(md.dataquality, 'lineage'): + _set(context, recobj, 'pycsw:Lineage', md.dataquality.lineage) + except Exception as err: + LOGGER.debug('No dq lineage', err) try: - _set(context, recobj, 'pycsw:SpecificationTitle', md.dataquality.specificationtitle) - _set(context, recobj, 'pycsw:specificationDate', md.dataquality.specificationDate[0]) - # owslib does not provide datetype - # _set(context, recobj, 'pycsw:SpecificationDateType', md.dataquality.specificationDate[0].datetype) - except: - None + if hasattr(md.dataquality, 'specificationtitle'): + _set(context, recobj, 'pycsw:SpecificationTitle', md.dataquality.specificationtitle) + except Exception as err: + LOGGER.debug('No dq specification title', err) + try: + if hasattr(md.dataquality, 'specificationdate'): + _set(context, recobj, 'pycsw:SpecificationDate', + next(iter(md.dataquality.specificationdate), None)) + except Exception as err: + LOGGER.debug('No dq specification date', err) if hasattr(md, 'contact') and len(md.contact) > 0: _set(context, recobj, 'pycsw:ResponsiblePartyRole', md.contact[0].role) - if hasattr(md, 'contentinfo') and len(md.contentinfo) > 0: for ci in md.contentinfo: if isinstance(ci, MD_ImageDescription):