[IMP] display a helper to add a tooltip on a field. Display the tooltip on list views. One tooltip per field and do not handle user specific tooltips

This commit is contained in:
Benjamin Willig
2023-08-01 10:40:55 +02:00
parent 9974308140
commit 3c5ef90a2e
14 changed files with 362 additions and 163 deletions

View File

@@ -1 +1,3 @@
from . import ir_http
from . import ir_model_fields_tooltip
from . import res_users

View File

@@ -0,0 +1,19 @@
# Copyright 2023 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class Http(models.AbstractModel):
_inherit = "ir.http"
def session_info(self):
result = super().session_info()
user = self.env.user
result.update(
{
"can_manage_tooltips": user._is_tooltip_manager(),
"tooltip_show_add_helper": user.tooltip_show_add_helper,
}
)
return result

View File

@@ -31,12 +31,27 @@ class IrModelFieldsTooltip(models.Model):
help="Set active to false to hide the Tooltip without removing it.",
)
field_name = fields.Char(related="field_id.name")
tooltip_text = fields.Html(string="Tooltip Text")
tooltip_text = fields.Html(string="Tooltip Text", required=True)
@api.model
def default_get(self, fields_list):
res = super().default_get(fields_list)
context = self.env.context
default_model = context.get("default_model")
default_field = context.get("default_field_name")
if default_model and default_field:
field = self.env["ir.model.fields"].search(
[("model_id.model", "=", default_model), ("name", "=", default_field)],
limit=1,
)
res.update({"model_id": field.model_id.id, "field_id": field.id})
return res
@api.constrains("model_id", "field_id")
def _check_duplicate_tooltip(self):
all_self = self.with_context(active_test=False)
for rec in self:
if self.search(
if all_self.search(
[
("model_id", "=", rec.model_id.id),
("field_id", "=", rec.field_id.id),

View File

@@ -0,0 +1,31 @@
# Copyright 2023 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
TOOLTIP_MANAGER_GROUP = "web_field_tooltip.group_tooltip_manager"
class ResUsers(models.Model):
_inherit = "res.users"
tooltip_show_add_helper = fields.Boolean(
string="Show helper to add tooltips on fields",
)
tooltip_show_add_helper_allowed = fields.Boolean(
compute="_compute_tooltip_show_add_helper_allowed"
)
def __init__(self, pool, cr):
super().__init__(pool, cr)
field_names = ["tooltip_show_add_helper"]
self.SELF_READABLE_FIELDS.extend(field_names)
self.SELF_WRITEABLE_FIELDS.extend(field_names)
def _compute_tooltip_show_add_helper_allowed(self):
for rec in self:
rec.tooltip_show_add_helper_allowed = rec._is_tooltip_manager()
def _is_tooltip_manager(self):
self.ensure_one()
return self.has_group(TOOLTIP_MANAGER_GROUP)