From c16a11deb3c21d8cd4ef2c6aaabec3a252e8617a Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Wed, 13 May 2026 16:07:18 +0200 Subject: [PATCH 1/3] fix: get the languages from plone registry and not from portal_languages --- CHANGES.md | 6 ++++++ src/plone/pgcatalog/startup.py | 22 +++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 8950b98..3832925 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,11 @@ # Changelog +## 1.0.0b65 + +### Fixed + +- Fix automatic language detection for BM25 ranking #164 + ## 1.0.0b64 ### Fixed diff --git a/src/plone/pgcatalog/startup.py b/src/plone/pgcatalog/startup.py index c0a43a7..8bd5e1e 100644 --- a/src/plone/pgcatalog/startup.py +++ b/src/plone/pgcatalog/startup.py @@ -25,7 +25,6 @@ import threading import transaction - __all__ = ["register_catalog_processor"] @@ -76,16 +75,17 @@ def _detect_languages_from_db(db): # pragma: no cover root = conn.root() app = root.get("Application", root) for obj in app.values(): - lang_tool = getattr(obj, "portal_languages", None) - if lang_tool is not None: - langs = list(lang_tool.getSupportedLanguages()) - if langs: - log.info( - "Auto-detected BM25 languages from %s: %s", - getattr(obj, "getId", lambda: "?")(), - langs, - ) - return langs + if getattr(obj, "portal_type", "") == "Plone Site": + portal_registry = getattr(obj, "portal_registry", None) + if portal_registry is not None: + langs = portal_registry.get("plone.available_languages", []) + if langs: + log.info( + "Auto-detected BM25 languages from %s: %s", + getattr(obj, "getId", lambda: "?")(), + langs, + ) + return langs finally: # Abort the implicit transaction before closing -- traversal # may have joined the connection to a transaction, and ZODB From 10df10a7a7d668c2fdb19bfb1c73933d8cde67f4 Mon Sep 17 00:00:00 2001 From: Mikel Larreategi Date: Wed, 13 May 2026 16:08:44 +0200 Subject: [PATCH 2/3] chore: remove portal_type detection --- src/plone/pgcatalog/startup.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/plone/pgcatalog/startup.py b/src/plone/pgcatalog/startup.py index 8bd5e1e..18ca631 100644 --- a/src/plone/pgcatalog/startup.py +++ b/src/plone/pgcatalog/startup.py @@ -75,17 +75,16 @@ def _detect_languages_from_db(db): # pragma: no cover root = conn.root() app = root.get("Application", root) for obj in app.values(): - if getattr(obj, "portal_type", "") == "Plone Site": - portal_registry = getattr(obj, "portal_registry", None) - if portal_registry is not None: - langs = portal_registry.get("plone.available_languages", []) - if langs: - log.info( - "Auto-detected BM25 languages from %s: %s", - getattr(obj, "getId", lambda: "?")(), - langs, - ) - return langs + portal_registry = getattr(obj, "portal_registry", None) + if portal_registry is not None: + langs = portal_registry.get("plone.available_languages", []) + if langs: + log.info( + "Auto-detected BM25 languages from %s: %s", + getattr(obj, "getId", lambda: "?")(), + langs, + ) + return langs finally: # Abort the implicit transaction before closing -- traversal # may have joined the connection to a transaction, and ZODB From 3a2e997f64c581aabb2141a2a03de6cc4ff090b1 Mon Sep 17 00:00:00 2001 From: "Jens W. Klein" Date: Tue, 16 Jun 2026 01:09:34 +0200 Subject: [PATCH 3/3] style: restore blank line after imports (ruff I001) Co-Authored-By: Claude Opus 4.8 (1M context) --- src/plone/pgcatalog/startup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plone/pgcatalog/startup.py b/src/plone/pgcatalog/startup.py index 18ca631..4b52e4a 100644 --- a/src/plone/pgcatalog/startup.py +++ b/src/plone/pgcatalog/startup.py @@ -25,6 +25,7 @@ import threading import transaction + __all__ = ["register_catalog_processor"]