Отправить уведомление для определенной группы в odoo

Я хочу разослать уведомления всем в группе Manfacture, поэтому я попробовал этот код, но он не работает

manf_categ_ids=self.pool.get('ir.module.category').search(cr,uid,[('name','=','Manufacturing')],context=context)[0]
    users=self.pool.get('res.groups').browse(cr, uid, manf_categ_ids , context=context).users
    for user in users:
        recipient_partners = []
        recipient_partners.append(
            (4, user.partner_id.id)
        )       
    #user_ids=self.pool.get('res.users').search(cr,uid,[('groups_id','=',manf_categ_ids)],context=context)
    post_vars = {'subject': "notification about order",
         'body': "Yes inform me as i belong to manfacture group",
         'partner_ids': recipient_partners,} # Where "4" adds the ID to the list 
                                   # of followers and "3" is the partner ID 
    thread_pool = self.pool.get('mail.thread')
    thread_pool.message_post(
            cr, uid, False,
            type="notification",
            subtype="mt_comment",
            context=context,
            **post_vars)

проблема в том, что 2 пользователя принадлежат группе производителей, но список пользователей содержит только 1 элемент, и этот код не отправляет никаких уведомлений, когда я вхожу в систему с этим пользователем

2 ответа

Решение

Прежде всего, вам нужно использовать идентификатор партнера, а не идентификатор пользователя. Во-вторых, вам нужно добавить всех пользователей, а не только первого.

Это код, основанный на том, что я использую в своем проекте для создания массива, который можно использовать в качестве значения для partner_ids аргумент:

group = self.env['res.groups'].search([('category_id.name', '=', 'Manufacturing')])
recipient_partners = []
for recipient in group.users: 
    recipient_partners.append(
        (4, recipient.partner_id.id)
    )

Вы можете увидеть код, на котором он основан, здесь. Начинается с MessageTemplate send_group метод и продолжается в send метод.

Похоже, вы в настоящее время не используете новый API Odoo ORM. Вы можете начать использовать его (я очень рекомендую!) Или добавить аргументы, требуемые старым API (cr, uid, context), к search() метод и использование browse() чтобы получить полные пользовательские объекты.

Кажется, проблема в том, что вы очищаете список каждую итерацию.

Линия

recipient_partners = []

должен быть вне for петля.

Другие вопросы по тегам