From dd22ff813a284e2d2530a161b1c19e056cc5e0ba Mon Sep 17 00:00:00 2001 From: Sina Sheikholeslami Date: Wed, 4 Feb 2026 16:57:46 +0100 Subject: [PATCH 1/3] Fix AttributeError when author name is None in API response The OpenAIRE API can return {"name": None} for authors. Using .get("name", "") only provides a default when the key is missing, not when the value is None. Changed to use `or ""` to handle both cases. Co-Authored-By: Claude Opus 4.5 --- src/research_index_backend/parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/research_index_backend/parser.py b/src/research_index_backend/parser.py index e46c9e5..3f9ae71 100644 --- a/src/research_index_backend/parser.py +++ b/src/research_index_backend/parser.py @@ -21,8 +21,8 @@ def parse_author(metadata: Dict) -> AnonymousAuthor | None: if pid and pid["id"]["scheme"] in ["orcid", "orcid_pending"]: orcid = pid["id"]["value"] - first_name = metadata.get("name", "").title() - last_name = metadata.get("surname", "").title() + first_name = (metadata.get("name") or "").title() + last_name = (metadata.get("surname") or "").title() if first_name in last_name: last_name = last_name.replace(first_name, "").strip() if last_name in first_name: From c39e8c01ea262c7805c21e779132058a30e22587 Mon Sep 17 00:00:00 2001 From: Sina Sheikholeslami Date: Wed, 4 Feb 2026 17:00:12 +0100 Subject: [PATCH 2/3] Fix double db injection in validate_dois The search_dois() method is decorated with @connect_to_db which injects the db argument automatically. Calling it with self.search_dois(db) from validate_dois() (also decorated) caused the db to be passed twice. Co-Authored-By: Claude Opus 4.5 --- src/research_index_backend/doi.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/research_index_backend/doi.py b/src/research_index_backend/doi.py index 2812265..cf22409 100644 --- a/src/research_index_backend/doi.py +++ b/src/research_index_backend/doi.py @@ -194,7 +194,7 @@ def search_dois(self, db: Driver) -> None: def validate_dois(self, db: Driver) -> Dict[str, DOI]: try: self.pattern_check() - self.search_dois(db) + self.search_dois() return self.doi_tracker except Exception as e: logger.error(f"DOI validation failed: {e}") From c1ea63c81bee156f1de5b2a9a985e6c8af4ae7d6 Mon Sep 17 00:00:00 2001 From: Sina Sheikholeslami Date: Wed, 4 Feb 2026 17:26:16 +0100 Subject: [PATCH 3/3] Remove unnecessary @connect_to_db from validate_dois --- src/research_index_backend/doi.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/research_index_backend/doi.py b/src/research_index_backend/doi.py index cf22409..82259ae 100644 --- a/src/research_index_backend/doi.py +++ b/src/research_index_backend/doi.py @@ -190,8 +190,7 @@ def search_dois(self, db: Driver) -> None: + "{self.num_new_dois} new DOIs" ) - @connect_to_db - def validate_dois(self, db: Driver) -> Dict[str, DOI]: + def validate_dois(self) -> Dict[str, DOI]: try: self.pattern_check() self.search_dois()