Fix a few small issues in mixin
This commit is contained in:
parent
04bbfce412
commit
8d43652dbd
|
|
@ -35,7 +35,7 @@ class ServerEnvMixin(models.AbstractModel):
|
||||||
By default, it looks for the configuration in a section named
|
By default, it looks for the configuration in a section named
|
||||||
``[model_name.Record Name]`` where ``model_name`` is the ``_name`` of the
|
``[model_name.Record Name]`` where ``model_name`` is the ``_name`` of the
|
||||||
model with ``.`` replaced by ``_``. It can be customized by overriding the
|
model with ``.`` replaced by ``_``. It can be customized by overriding the
|
||||||
method :meth:`~server_env_section_name`.
|
method :meth:`~_server_env_section_name`.
|
||||||
|
|
||||||
For each field transformed to an env-computed field, a companion field
|
For each field transformed to an env-computed field, a companion field
|
||||||
``<field>_env_default`` is automatically created. When it's value is set
|
``<field>_env_default`` is automatically created. When it's value is set
|
||||||
|
|
@ -111,17 +111,17 @@ class ServerEnvMixin(models.AbstractModel):
|
||||||
read from the ``<field>_env_default`` field from database.
|
read from the ``<field>_env_default`` field from database.
|
||||||
"""
|
"""
|
||||||
for record in self:
|
for record in self:
|
||||||
for field_name, getter_name in self._server_env_fields.items():
|
for field_name, getter_name in record._server_env_fields.items():
|
||||||
section_name = self._server_env_section_name()
|
section_name = record._server_env_section_name()
|
||||||
if (section_name in serv_config
|
if (section_name in serv_config
|
||||||
and field_name in serv_config[section_name]):
|
and field_name in serv_config[section_name]):
|
||||||
|
|
||||||
value = self._server_env_read_from_config(
|
value = record._server_env_read_from_config(
|
||||||
section_name, field_name, getter_name
|
section_name, field_name, getter_name
|
||||||
)
|
)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
default_field = self._server_env_default_fieldname(
|
default_field = record._server_env_default_fieldname(
|
||||||
field_name
|
field_name
|
||||||
)
|
)
|
||||||
value = record[default_field]
|
value = record[default_field]
|
||||||
|
|
@ -152,7 +152,8 @@ class ServerEnvMixin(models.AbstractModel):
|
||||||
is_editable_field = self._server_env_is_editable_fieldname(
|
is_editable_field = self._server_env_is_editable_fieldname(
|
||||||
field_name
|
field_name
|
||||||
)
|
)
|
||||||
section_name = self._server_env_section_name()
|
|
||||||
|
section_name = record._server_env_section_name()
|
||||||
is_editable = not (section_name in serv_config
|
is_editable = not (section_name in serv_config
|
||||||
and field_name in serv_config[section_name])
|
and field_name in serv_config[section_name])
|
||||||
record[is_editable_field] = is_editable
|
record[is_editable_field] = is_editable
|
||||||
|
|
@ -211,6 +212,7 @@ class ServerEnvMixin(models.AbstractModel):
|
||||||
setattr(ServerEnvMixin, inverse_method_name, inverse_method)
|
setattr(ServerEnvMixin, 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.copy = False
|
field.copy = False
|
||||||
field.sparse = None
|
field.sparse = None
|
||||||
|
|
||||||
|
|
@ -239,12 +241,15 @@ class ServerEnvMixin(models.AbstractModel):
|
||||||
fieldname = self._server_env_default_fieldname(base_field.name)
|
fieldname = self._server_env_default_fieldname(base_field.name)
|
||||||
if fieldname not in self._fields:
|
if fieldname not in self._fields:
|
||||||
base_field_cls = base_field.__class__
|
base_field_cls = base_field.__class__
|
||||||
field_args = base_field.args
|
field_args = base_field.args.copy()
|
||||||
field_args.pop('_sequence', None)
|
field_args.pop('_sequence', None)
|
||||||
field_args.update({
|
field_args.update({
|
||||||
'sparse': 'server_env_defaults',
|
'sparse': 'server_env_defaults',
|
||||||
'automatic': True,
|
'automatic': True,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
if hasattr(base_field, 'selection'):
|
||||||
|
field_args['selection'] = base_field.selection
|
||||||
field = base_field_cls(**field_args)
|
field = base_field_cls(**field_args)
|
||||||
self._add_field(fieldname, field)
|
self._add_field(fieldname, field)
|
||||||
|
|
||||||
|
|
@ -253,6 +258,6 @@ class ServerEnvMixin(models.AbstractModel):
|
||||||
super()._setup_base()
|
super()._setup_base()
|
||||||
for fieldname in self._server_env_fields:
|
for fieldname in self._server_env_fields:
|
||||||
field = self._fields[fieldname]
|
field = self._fields[fieldname]
|
||||||
|
self._server_env_add_default_field(field)
|
||||||
self._server_env_transform_field_to_read_from_env(field)
|
self._server_env_transform_field_to_read_from_env(field)
|
||||||
self._server_env_add_is_editable_field(field)
|
self._server_env_add_is_editable_field(field)
|
||||||
self._server_env_add_default_field(field)
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue