Эта функциональность должна выполняться с помощью правил, но, на мой взгляд, они непредсказуемы, и в этом случае они не дают вам возможности более гибко ограничивать ваши условия, если вы этого хотите. Я бы сделал следующее:
Сначала создайте новую группу безопасности в файле XML в вашем модуле (не забудьте добавить файл в __manifest__.py
/ __openerp__.py
):
<record model="res.groups" id="your_group">
<field name="name">Group of users who cannot create new products</field>
</record>
Затем переписать product.product
ORM create
метод и добавить ваши условия внутри:
@api.model
def create(self, vals):
if self.env.user.has_group('your_module.your_group'):
raise Warning(
_('Sorry, you are not allowed to create new products.'),
)
else:
return super(ProductProduct, self).create(vals)
Или используйте метод product.template
ORM create
, это не имеет значения, поскольку продукты наследуются от шаблонов при делегировании.
Если вы хотите, чтобы пользователи этой группы не писали и не удаляли продукты, наследуйте их от этих методов ORM и добавьте к ним аналогичное условие.
Вы должны добавить пользователей, которые не могут создавать продукты в вашей новой группе, вручную через интерфейс или добавить их (или даже целую группу пользователей) через XML, в котором вы создали свою группу (через параметры * 1019). * - для ограничения определенных пользователей - или implied_ids
- для ограничения целых групп -).