[FIX] partner_geolocalize_usability: avoid Nominatim HTTP 429 rejections #21

Open
stephansainleger wants to merge 1 commits from 18.0-fix-osm-geolocalization into 18.0

The stock base_geocoder._call_openstreetmap sends a generic Odoo
User-Agent shared across thousands of instances, which Nominatim
rate-limits and blocks (HTTP 429 "Too many requests"), so mass
geolocation fails regardless of client-side throttling.

Override _call_openstreetmap to:

  • send a deployment-specific User-Agent read from a new system
    parameter partner_geolocalize_usability.user_agent (shipped with an
    obvious placeholder so an unconfigured instance fails loudly instead of
    silently reusing the banned generic agent);
  • throttle requests to one per second (time.sleep) before each call,
    complying with the Nominatim usage policy even when callers loop over
    many partners;
  • return None instead of raising IndexError when Nominatim
    returns an empty result for an unknown address.

Document the required system parameter in the README and add tests
covering the User-Agent selection, throttling and empty/blank results.

The stock ``base_geocoder._call_openstreetmap`` sends a generic Odoo ``User-Agent`` shared across thousands of instances, which Nominatim rate-limits and blocks (HTTP 429 "Too many requests"), so mass geolocation fails regardless of client-side throttling. Override ``_call_openstreetmap`` to: - send a deployment-specific ``User-Agent`` read from a new system parameter ``partner_geolocalize_usability.user_agent`` (shipped with an obvious placeholder so an unconfigured instance fails loudly instead of silently reusing the banned generic agent); - throttle requests to one per second (``time.sleep``) before each call, complying with the Nominatim usage policy even when callers loop over many partners; - return ``None`` instead of raising ``IndexError`` when Nominatim returns an empty result for an unknown address. Document the required system parameter in the README and add tests covering the User-Agent selection, throttling and empty/blank results.
stephansainleger added 1 commit 2026-07-21 15:28:01 +00:00
The stock ``base_geocoder._call_openstreetmap`` sends a generic Odoo
``User-Agent`` shared across thousands of instances, which Nominatim
rate-limits and blocks (HTTP 429 "Too many requests"), so mass
geolocation fails regardless of client-side throttling.

Override ``_call_openstreetmap`` to:

- send a deployment-specific ``User-Agent`` read from a new system
  parameter ``partner_geolocalize_usability.user_agent`` (shipped with an
  obvious placeholder so an unconfigured instance fails loudly instead of
  silently reusing the banned generic agent);
- throttle requests to one per second (``time.sleep``) before each call,
  complying with the Nominatim usage policy even when callers loop over
  many partners;
- return ``None`` instead of raising ``IndexError`` when Nominatim
  returns an empty result for an unknown address.

Document the required system parameter in the README and add tests
covering the User-Agent selection, throttling and empty/blank results.
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin 18.0-fix-osm-geolocalization:18.0-fix-osm-geolocalization
git checkout 18.0-fix-osm-geolocalization
Sign in to join this conversation.
No description provided.