# HG changeset patch # User Houzefa Abbasbhay <houzefa.abba@xcg-consulting.fr> # Date 1548866861 -3600 # Wed Jan 30 17:47:41 2019 +0100 # Branch 11.0 # Node ID 701c1b30d399c60f5a950bebbf9895caf81fee5f # Parent 92102b656827d810a9b4c5f5cfdffa78e3a357b3 Bound analytic codes: Bypass security rules Behind-the-scenes objects; main object security rules are enough. diff --git a/MetaAnalytic.py b/MetaAnalytic.py --- a/MetaAnalytic.py +++ b/MetaAnalytic.py @@ -444,7 +444,8 @@ # inherits. code_obj = self.env["analytic.code"] code_vals["nd_id"] = self._get_bound_dimension_id() - code = code_obj.create(code_vals) + # These are behind-the-scenes links so bypass security rules. + code = code_obj.sudo().create(code_vals) vals[column] = code.id new_code = code @@ -502,7 +503,8 @@ self._generate_code_ref_id(res) if new_code: - new_code.write( + # These are behind-the-scenes links so bypass security rules. + new_code.sudo().write( {"origin_id": "{},{}".format(self._name, res.id)} ) @@ -581,12 +583,18 @@ rec_code_vals["origin_id"] = "{},{}".format( self._name, rec.id ) - rec_vals[column] = code_obj.create(rec_code_vals).id + # These are behind-the-scenes links so bypass security + # rules. + rec_vals[column] = ( + code_obj.sudo().create(rec_code_vals).id + ) super(superclass, rec).write(rec_vals, **kwargs) elif rec_code_vals: - code.write(rec_code_vals) + # These are behind-the-scenes links so bypass security + # rules. + code.sudo().write(rec_code_vals) if code_ref_ids and news is not False: for new in news: @@ -611,7 +619,8 @@ res = super(superclass, self).unlink() - codes.unlink(**kwargs) + # These are behind-the-scenes links so bypass security rules. + codes.sudo().unlink(**kwargs) return res @@ -633,7 +642,8 @@ "analytic dimension {}".format(dimension_name) ) if code_vals: - force_code.write(code_vals) + # These are behind-the-scenes links so bypass security rules. + force_code.sudo().write(code_vals) if sync_parent: # This function is called as a method and can be overridden.