43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
"""Assets data adapter."""
|
|
|
|
from .base import DataAdapter
|
|
from ._registry import register_adapter
|
|
|
|
|
|
class AssetsAdapter(DataAdapter):
|
|
FUSION_MODEL = 'fusion.asset'
|
|
ENTERPRISE_MODULE = 'account_asset'
|
|
|
|
def list_assets(self, state=None):
|
|
return self._dispatch('list_assets', state=state)
|
|
|
|
def list_assets_via_fusion(self, state=None):
|
|
return self._read_fusion('fusion.asset', state=state)
|
|
|
|
def list_assets_via_enterprise(self, state=None):
|
|
return self._read_fusion('account.asset', state=state)
|
|
|
|
def list_assets_via_community(self, state=None):
|
|
# No assets feature in pure Community — return empty list with a hint.
|
|
return []
|
|
|
|
def _read_fusion(self, model_name, state=None):
|
|
"""Shared shape between fusion and enterprise (both use account.asset-like API)."""
|
|
Model = self.env[model_name].sudo()
|
|
domain = []
|
|
if state:
|
|
domain.append(('state', '=', state))
|
|
records = Model.search(domain, limit=200)
|
|
out = []
|
|
for r in records:
|
|
out.append({
|
|
'id': r.id,
|
|
'name': getattr(r, 'name', None),
|
|
'state': getattr(r, 'state', None),
|
|
'value': getattr(r, 'original_value', None) or getattr(r, 'acquisition_cost', None),
|
|
})
|
|
return out
|
|
|
|
|
|
register_adapter('assets', AssetsAdapter)
|