Odoo是完全开源的软件,查看network请求,会发现经常会出现外域请求至odoo.com.
在odoo10中,其相关代码来自 mail模块 update.py
可寻找以下代码,然后简单处理,即可不发送使用者消息至官方。
class PublisherWarrantyContract(AbstractModel): _name = "publisher_warranty.contract"
Odoo是经典的Web富客户端应用,每次启动都需要预加载很多资源
但是突然有一个外域请求让人很奇怪:
Remote Address:195.154.55.54:443 Request URL:https://services.openerp.com/openerp-enterprise/ab/css/2ad90276-9cfa-11e5-9d21-5ce0c51da5ec.css Request Method:GET Status Code:301 Moved Permanently ===============》 Content-Length:184 Content-Type:text/html Location:https://www.odoo.com/openerp-enterprise/ab/css/2ad90276-9cfa-11e5-9d21-5ce0c51da5ec.css Server:nginx/1.6.3 Remote Address:195.154.55.54:443 Request URL:https://www.odoo.com/openerp-enterprise/ab/css/2ad90276-9cfa-11e5-9d21-5ce0c51da5ec.css Request Method:GET Status Code:200 OK ===============》 Connection:keep-alive Content-Length:0 Content-Type:text/css Server:nginx/1.6.3
初步分析是一个html link标签发出的get css请求,然后通过301跳转了一次还是空白返回。虽诡异但合规,所以浏览器也没有任何报错
关键就在于这个请求的文件名:2ad90276-9cfa-11e5-9d21-5ce0c51da5ec.css
前缀其实就是系统参数里的database.uuid信息值
这就说明odoo官方其实是可以根据这个估算出每个实施项目的用户情况统计
但对于访问用户来说,虽然是异步请求,但只要没意义多一个都嫌多,特别是内网用户
经过阅读源码发现统计请求来自mail模块(Discussions, Mailing Lists, News)里的announcement.js,其几十行javascript代码随便注释下就可以搞定
刚巧最近在研究应用开发,知道前后端的模版都可以通过继承的方式来进行间接修改
那样最大的好处是官方的源码可以随时同步更新而不用担心直接修改带来的合并冲突
从前端架构的角度来说,模版的继承特性比模块类的继承特性难度大多了,查了下官方文档果然有记载模块类重载的方法
最终根据odoo8和odoo9的异同点特性不断精炼,得到如下兼容代码:
openerp.none_odoo = function(instance, local) { instance.web.WebClient.include({ show_annoucement_bar: function() { // 8.0 return; }, show_announcement_bar: function() { // 9.0 return; } }); }
虽然简洁,但不能直接拿来即用,但懂应用开发的朋友绝对一看便知:)