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
|
||||||
odoo_url: str = 'http://localhost:8069'
|
odoo_url: str = 'http://localhost:8069'
|
||||||
odoo_db: str = 'odoo'
|
odoo_db: str = 'odoo'
|
||||||
|
odoo_user: str = '__system__'
|
||||||
odoo_api_key: str = ''
|
odoo_api_key: str = ''
|
||||||
|
|
||||||
# Ollama
|
# Ollama
|
||||||
|
|||||||
@@ -85,6 +85,7 @@ async def lifespan(app: FastAPI):
|
|||||||
url=settings.odoo_url,
|
url=settings.odoo_url,
|
||||||
db=settings.odoo_db,
|
db=settings.odoo_db,
|
||||||
api_key=settings.odoo_api_key,
|
api_key=settings.odoo_api_key,
|
||||||
|
user=settings.odoo_user,
|
||||||
)
|
)
|
||||||
logger.info('Odoo client initialised (%s)', settings.odoo_url)
|
logger.info('Odoo client initialised (%s)', settings.odoo_url)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
|
|||||||
@@ -37,10 +37,11 @@ class OdooWriteError(Exception): pass
|
|||||||
|
|
||||||
|
|
||||||
class OdooClient:
|
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._url = url.rstrip('/')
|
||||||
self._db = db
|
self._db = db
|
||||||
self._api_key = api_key
|
self._api_key = api_key
|
||||||
|
self._user = user
|
||||||
self._pg_dsn = pg_dsn
|
self._pg_dsn = pg_dsn
|
||||||
self._pg_pool_min = pg_pool_min
|
self._pg_pool_min = pg_pool_min
|
||||||
self._pg_pool_max = pg_pool_max
|
self._pg_pool_max = pg_pool_max
|
||||||
@@ -77,7 +78,7 @@ class OdooClient:
|
|||||||
try:
|
try:
|
||||||
uid = await self._xmlrpc_call(
|
uid = await self._xmlrpc_call(
|
||||||
self._common, 'authenticate',
|
self._common, 'authenticate',
|
||||||
self._db, '__system__', self._api_key, {})
|
self._db, self._user, self._api_key, {})
|
||||||
if not uid:
|
if not uid:
|
||||||
raise OdooAuthError('Authentication failed - check ODOO_API_KEY')
|
raise OdooAuthError('Authentication failed - check ODOO_API_KEY')
|
||||||
self._uid = uid
|
self._uid = uid
|
||||||
|
|||||||
Reference in New Issue
Block a user