server-environment: Run pre-commit

This commit is contained in:
Akim Juillerat 2019-10-23 10:28:35 +02:00 committed by Maxime Franco
parent f2635e84e4
commit d1a9ffcd8f
5 changed files with 58 additions and 22 deletions

View File

@ -181,13 +181,18 @@ class ServerEnvMixin(models.AbstractModel):
# _server_env_has_key_defined so we are sure that the value is # _server_env_has_key_defined so we are sure that the value is
# either in the global or the record config # either in the global or the record config
getter = getattr(serv_config, config_getter) getter = getattr(serv_config, config_getter)
if section_name in serv_config and field_name in serv_config[section_name]: if (
section_name in serv_config
and field_name in serv_config[section_name]
):
value = getter(section_name, field_name) value = getter(section_name, field_name)
else: else:
value = getter(global_section_name, field_name) value = getter(global_section_name, field_name)
except Exception: except Exception:
_logger.exception( _logger.exception(
"error trying to read field %s in section %s", field_name, section_name "error trying to read field %s in section %s",
field_name,
section_name,
) )
return False return False
return value return value
@ -201,7 +206,8 @@ class ServerEnvMixin(models.AbstractModel):
and field_name in serv_config[global_section_name] and field_name in serv_config[global_section_name]
) )
has_config = ( has_config = (
section_name in serv_config and field_name in serv_config[section_name] section_name in serv_config
and field_name in serv_config[section_name]
) )
return has_global_config or has_config return has_global_config or has_config
@ -243,7 +249,9 @@ class ServerEnvMixin(models.AbstractModel):
record._compute_server_env_from_config(field_name, options) record._compute_server_env_from_config(field_name, options)
else: else:
record._compute_server_env_from_default(field_name, options) record._compute_server_env_from_default(
field_name, options
)
def _inverse_server_env(self, field_name): def _inverse_server_env(self, field_name):
options = self._server_env_fields[field_name] options = self._server_env_fields[field_name]
@ -271,8 +279,12 @@ class ServerEnvMixin(models.AbstractModel):
# in ``_inverse_server_env`` it would reset the value of the field # in ``_inverse_server_env`` it would reset the value of the field
for record in self: for record in self:
for field_name in self._server_env_fields: for field_name in self._server_env_fields:
is_editable_field = self._server_env_is_editable_fieldname(field_name) is_editable_field = self._server_env_is_editable_fieldname(
is_editable = not record._server_env_has_key_defined(field_name) field_name
)
is_editable = not record._server_env_has_key_defined(
field_name
)
record[is_editable_field] = is_editable record[is_editable_field] = is_editable
def _server_env_view_set_readonly(self, view_arch): def _server_env_view_set_readonly(self, view_arch):
@ -282,12 +294,17 @@ class ServerEnvMixin(models.AbstractModel):
for elem in view_arch.findall(field_xpath % field): for elem in view_arch.findall(field_xpath % field):
# set env-computed fields to readonly if the configuration # set env-computed fields to readonly if the configuration
# files have a key set for this field # files have a key set for this field
elem.set("attrs", str({"readonly": [(is_editable_field, "=", False)]})) elem.set(
"attrs",
str({"readonly": [(is_editable_field, "=", False)]}),
)
if not view_arch.findall(field_xpath % is_editable_field): if not view_arch.findall(field_xpath % is_editable_field):
# add the _is_editable fields in the view for the 'attrs' # add the _is_editable fields in the view for the 'attrs'
# domain # domain
view_arch.append( view_arch.append(
etree.Element("field", name=is_editable_field, invisible="1") etree.Element(
"field", name=is_editable_field, invisible="1"
)
) )
return view_arch return view_arch
@ -295,7 +312,10 @@ class ServerEnvMixin(models.AbstractModel):
self, view_id=None, view_type="form", toolbar=False, submenu=False self, view_id=None, view_type="form", toolbar=False, submenu=False
): ):
view_data = super()._fields_view_get( view_data = super()._fields_view_get(
view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu view_id=view_id,
view_type=view_type,
toolbar=toolbar,
submenu=submenu,
) )
view_arch = etree.fromstring(view_data["arch"].encode("utf-8")) view_arch = etree.fromstring(view_data["arch"].encode("utf-8"))
view_arch = self._server_env_view_set_readonly(view_arch) view_arch = self._server_env_view_set_readonly(view_arch)
@ -322,7 +342,9 @@ class ServerEnvMixin(models.AbstractModel):
field.compute = "_compute_server_env" field.compute = "_compute_server_env"
inverse_method_name = "_inverse_server_env_%s" % field.name inverse_method_name = "_inverse_server_env_%s" % field.name
inverse_method = partialmethod(type(self)._inverse_server_env, field.name) inverse_method = partialmethod(
type(self)._inverse_server_env, field.name
)
setattr(type(self), 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
@ -368,7 +390,9 @@ class ServerEnvMixin(models.AbstractModel):
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)
field_args.update({"sparse": "server_env_defaults", "automatic": True}) field_args.update(
{"sparse": "server_env_defaults", "automatic": True}
)
if hasattr(base_field, "selection"): if hasattr(base_field, "selection"):
field_args["selection"] = base_field.selection field_args["selection"] = base_field.selection

