Отправить уведомление для определенной группы в 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
петля.