Commit Graph

9 Commits (15e23fefd4d58fdfda906c8ed35c605c259ed4c2)

Author SHA1 Message Date
Mark Schuit 292da0f91e [FIX] base_changeset: permission errors on models and fields
Fixes

```
Traceback (most recent call last):
  File "/home/odoo/15.0/parts/server-tools/base_changeset/tests/test_changeset_flow.py", line 63, in test_new_changeset
self.partner.write({"name": "Y", "street": "street Y", "street2": "street2 Y"})
  File "/home/odoo/15.0/parts/odoo/odoo/addons/base/models/res_partner.py", line 603, in write
result = result and super(Partner, self).write(vals)
  File "/home/odoo/15.0/parts/server-tools/base_changeset/models/base.py", line 97, in write
if self._changeset_disabled():
  File "/home/odoo/15.0/parts/server-tools/base_changeset/models/base.py", line 111, in _changeset_disabled
if self._name not in self.models_to_track_changeset():
  File "<decorator-gen-123>", line 2, in models_to_track_changeset
  File "/home/odoo/15.0/parts/odoo/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
  File "/home/odoo/15.0/parts/server-tools/base_changeset/models/base.py", line 71, in models_to_track_changeset
models = self.env["changeset.field.rule"].search([]).mapped("model_id.model")
  File "/home/odoo/15.0/parts/odoo/odoo/models.py", line 5464, in mapped
recs = recs._fields[name].mapped(recs)
  File "/home/odoo/15.0/parts/odoo/odoo/fields.py", line 1180, in mapped
self.__get__(first(remaining), type(remaining))
  File "/home/odoo/15.0/parts/odoo/odoo/fields.py", line 1089, in __get__
record._fetch_field(self)
  File "/home/odoo/15.0/parts/odoo/odoo/models.py", line 3276, in _fetch_field
self._read(fnames)
  File "/home/odoo/15.0/parts/odoo/odoo/models.py", line 3290, in _read
self.check_access_rights('read')
  File "/home/odoo/15.0/parts/odoo/odoo/models.py", line 3547, in check_access_rights
return self.env['ir.model.access'].check(self._name, operation, raise_exception)
  File "<decorator-gen-33>", line 2, in check
  File "/home/odoo/15.0/parts/odoo/odoo/tools/cache.py", line 90, in lookup
value = d[key] = self.method(*args, **kwargs)
  File "/home/odoo/15.0/parts/odoo/odoo/addons/base/models/ir_model.py", line 1820, in check
raise AccessError(msg)
odoo.exceptions.AccessError: You are not allowed to access 'Models' (ir.model) records.

This operation is allowed for the following groups:
- Administration/Access Rights
- Changeset Validations

Contact your administrator to request access if necessary.
```
2023-07-03 13:21:01 +02:00
Stefan Rijnhart 8557d1163f [RFR] base_changeset: adapt intercept of create to Odoo 14 cache changes 2022-11-09 11:39:34 +01:00
Stefan Rijnhart d77f2a803e [IMP] base_changeset: black, isort, prettier 2022-11-09 11:39:34 +01:00
Holger Brunn 47fbaeda11 [IMP] base_changeset: overhaul security 2022-11-09 11:39:34 +01:00
Holger Brunn 9a21deb571 [IMP] base_changeset: Inhibit creating records with restricted fields too 2022-11-09 11:39:34 +01:00
Holger Brunn 09886ed786 [IMP] base_changeset: Make it impossible to set context key from outside 2022-11-09 11:39:34 +01:00
Stefan Rijnhart 717cb6c944 [FIX] base_changeset: fix caching
ormcache is used to minimize the number of times that the active changeset
rules are quered, but it was still missing in one important place.

In this module's tests, this reduces the number of calls to
`models_to_track_changeset` from 354 to 135 times, and the number of test
queries is reduced from 4069 to 3810.
2022-11-09 11:39:34 +01:00
Dariusz Kubiak 1fc53a4958 [FIX] base_changeset: fix write return type 2022-11-09 11:39:34 +01:00
Andrea c1e3fa0f19 [13.0][ADD] base_changeset 2022-11-09 11:39:34 +01:00