Чтобы позволить пользователю (из "Группы X") изменять объекты res.partner, которые были созданы им, и позволять изменять child_ids объектов res.partner, которые были созданы кем-либо:
сначала создайте группу «Группа X» с правами: a) r, w, c, u на res.partner; b) r, w, c на ir.property.
Затем создайте класс, который наследуется от res.partner и переопределите метод write
.
# -*- coding: utf-8 -*-
class InheritedResPartner(models.Model):
"""Description"""
_inherit = 'res.partner'
@api.multi
def write(self, vals):
is_in_group = 'Group X' in map(lambda x: x.name, self.env.user.groups_id)
if is_in_group:
operation = 'write'
owns_record = self.create_uid == self.env.user
if owns_record:
True
else:
allowed = True
# Do all checks further and set `allowed` to either True or False
...<omitted intentionaly> put your logic here
#
if not allowed:
raise AccessError(_('The requested operation cannot be completed due to security restrictions. Please contact your system administrator.\n\n(Document type: %s, Operation: %s)') % (self._description, operation))
return super(InheritedResPartner, self).write(vals)
Примечание: мы предоставляем полные права на res.partner, но переопределим метод записи и вызовем AccessError, если обнаружено нежелательное действие.