Add tests and support of _inherits
This commit is contained in:
parent
bd67585150
commit
95f5e2abaf
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue