mirror of
https://github.com/OCA/web.git
synced 2025-02-22 13:21:25 +02:00
[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:
@@ -1 +1,3 @@
|
||||
from . import ir_http
|
||||
from . import ir_model_fields_tooltip
|
||||
from . import res_users
|
||||
|
||||
19
web_field_tooltip/models/ir_http.py
Normal file
19
web_field_tooltip/models/ir_http.py
Normal 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
|
||||
@@ -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),
|
||||
|
||||
31
web_field_tooltip/models/res_users.py
Normal file
31
web_field_tooltip/models/res_users.py
Normal 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)
|
||||
Reference in New Issue
Block a user