2015-01-31 1 views
1

Я хочу, чтобы отправить notificaton для все в manfacture группы, так что я попробовал этот код, но он не работаетОтправить уведомление для конкретной группы в odoo

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

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

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

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

Вы можете увидеть the code this is based on here. Он начинается с метода MessageTemplate send_group и продолжается до send.

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

+0

Спасибо за ваш повтор, но я изменил свой код, чтобы он выглядел как ваш (без использования нового odoo api), но все же этот код отправляет только уведомление для администратора, но другие пользователи, принадлежащие к группе производителей, не получают никакого уведомления об их сообщениях Я не знаю, почему? У вас есть идея, почему только пользователи содержат только администратор. – Soaad

+0

Попробуйте убедиться, что список 'users' действительно содержит пользователей, которых вы хотите. –

+0

Этот вопрос, почему список пользователей содержит только администратор, а остальные пользователи, которые являются пользователем или менеджером в группе производства, не отображаются в этом списке. – Soaad

5

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

Линия

recipient_partners = [] 

должно быть из петли for.