mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00
[IMP] conftest: support for model methods
This commit is contained in:
parent
e20277c6ad
commit
ac4047ec2d
48
conftest.py
48
conftest.py
@ -1117,28 +1117,27 @@ class Model:
|
||||
def __repr__(self):
|
||||
return "{}({})".format(self._model, ', '.join(str(id_) for id_ in self._ids))
|
||||
|
||||
# method: (model, rebrowse)
|
||||
_conf = {
|
||||
'check_object_reference': (True, False),
|
||||
'create': (True, True),
|
||||
'exists': (False, True),
|
||||
'fields_get': (True, False),
|
||||
'name_create': (False, True),
|
||||
'name_search': (True, False),
|
||||
'search': (True, True),
|
||||
'search_count': (True, False),
|
||||
'search_read': (True, False),
|
||||
'filtered': (False, True),
|
||||
}
|
||||
|
||||
def browse(self, ids):
|
||||
return Model(self._env, self._model, ids)
|
||||
|
||||
def exists(self):
|
||||
ids = self._env(self._model, 'exists', self._ids)
|
||||
return Model(self._env, self._model, ids)
|
||||
|
||||
def search(self, *args, **kwargs):
|
||||
ids = self._env(self._model, 'search', *args, **kwargs)
|
||||
return Model(self._env, self._model, ids)
|
||||
|
||||
def name_search(self, *args, **kwargs):
|
||||
return self._env(self._model, 'name_search', *args, **kwargs)
|
||||
|
||||
def create(self, values):
|
||||
return Model(self._env, self._model, [self._env(self._model, 'create', values)])
|
||||
|
||||
def check_object_reference(self, *args, **kwargs):
|
||||
return self.env(self._model, 'check_object_reference', *args, **kwargs)
|
||||
|
||||
# because sorted is not xmlrpc-compatible (it doesn't downgrade properly)
|
||||
def sorted(self, field):
|
||||
rs = sorted(self.read([field]), key=lambda r: r[field])
|
||||
rs = self.read([field])
|
||||
rs.sort(key=lambda r: r[field])
|
||||
return Model(self._env, self._model, [r['id'] for r in rs])
|
||||
|
||||
def __getitem__(self, index):
|
||||
@ -1176,7 +1175,18 @@ class Model:
|
||||
|
||||
# because it's difficult to discriminate between methods and fields
|
||||
def _call(self, name, *args, **kwargs):
|
||||
return self._env(self._model, name, self._ids, *args, **kwargs)
|
||||
model, rebrowse = self._conf.get(name, (False, False))
|
||||
|
||||
if model:
|
||||
res = self._env(self._model, name, *args, **kwargs)
|
||||
else:
|
||||
res = self._env(self._model, name, self._ids, *args, **kwargs)
|
||||
|
||||
if not rebrowse:
|
||||
return res
|
||||
if isinstance(res, int):
|
||||
return self.browse([res])
|
||||
return self.browse(res)
|
||||
|
||||
def __setattr__(self, fieldname, value):
|
||||
self._env(self._model, 'write', self._ids, {fieldname: value})
|
||||
|
Loading…
Reference in New Issue
Block a user