fix: make Odoo login configurable via ODOO_USER (default __system__)
Some Odoo instances require the user's actual login/email for API key auth rather than the __system__ special login. ODOO_USER defaults to __system__ for standard Odoo 16+ installs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -8,6 +8,7 @@ class Settings(BaseSettings):
|
||||
# Odoo
|
||||
odoo_url: str = 'http://localhost:8069'
|
||||
odoo_db: str = 'odoo'
|
||||
odoo_user: str = '__system__'
|
||||
odoo_api_key: str = ''
|
||||
|
||||
# Ollama
|
||||
|
||||
@@ -85,6 +85,7 @@ async def lifespan(app: FastAPI):
|
||||
url=settings.odoo_url,
|
||||
db=settings.odoo_db,
|
||||
api_key=settings.odoo_api_key,
|
||||
user=settings.odoo_user,
|
||||
)
|
||||
logger.info('Odoo client initialised (%s)', settings.odoo_url)
|
||||
except Exception as exc:
|
||||
|
||||
@@ -37,10 +37,11 @@ class OdooWriteError(Exception): pass
|
||||
|
||||
|
||||
class OdooClient:
|
||||
def __init__(self, url, db, api_key, pg_dsn=None, pg_pool_min=2, pg_pool_max=10):
|
||||
def __init__(self, url, db, api_key, user='__system__', pg_dsn=None, pg_pool_min=2, pg_pool_max=10):
|
||||
self._url = url.rstrip('/')
|
||||
self._db = db
|
||||
self._api_key = api_key
|
||||
self._user = user
|
||||
self._pg_dsn = pg_dsn
|
||||
self._pg_pool_min = pg_pool_min
|
||||
self._pg_pool_max = pg_pool_max
|
||||
@@ -77,7 +78,7 @@ class OdooClient:
|
||||
try:
|
||||
uid = await self._xmlrpc_call(
|
||||
self._common, 'authenticate',
|
||||
self._db, '__system__', self._api_key, {})
|
||||
self._db, self._user, self._api_key, {})
|
||||
if not uid:
|
||||
raise OdooAuthError('Authentication failed - check ODOO_API_KEY')
|
||||
self._uid = uid
|
||||
|
||||
Reference in New Issue
Block a user