Public release from ruodoo-project: 19.0 - 2026-05-10 21:19:01 UTC
This commit is contained in:
39
ir_rule_protected/models.py
Normal file
39
ir_rule_protected/models.py
Normal file
@ -0,0 +1,39 @@
|
||||
from odoo import SUPERUSER_ID, exceptions, fields, models
|
||||
from odoo.tools.translate import _
|
||||
|
||||
MODULE_NAME = "ir_rule_protected"
|
||||
|
||||
|
||||
class IRRule(models.Model):
|
||||
_inherit = "ir.rule"
|
||||
|
||||
protected = fields.Boolean(
|
||||
"Protected", help="Make rule editable only for superuser"
|
||||
)
|
||||
|
||||
def check_restricted(self):
|
||||
if self.env.user.id == SUPERUSER_ID:
|
||||
return
|
||||
for r in self:
|
||||
if r.protected:
|
||||
raise exceptions.UserError(
|
||||
_("The Rule is protected. You don't have access for this operation")
|
||||
)
|
||||
|
||||
def write(self, vals):
|
||||
self.check_restricted()
|
||||
return super(IRRule, self).write(vals)
|
||||
|
||||
def unlink(self):
|
||||
self.check_restricted()
|
||||
return super(IRRule, self).unlink()
|
||||
|
||||
|
||||
class Module(models.Model):
|
||||
_inherit = "ir.module.module"
|
||||
|
||||
def button_uninstall(self):
|
||||
for r in self:
|
||||
if r.name == MODULE_NAME and self.env.uid != SUPERUSER_ID:
|
||||
raise exceptions.UserError(_("Only admin can uninstall the module"))
|
||||
return super(Module, self).button_uninstall()
|
||||
Reference in New Issue
Block a user