odoo14 mail.thread邮件消息机制(发送消息、字段变化跟踪记录)mail.activity.mixin安排活动
odoo内部的消息机制是十分便捷的,可以使用odoo 系统消息进行沟通,也可以通过odoo代发邮件进行沟通。
通过点击系统右上角的用户名,在弹出的下拉框中选择 ‘首选项‘ ,我们可以设置email选项:使用邮件处理 或 在Odoo内处理。这里我们选择在erp内使用
如果希望使用邮件处理消息 那么需要配置odoo 的邮件服务,可以参考这篇文章链接:
https://blog.csdn.net/Srekal/article/details/114824151
1.odoo里面字段追踪消息通知机制:
一、使用方式:1、在定义模型的py文件里继承mail.threadshix模型:
class DemoModle(models.Model):
""" 模型名称 """
_name = 'demo.model' # 定义 模型名(类名) 必写
_rec_name = 'name' # 定义 模型引用时 显示的默认字段 非必写
_description = 'demo model' # 定义数据库中的表名 非必写
_inherit = ['mail.thread', 'mail.activity.mixin'] # 集成消息模型 增加消息记录通知功能一、 odoo14里是:tracking=True
user_id = fields.Many2one('res.users', string='Salesperson', index=True, tracking=True) add_follow_ids = fields.Many2many('hr.employee',string=u'关注者')二、 odoo12里面是:track_visibility
inout = fields.Selection(string="InOut", selection=[('Import', '进口'), ('Export', '出口'), ], track_visibility='always',) contract_num = fields.Char(string="Contract Num", track_visibility='onchange')为了对字段进行监听,只需要将track_visibility 属性设置为onchange(当字段值改变时展示在通知中)
always(该值总是会被显示在通知中,一般用于让通知内容更好理解)注意:
One2many和Many2many字段不生效 具体原因可以查看odoo源码中odoo/addons/mail/models/mail_tracking_value.py 中45行create_tracking_values函数中的处理
如果想要实现记录Many2many字段,请参考我这篇文章: https://blog.csdn.net/weixin_44863237/article/details/124169556
二、在xml文件form视图添加
<form>........<div class="oe_chatter"><field name="message_follower_ids" widget="mail_followers"/><field name="activity_ids" widget="mail_activity"/><field name="message_ids" widget="mail_thread"/></div>
</form>
效果:
2.odoo里面消息通知机制:
1.发送消息
message_post(self, body='', subject=None, message_type='notification', subtype=None, parent_id=False, attachments=None, content_subtype='html', **kwargs)
在一个会话列表中发布一条新消息,返回新的mail.message
ID
- body (str) - 消息内容,一般是原始html,会自动进行过滤
- message_type (str) - 与mail_message.type字段对应
- content_subtype (str) - 如果是
plaintext
(纯文本),会被转成html - parent_id (int) - 用于当在消息列表时以私信形式回复时使用,对应父级partner
- attachments (list(tuple(str,str))) - 使用(name,content)元组传送的附件列表,content是base64encode过的
- **kwargs - 其他的参数用于创建新mail.message记录
2.接收消息
1.message_new(msg_dict, custom_values=None)
当收到的消息不属于一个已存在的讨论列表时由message_process
调用
- msg_dict (dict) - 一个包含email内容和附件的映射表,具体看:message_process, mail.message.parse
- custom_values (dict) - 可选参数,附加的用于传递给记录创建的create()方法的字段,注意这里面的值可能会覆盖邮件里的内容。
2.message_update(msg_dict, update_vals=None)
当一个收到已存在的讨论列表的消息时由message_process
调用
- template_id - 用于渲染消息主体的模板id
- **kwargs - 用于创建mail.compose.message(继承自mail.message) wizzard的参数
3.关注者管理
1.message_subscribe(partner_ids=None, channel_ids=None, subtype_ids=None, force=True)
添加参与者
- partner_ids (list(int)) - 当前记录对应的订阅的伙伴id列表
- channel_ids (list(int)) - 订阅的渠道列表
- subtype_ids (list(int)) - 所订阅的子类,默认None
- force - 当值为true时会根据subtype来创建新关注关系(原关注关系会先删除)
返回:boolean 是否成功
2.message_subscribe_users(user_ids=None, subtype_ids=None)
将message_subscribe封装,只是用用户替代partner
- user_ids (list(int)) - 当前记录对应的订阅的用户id列表,如果是None订阅当前用户
- subtype_ids (list(int)) - 渠道或合作伙伴所订阅的子类id
3.message_unsubscribe(partner_ids=None, channel_ids=None)
将合作伙伴从记录的订阅列表移除
- partner_ids (list(int)) - 订阅该记录的伙伴id列表(官方是这样的,也许应该是取消订阅)
- channel_ids (list(int)) - 订阅该记录的渠道列表(官方是这样的,也许应该是取消订阅)
4.message_unsubscribe_users(user_ids=None)
封装message_unsubscribe,用user替代partner
- user_ids (list(int)) - 取消订阅的用户id列表,为空时用当前用户
def btn_add_follow(self):"""自动添加关注者"""partner_ids= []for employee in self.add_follow_ids:if employee.user_id.partner_id:partner_ids.append(employee.user_id.partner_id.id)self.message_subscribe(partner_ids=partner_ids )"""自定义发消息:在form表单下面显示的那一种"""p_ids= []for line in self.message_follower_ids:p_ids.append(line.partner_id.id)self.message_post(body='%s-%s测试消息发给关注者' % (self.name,self.create_uid.name),subject = '邮件主题:', partner_ids = p_ids)
odoo活动日程安排
活动
是mail模块中的一部分,我们可通过继承mail.activity.mixin实现在chatter中选择性的启用该功能。与mail.thread模型类似,mail.activity.mixin也是抽象模型。
活动有不同的类型。默认我们可以创建诸如Email、Call、Meeting和To-Do。我们可以在Settings | Technical | Email | Activity Types添加新的活动类型。
如果你想实现代码自动关联活动,我们可以通过mail.activity.mixin模型中的activity_schedule()方法实现。如下:
@api.modeldef create(self, vals_list):res = super(PurchaseApplication, self).create(vals_list)res.activity_schedule('mail.mail_activity_data_todo', summary='到期提醒', date_deadline=res.reminder_time1,user_id=self.env.user.id)return res
参考文章:https://www.cnblogs.com/1314520xh/p/14646061.html
https://www.jianshu.com/p/84c6518d7dbf
补充:oe_chatter类的作用及使用方式
https://en.ngasturi.id/2021/02/10/how-to-record-the-data-changes-in-odoo/
odoo14 mail.thread邮件消息机制(发送消息、字段变化跟踪记录)mail.activity.mixin安排活动相关推荐
- Android 手机卫士--解析json与消息机制发送不同类型消息
本文地址:http://www.cnblogs.com/wuyudong/p/5900800.html,转载请注明源地址. 1.解析json数据 解析json的代码很简单 JSONObject jso ...
- mfc编程消息机制中消息汇总
做VC开发必须熟悉消息机制,笔试面试重点,自己在这方面很欠缺,搜集学习一下 WM_CREATE CreateWindow 初始化工作 GetMessage 遇到WM_QUIT,程序结束 Dispatc ...
- Threadx 消息队列-发送消息_tx_queue_send
消息队列-发送消息_tx_queue_send 1,发送消息会插入到队列尾部. 2,如果消息队列有挂起的接收线程,发送消息时,可以直接把消息放到接收线程的缓冲中,这可以降低消息传递延时. TX_THR ...
- 微信小程序订阅消息定时发送消息
微信小程序订阅消息定时发送消息 本人专注使用云开发,实现一个前端可以做后端以及整个项目的部署与上线. 如果觉得我讲的好就可以给我点个赞.也可以加我微信了解详情. 1.我们先要了解什么是订阅消息 而现在 ...
- iOS的消息机制和消息转发
1.消息机制 RunTime简称运行时.就是系统在运行的时候的一些机制,其中最主要的是消息机制. 对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 ).编译完成之后直接 ...
- 融云发送图片消息_发送消息
发送消息 文本消息¶ import { sendMessage, ConversationType, ObjectName } from "rongcloud-react-native-im ...
- java给qq发消息_QQ发送消息
我们做一个小程序,简单实现QQ发送消息的功能. 先定义一个消息类,里面有消息的属性(来自哪里,发送到哪,消息内容).然后定义一个测试类测试我们的运行结果,输出发送消息的内容.测试类里面需要一个Map来 ...
- 环信服务器发送消息ext,发送消息
发送消息 聊天相关 API,可以发送文本消息,发送图片消息,发送语音消息,发送视频消息,发送透传消息和发送扩展消息. 发送文件类型消息要先把文件上传到环信服务器,参考文档:文件上传下载 REST接口发 ...
- mfc大观之五、六(消息机制和消息运行)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 写过windows程序的朋友都知道,win32主要是利用消息进行界面的编写的.那么在mfc中, ...
最新文章
- 用C语言解“分段计算居民水费”题
- 安装Cornerstone3.1注意点
- 灵活使用DataView
- GBDT和XGBoost
- 【Elasticsearch】需要监控的 10 大 Elasticsearch 指标
- (1)安装----anaconda3下配置pyspark【单机】
- oracle删除临时表空间语句,Oracle中临时表空间的清理
- ORA-01476: divisor is equal to zero解决方法
- java前后端分离(增删查改)
- 【LVGL】animation动画路径方式介绍
- .bss段和.data段引起的文件大小增加
- 信息 按顺序打印commit_Git 工作流,看这一篇就够了
- 【Android Gradle 插件】Splits 配置 ③ ( Splits#density{} 脚本块配置 | 根据屏幕像素密度进行分包 | DensitySplitOptions 配置简介 )
- 【Android -- Material Design】CollapsingToolbarLayout 的基本使用
- android 3d车辆轨迹,极限汽车轨迹3D游戏
- 读叔本华之《人生的智慧》
- 使用CStdioFile::ReadString来逐行读取文件
- 现在的你对未来什么规划?
- Android 7.0 删除原生输入法(AOSP)更换系统默认输入法
- 深度学习mask掩码机制