odoo 消息
1 2 3 4 5 6 7 8 9 10 11 12 13 | # def click_created(self): # sender = self.env['res.partner'].browse(2) # receiver = self.env['res.partner'].browse(6) # message = self.env['mail.message'].create({ # 'subject': '测试消息标题', # 'body': '消息体', # 'author_id': sender.id, # 'partner_ids': [(4, receiver.id)] # }) # thread = receiver.message_ids # x = thread.write({'message_id': [(4, message.id)]}) # print(x) # print(dir(x)) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | def click_created( self ): # sending message id = self .env.user. id sender = self .env[ 'res.partner' ].browse( id ) receiverobj = self .env[ 'res.partner' ].search([( 'name' , '=' , 'manager' )], limit = 1 ) receiver = self .env[ 'res.partner' ].browse(receiverobj. id ) print (sender.name, '|||||' , receiver.name) try : print ( 'sender id' , sender. id ) print ( 'receiver id id' , receiver. id ) channel_odoo_bot_users = '%s, %s' % (sender.name, receiver.name) channel_obj = self .env[ 'mail.channel' ] channel_id = channel_obj.search([( 'name' , 'like' , channel_odoo_bot_users)]) print (channel_id) print ( dir (channel_id)) if not channel_id: channel_id = channel_obj.create({ 'name' : channel_odoo_bot_users, # 'email_send': False, 'channel_type' : 'chat' , # 'public': 'private', # 'channel_partner_ids': [(4, sender.id), (4, receiver.id)] 'channel_partner_ids' : [( 4 , receiver. id )] }) channel_id.message_post( subject = "Timesheet reminder" , body = "测试发消息啊..." , message_type = 'comment' , subtype_xmlid = 'mail.mt_comment' , ) except Exception as e: print (e) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2019-05-13 Flutter:教你用CustomPaint画一个自定义的CircleProgressBar
2019-05-13 Flutter裁剪图片
2019-05-13 Flutter 实现图片裁剪
2019-05-13 soundpool
2019-05-13 声音
2019-05-13 Flutter Image(图片)