Add tests and support of _inherits

This commit is contained in:
Guewen Baconnier 2018-07-25 17:23:46 +02:00 committed by Stéphane Bidoul (ACSONE)
parent bd67585150
commit 95f5e2abaf
No known key found for this signature in database
GPG Key ID: BCAB2555446B5B92
2 changed files with 24 additions and 4 deletions

View File

@ -339,9 +339,9 @@ class ServerEnvMixin(models.AbstractModel):
inverse_method_name = '_inverse_server_env_%s' % field.name inverse_method_name = '_inverse_server_env_%s' % field.name
inverse_method = partialmethod( inverse_method = partialmethod(
ServerEnvMixin._inverse_server_env, field.name type(self)._inverse_server_env, field.name
) )
setattr(ServerEnvMixin, inverse_method_name, inverse_method) setattr(type(self), inverse_method_name, inverse_method)
field.inverse = inverse_method_name field.inverse = inverse_method_name
field.store = False field.store = False
field.required = False field.required = False
@ -356,7 +356,9 @@ class ServerEnvMixin(models.AbstractModel):
and in the views to add 'readonly' on the fields. and in the views to add 'readonly' on the fields.
""" """
fieldname = self._server_env_is_editable_fieldname(base_field.name) fieldname = self._server_env_is_editable_fieldname(base_field.name)
if fieldname not in self._fields: # if the field is inherited, it's a related to its delegated model
# (inherits), we want to override it with a new one
if fieldname not in self._fields or self._fields[fieldname].inherited:
field = fields.Boolean( field = fields.Boolean(
compute='_compute_server_env_is_editable', compute='_compute_server_env_is_editable',
automatic=True, automatic=True,
@ -378,7 +380,9 @@ class ServerEnvMixin(models.AbstractModel):
fieldname = self._server_env_default_fieldname(base_field.name) fieldname = self._server_env_default_fieldname(base_field.name)
if not fieldname: if not fieldname:
return return
if fieldname not in self._fields: # if the field is inherited, it's a related to its delegated model
# (inherits), we want to override it with a new one
if fieldname not in self._fields or self._fields[fieldname].inherited:
base_field_cls = base_field.__class__ base_field_cls = base_field.__class__
field_args = base_field.args.copy() field_args = base_field.args.copy()
field_args.pop('_sequence', None) field_args.pop('_sequence', None)

View File

@ -9,6 +9,9 @@ from odoo.tests import common
from odoo.addons.server_environment import server_env from odoo.addons.server_environment import server_env
from odoo.tools.config import config from odoo.tools.config import config
import odoo.addons.server_environment.models.server_env_mixin as \
server_env_mixin
class ServerEnvironmentCase(common.TransactionCase): class ServerEnvironmentCase(common.TransactionCase):
@ -41,3 +44,16 @@ class ServerEnvironmentCase(common.TransactionCase):
newkeys['SERVER_ENV_CONFIG_SECRET'] = secret newkeys['SERVER_ENV_CONFIG_SECRET'] = secret
with patch.dict('os.environ', newkeys): with patch.dict('os.environ', newkeys):
yield yield
@contextmanager
def load_config(self, public=None, secret=None):
original_serv_config = server_env_mixin.serv_config
try:
with self.set_config_dir(None), \
self.set_env_variables(public, secret):
parser = server_env._load_config()
server_env_mixin.serv_config = parser
yield
finally:
server_env_mixin.serv_config = original_serv_config