[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:
@@ -21,7 +21,25 @@ It also modify the partner form vieww for a better understanding of the geolocat
|
||||
Configuration
|
||||
=============
|
||||
|
||||
No configuration needed.
|
||||
The OpenStreetMap Nominatim geocoding service requires a genuine, identifying
|
||||
``User-Agent`` header with a valid contact address (see the `Nominatim usage
|
||||
policy <https://operations.osmfoundation.org/policies/nominatim/>`_). The
|
||||
default Odoo ``User-Agent`` is shared by many instances and gets rate-limited or
|
||||
blocked (HTTP 429 "Too many requests").
|
||||
|
||||
To fix this, set the system parameter (Settings > Technical > System
|
||||
Parameters):
|
||||
|
||||
- **Key**: ``partner_geolocalize_usability.user_agent``
|
||||
- **Value**: a User-Agent identifying your deployment and a valid contact,
|
||||
e.g. ``acme-crm/1.0 (contact: gis@acme.example)``
|
||||
|
||||
The module ships this parameter with a placeholder value; you MUST replace it
|
||||
with your own, otherwise Nominatim will reject the requests.
|
||||
|
||||
Requests to Nominatim are additionally throttled to one request per second to
|
||||
comply with the usage policy, so mass geolocation of many partners is slow by
|
||||
design (roughly one partner per second).
|
||||
|
||||
Known issues / Roadmap
|
||||
======================
|
||||
|
||||
Reference in New Issue
Block a user