[IMP] models: manage sub companies with check_company
Allow some models to be delegated to the main company of the object. For instance: * Have company Parent and Child * Child has access to all the accounts of Parent * When creating a document in Child using an account of Parent, there shouldn't be a consistency error. In order to do that, a new method `_check_company_domain` has been added. This method is used when `check_company=True` is set on the field declaration to: * filter relational fields in the UI [^1] * validate relational fields when writing on them in `create` and `write` That method should also be used in the business code for models likely to be shared amongst company branches instead of hardcoding the domain based on `company_id`. The same applies on domain restriction on the field declaration: the flag `check_company` should be prefered instead of providing the domain explicitly based on `company_id`. Since a lot of validation and filtering will now be done based on `parent_of`/`child_of` of the company, some support has been added for that special case in `filtered_domain` in order to avoid doing additional queries. task-3371677 [^1]: because of that change, support has been added on the python interpreter of the client to allow concatenatng domains. Part-of: odoo/odoo#125642
This commit is contained in:
@@ -895,6 +895,7 @@ class expression(object):
|
||||
""" Return a domain implementing the parent_of operator for [(left,parent_of,ids)],
|
||||
either as a range using the parent_path tree lookup field
|
||||
(when available), or as an expanded [(left,in,parent_ids)] """
|
||||
ids = [id for id in ids if id] # ignore (left, 'parent_of', [False])
|
||||
if not ids:
|
||||
return [FALSE_LEAF]
|
||||
left_model = left_model.with_context(active_test=False)
|
||||
|
||||
Reference in New Issue
Block a user