Skip to content
Snippets Groups Projects

Improve dynamic placeholder implementation

Merged oury.balde requested to merge topic/18.0/ob into branch/18.0
9 files
+ 93
67
Compare changes
  • Side-by-side
  • Inline
Files
9
  • 8898d80c
    - Rename fields/methods for clarity:
      * dynamic_placeholder_button_hidden -> hide_placeholder_button
      * _compute_dynamic_placeholder_button_hidden -> _compute_hide_placeholder_button
    - Restructure JS components:
      * Replace dynamic_placeholder_charfield_patch with new component-based implementation
      * Add proper prop handling and converter type awareness
    - Add onchange handler to clear value when converter changes
    - Refactor placeholder computation using dictionary mapping
    - Update XML views with new field names and component parameters
    - Improve mimetype.py documentation and default handling
@@ -83,7 +83,7 @@
value_placeholder = fields.Char(compute="_compute_value_placeholder")
dynamic_placeholder_button_hidden = fields.Boolean(
compute="_compute_dynamic_placeholder_button_hidden"
hide_placeholder_button = fields.Boolean(
compute="_compute_hide_placeholder_button", string="Hide Placeholder Button"
)
@@ -88,4 +88,9 @@
)
@api.onchange("converter")
def _onchange_converter(self):
if self.converter:
self.value = False
@api.depends("converter")
def _compute_value_placeholder(self):
@@ -90,25 +95,18 @@
@api.depends("converter")
def _compute_value_placeholder(self):
"""Computes a dynamic placeholder that depends on the selected type
to help the user inputs their data.
"""
for subsitution in self:
placeholder = _("N/A")
if subsitution.converter == FIELD:
placeholder = _("e.g: name or partner_id.name")
elif subsitution.converter == MAIL_TEMPLATE:
placeholder = _("e.g: {{object.partner_id.name}}")
elif subsitution.converter == MAIL_TEMPLATE_DESERIALIZE:
placeholder = _("e.g: {{ object.get_partner_info() | safe }}")
elif subsitution.converter == RELATION_2MANY:
placeholder = _("e.g: tax_ids")
elif subsitution.converter == RELATION_PATH:
placeholder = _(
"e.g: partner_id/category_id/name ou partner_id/child_ids[]"
)
elif subsitution.converter == CONSTANT:
placeholder = _("e.g: www.orbeet.io")
subsitution.value_placeholder = placeholder
"""Compute placeholder text based on conversion type"""
placeholder_map = {
FIELD: _("e.g: name or partner_id.name"),
MAIL_TEMPLATE: _("e.g: {{object.partner_id.name}}"),
MAIL_TEMPLATE_DESERIALIZE: _("e.g: {{ object.get_partner_info() | safe }}"),
RELATION_PATH: _(
"e.g: partner_id/category_id/name ou partner_id/child_ids[]"
),
RELATION_2MANY: _("e.g: tax_ids"),
CONSTANT: _("e.g: www.orbeet.io"),
}
for record in self:
record.value_placeholder = placeholder_map.get(record.converter, _("N/A"))
@api.depends("value")
def _compute_render_model(self):
@@ -126,5 +124,5 @@
record.depth = record.keyword.count(".")
@api.depends("converter")
def _compute_dynamic_placeholder_button_hidden(self):
def _compute_hide_placeholder_button(self):
for record in self:
@@ -130,5 +128,5 @@
for record in self:
record.dynamic_placeholder_button_hidden = (
record.hide_placeholder_button = (
record.converter not in DYNAMIC_PLACEHOLDER_ALLOWED_CONVERTERS
)
Loading