Как я могу ограничить (запретить) создание продукта для некоторых пользователей? - PullRequest
0 голосов
/ 08 января 2019

enter image description here Я использую Odoo 9 и хочу отрицать создание продуктов для некоторых пользователей, например, для людей, которые занимаются продажами, я хочу, чтобы они имели доступ только к продуктам, которые уже созданы. Они не должны иметь права создавать новые продукты. Как мне это сделать? Любая идея для этого, пожалуйста?

product.py

class product_product(models.Model):
_inherit = "product.product"

@api.model
def create(self, vals):
if self.env.user.has_group('yor_module.your_group'):
    raise Warning(
        _('Sorry, you are not allowed to create new products.'),
    )
else:
    return super(product_product, self).create(vals)

security.xml

 <?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
    <record model="res.groups" id="your_group">
        <field name="name">Group of users who cannot create new products</field>
    </record>
</data>

1 Ответ

0 голосов
/ 08 января 2019

Эта функциональность должна выполняться с помощью правил, но, на мой взгляд, они непредсказуемы, и в этом случае они не дают вам возможности более гибко ограничивать ваши условия, если вы этого хотите. Я бы сделал следующее:

Сначала создайте новую группу безопасности в файле 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 - для ограничения целых групп -).

...