[FIX] partner_geolocalize_usability: avoid Nominatim HTTP 429 rejections

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 commit is contained in:
Stéphan Sainléger
2026-07-21 17:23:43 +02:00
parent e161f431ec
commit e3fa6b8d6e
7 changed files with 210 additions and 2 deletions

View File

@@ -17,10 +17,11 @@
],
"qweb": [],
"external_dependencies": {
"python": [],
"python": ["requests"],
},
# always loaded
"data": [
"data/ir_config_parameter.xml",
"views/res_partner.xml",
],
# only loaded in demonstration mode