View File

@ -38,7 +38,8 @@ try:
_dir = os.path.dirname(server_environment_files.__file__) _dir = os.path.dirname(server_environment_files.__file__)
except ImportError: except ImportError:
_logger.info( _logger.info(
"not using server_environment_files for configuration," " no directory found" "not using server_environment_files for configuration,"
" no directory found"
) )
_dir = None _dir = None
@ -119,7 +120,9 @@ def _load_config_from_server_env_files(config_p):
try: try:
config_p.read(conf_files) config_p.read(conf_files)
except Exception as e: except Exception as e:
raise Exception('Cannot read config files "{}": {}'.format(conf_files, e)) raise Exception(
'Cannot read config files "{}": {}'.format(conf_files, e)
)
def _load_config_from_rcfile(config_p): def _load_config_from_rcfile(config_p):
@ -209,7 +212,8 @@ class ServerConfiguration(models.TransientModel):
ServerConfiguration, ServerConfiguration,
col_name, col_name,
fields.Char( fields.Char(
string=cls._format_key_display_name(col_name), readonly=True string=cls._format_key_display_name(col_name),
readonly=True,
), ),
) )
cls._conf_defaults[col_name] = value cls._conf_defaults[col_name] = value
@ -253,7 +257,10 @@ class ServerConfiguration(models.TransientModel):
return ( return (
'<group col="2" colspan="4">' '<group col="2" colspan="4">'
+ "".join( + "".join(
['<field name="%s" readonly="1"/>' % _escape(name) for name in names] [
'<field name="%s" readonly="1"/>' % _escape(name)
for name in names
]
) )
+ "</group>" + "</group>"
) )
@ -292,13 +299,13 @@ class ServerConfiguration(models.TransientModel):
self, view_id=None, view_type="form", toolbar=False, submenu=False self, view_id=None, view_type="form", toolbar=False, submenu=False
): ):
"""Overwrite the default method to render the custom view.""" """Overwrite the default method to render the custom view."""
res = super().fields_view_get( res = super().fields_view_get(view_id, view_type, toolbar)
view_id, view_type, toolbar
)
View = self.env["ir.ui.view"] View = self.env["ir.ui.view"]
if view_type == "form": if view_type == "form":
arch_node = self._arch arch_node = self._arch
xarch, xfields = View.postprocess_and_fields(self._name, arch_node, view_id) xarch, xfields = View.postprocess_and_fields(
self._name, arch_node, view_id
)
res["arch"] = xarch res["arch"] = xarch
res["fields"] = xfields res["fields"] = xfields
return res return res

View File

@ -30,7 +30,11 @@ from odoo.tools.config import config
def _get_output(cmd): def _get_output(cmd):
bindir = config["root_path"] bindir = config["root_path"]
p = subprocess.Popen( p = subprocess.Popen(
cmd, shell=True, cwd=bindir, stdout=subprocess.PIPE, stderr=subprocess.STDOUT cmd,
shell=True,
cwd=bindir,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
) )
return p.communicate()[0].rstrip() return p.communicate()[0].rstrip()

View File

@ -47,7 +47,9 @@ class ServerEnvironmentCase(common.SavepointCase):
def load_config(self, public=None, secret=None): def load_config(self, public=None, secret=None):
original_serv_config = server_env_mixin.serv_config original_serv_config = server_env_mixin.serv_config
try: try:
with self.set_config_dir(None), self.set_env_variables(public, secret): with self.set_config_dir(None), self.set_env_variables(
public, secret
):
parser = server_env._load_config() parser = server_env._load_config()
server_env_mixin.serv_config = parser server_env_mixin.serv_config = parser
yield yield

View File

@ -1,7 +1,6 @@
# Copyright 2018 Camptocamp (https://www.camptocamp.com). # Copyright 2018 Camptocamp (https://www.camptocamp.com).
# License GPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License GPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from .. import server_env from .. import server_env
from . import common from . import common