diff --git a/web_field_required_invisible_manager/models/custom_field_restriction.py b/web_field_required_invisible_manager/models/custom_field_restriction.py index b1d1f7496..91c7fa869 100644 --- a/web_field_required_invisible_manager/models/custom_field_restriction.py +++ b/web_field_required_invisible_manager/models/custom_field_restriction.py @@ -22,19 +22,19 @@ class CustomFieldRestriction(models.Model): required_model_id = fields.Many2one( "ir.model", ondelete="cascade", - string="required_model_id", + string="Model (required)", index=True, ) invisible_model_id = fields.Many2one( "ir.model", ondelete="cascade", - string="invisible_model_id", + string="Model (visibility)", index=True, ) readonly_model_id = fields.Many2one( "ir.model", ondelete="cascade", - string="readonly_model_id", + string="Model (readonly)", index=True, ) model_name = fields.Char( @@ -45,7 +45,9 @@ class CustomFieldRestriction(models.Model): ) condition_domain = fields.Char() group_ids = fields.Many2many("res.groups", required=True) - default_required = fields.Boolean(related="field_id.required") + default_required = fields.Boolean( + related="field_id.required", string="Required by Default" + ) required = fields.Boolean() field_invisible = fields.Boolean() field_readonly = fields.Boolean() @@ -56,11 +58,7 @@ class CustomFieldRestriction(models.Model): @api.onchange("field_id") def onchange_field_id(self): - vals = { - "required": self.field_id.required, - "field_invisible": False, - "field_readonly": self.field_id.readonly, - } + vals = {} if self.env.context.get("default_readonly_model_id"): vals["readonly_model_id"] = ( self.env["ir.model"] @@ -86,10 +84,13 @@ class CustomFieldRestriction(models.Model): for rec in self: if rec.required_model_id: rec.model_name = rec.required_model_id.model + rec.required = True elif rec.invisible_model_id: rec.model_name = rec.invisible_model_id.model + rec.field_invisible = True elif rec.readonly_model_id: rec.model_name = rec.readonly_model_id.model + rec.field_readonly = True @api.model def create(self, vals): diff --git a/web_field_required_invisible_manager/tests/test_web_field_required_invisible_manager.py b/web_field_required_invisible_manager/tests/test_web_field_required_invisible_manager.py index 39a3685d7..6800a1e09 100644 --- a/web_field_required_invisible_manager/tests/test_web_field_required_invisible_manager.py +++ b/web_field_required_invisible_manager/tests/test_web_field_required_invisible_manager.py @@ -215,7 +215,8 @@ class TestFieldRequiredIvisibleManager(common.SavepointCase): # onchange_field_id() self.assertFalse(self.invisible_title_rec_id.required) self.invisible_title_rec_id.field_id = self.partner_title_name_field_id - self.invisible_title_rec_id.onchange_field_id() + self.invisible_title_rec_id.required_model_id = self.partner_model_id + self.invisible_title_rec_id._compute_model_name() self.assertTrue(self.invisible_title_rec_id.required) # unlink self.invisible_rec_id.unlink() diff --git a/web_field_required_invisible_manager/views/views.xml b/web_field_required_invisible_manager/views/views.xml index 36965c139..7e1a9ba2c 100644 --- a/web_field_required_invisible_manager/views/views.xml +++ b/web_field_required_invisible_manager/views/views.xml @@ -1,5 +1,5 @@ - + view.model.form.inherit ir.model @@ -13,7 +13,7 @@ @@ -43,7 +43,7 @@ @@ -70,7 +70,7 @@ @@ -95,49 +95,241 @@ - - custom.field.restriction.form.view + + + custom.field.restriction.all.view.form custom.field.restriction - -
- - - - - - - - + + +
+

+ Required Field Rule

+

+ Invisible Field Rule

+

+ Readonly Field Rule

+
+ + + + + + + + + + + + + + + + + + + - - - - - + + + - - -
- +
+
+
+ +
+
- -
+ + custom.field.restriction.required.view.tree + custom.field.restriction + + + + + + + + + + + + + + + + + custom.field.restriction.invisible.view.tree + custom.field.restriction + + + + + + + + + + + + + + + + custom.field.restriction.readonly.view.tree + custom.field.restriction + + + + + + + + + + + + + + + + custom.field.restriction.all.view.tree + custom.field.restriction + + + + + + + + + + + + + + + + + + + + + + + + Required Fields + custom.field.restriction + tree,form + [('required', '=', True)] + {'show_required_form': True} + + + + + Invisible Fields + custom.field.restriction + tree,form + [('field_invisible', '=', True)] + {'show_invisible_form': True} + + + + + Readonly Fields + custom.field.restriction + tree,form + [('field_readonly', '=', True)] + {'show_readonly_form': True} + + + + + All Fields Restrictions + custom.field.restriction + tree,form + {'show_readonly_form': True, 'show_invisible_form': True, 'show_required_form': True, 'hide_title': True} + + + + + + + + + + + + +