odoo res model document multi download

odoo表单相关的附件文档如果过多,逐个下载到本地也是一种负担,比较好的方式是提供一种打包下载的可选功能,既可以提高操作效率也可以减少网络下载流量

打包下载路径举例:
http://renjie.me/web/binary/download_attachment?model=project.task&id=1983

odoo views client reload action

odoo原生常用的reload动作,是整个框架的刷新,源码如下:

还有一个reload_context动作,整体刷新前会先刷新session上下文是否正常,源码如下:

现在需要对一些轻量级的通用场景进行视图层级的数据重载刷新支持,以提高用户体验的舒适度,核心代码如下:

之后就可以在odoo任何层级应用代码里跟调用reload和reload_context一样快捷方便的使用reload_view动作

odoo ldap plus admin mode local and remote password

双份密码
ODOO配置LDAP模式后,同一个用户有本地密码和LDAP密码,可相同也可不同,两个密码只要任意一个通过验证都可以登录系统

本地密码
本地密码修改需要先验证旧密码是否正确,根据上条定律任意一个本地或远程原密码通过验证即可更新本地新密码

远程密码
远程密码可以做为超级密码来不断重置本地密码

管理模式
配置新增ldap_binddn_admin布尔属性用于确认是否启用LDAP binddn管理员模式,即授权SUPERUSER直接修改用户LDAP远程密码

改密区别

  • 默认普通模式下三种情况:

1、本地和LDAP密码相同,本地和LDAP都更新为新密码
2、本地和LDAP密码不同,本地旧密码通过验证,直接更新本地新密码,但LDAP无法通过验证同步修改
3、本地和LDAP密码不同,LDAP旧密码通过验证,直接更新本地与LDAP新密码

  • 开启Admin管理模式统一:
    1、本地密码和LDAP密码只要通过一个旧密码验证就可以同步双写统一为新的密码

odoo tree view pagination disable unlimited

odoo列表视图分页默认80条记录,但可以点击切换选择200、500、2000、无限制,相关源码如下:

如果系统运行许久积累了大量数据,特别是互联网海量应用,这个无限制就造成了一个性能上的隐患

这里通过继承渲染分页方法,在点击分页信息动态生成记录条数选择的事件上优雅的移除掉最后一个无限制选项

odoo pivot graph view group by date format and order by date desc

分组日期格式自定义

排序日期默认倒序

odoo muilt domain dbfilter many to one config and code

odoo支持dbfilter配置用于实现多域名对应多账套,dbfilter是一个python标准正则字符串,并支持特殊的%h、%d这两个动态参数

根据源代码剖析(odoo8、odoo9)
openerp/http.py

由此可见,绝大部分有规律的映射需求都可以得到满足。惟有那些情况特殊,完全没有规则可言的:比如SEO需要、历史数据库命名混乱、甚至多个一级域名只对一个数据库的需求就悲剧了

这里举一个理想的openerp-server.conf扩展配置特例

首先新增支持%m特别参数,用来开启域名数据库映射复杂模式
其次新增支持dbfilter_前缀的域名映射独立配置指定数据库名称(www-zhunlian-net、www-higk-com)
最后迫不得已新增插入两行精炼的源代码

注:一个域名必备的.号在正则表达式领域可用于匹配任意字符,所以域名全称作为正则也可以根据需要匹配出一组数据库列表,如域名renjie.me可同时匹配出数据库名为renjie.me、renjie-me、renjie@me等等相似名称的数据库

centos install flash player projector content debugger

众所周知,Adobe Flash Player 11.2将是支持Linux平台的最后一个版本,不过Google Chrome自带的Flash Player Plugin版本不受这个限制,但Adobe将继续为Flash Player 11.2 for Linux提供安全更新

Flash基础环境除了依附浏览器的Plugin版本外,还有一种Projector版本,即独立播放器程序。虽然插件版已经支持64位系统了,但播放器版本官方始终只提供32位程序包下载

下载地址(含debug版本)
http://www.adobe.com/support/flashplayer/debug_downloads.html

Linux Help(2011年11月版本)
https://helpx.adobe.com/flash-player/release-note/readme-flash-player-linux.html

文档目前只有FP9和FP10的依赖库列表说明,最新也是最后版本的FP11详情很遗憾还未更新
为了避免安装不必要的32位旧依赖库,可以通过启动时缺少库提示来按需安装,如:

由于每个人的基础环境异同需要补上的32位库也不尽相同,记得上回安装Android SDK时大规模安装过一次,可能有些依赖相同的都省了,本次最终更新列表如下:

yum完上述i686基础依赖库,剩下的就是运行时报错的解决了,相关过程如下

GTK默认加载adwaita主题警告:

GTK默认加载PackageKit模块提示:

GTK默认加载libcanberra模块提示:

运行时闪退:

运行时无声:

折腾完毕之后运行flashplayer或flashplayerdebugger一切顺利

Odoo Bootswatch Theme fonts.googleapis.com访问速度慢

Odoo8的website模块自带Bootswatch系列主题集
Odoo9则将其独立为一个theme_bootswatch主题,可见将来主题也跟应用一样市场化了

其中某些子主题依赖谷歌fonts.googleapis.com字体,国内用户全天候访问不一定友好,可以选用360网站卫士提供的CDN服务替换以达到安全或加速的效果

360网站卫士官方说明http://libs.useso.com/

主题路径
odoo8/addons/website/static/src/css/bootswatch
odoo9/addons/theme_bootswatch

全局搜索“fonts.googleapis.com”替换成“fonts.useso.com”即可解决不稳定问题
也可以举一反三直接在odoo主目录暴力搜索替换以解决其它第三方应用或主题可能存在同样的问题

如何提交应用和主题至Odoo Apps市场

首先得有一个Odoo官网帐号,注册
https://www.odoo.com/web/signup

登录并提交您的Git仓库地址
https://apps.odoo.com/apps/upload
如:

注意:
仓库根目录每一个应用或主题都分别对应一个子目录(多个应用和主题一起发布机制)
仓库地址末尾添加#分支名称来指定版本分支(#在URL里称为锚)
分支名称用于匹配模块的系列版本号(可多个不同版本用于对应的系统版本)

仓库管理
https://apps.odoo.com/apps/dashboard/repos
一个应用多个分支版本需要分别多次提交
每个新提交仓库默认Draft状态,需要点击Scan操作变成Active状态后
就可以在My Apps中看到自己新发布的应用了
后续应用更新先提交对应分支版本
然后My Repos中执行Scan操作即可同步市场

我想出售自己的模块?
可以在官方的的应用程序平台上出售自己的模块。只要在模块描述文件__openerp__.py里简单的增加价格和货币项{‘price’: 49.99, ‘currency’: ‘EUR’}就可以开始销售您的模块。目前支持的货币为欧元和美元。官方要求在应用程序平台上出售的模块都有一个适当的描述,完整的功能截图和整体美观大方的展示页。关于如何实现这一目标,请参考以下部分的更多信息。官方保留三无模块的下架权利

我的模块要卖多少钱?
不要担心您工作应得的价值!如果有人需要你模块的功能,他们将为它支付。在任何情况下,这会使他们节约所开发的时间,所以你不应该低估你的工作。官方认为100欧元是一个很好的起点:)

我的模块如何拥有一个友好的图标和描述
从8.0版本开始,模块图标可放置于模块文件夹/static/description/icon.png
相关截图在模块描述文件中定义,可多个

富文本HTML描述则来自于模块文件夹/static/description/index.html
建议参照这个官方模板
https://github.com/odoo/odoo/blob/master/addons/crm/static/description/index.html

我的模块文档如何展示?
模块文件夹/doc/index.rst文件会被自动加载为文档。它必须是一个有效的RST文件

我的模块收入如何得到?
您在官方平台上模块收入的70%将会给你。只要发给他们每售出模块和价格编号的单据。你可以在你的销售仪表盘中找到这些信息(https://apps.odoo.com/apps/dashboard/sales)。考虑到处理这些单据需要时间请理解官方只处理累计总额不少于400欧元的单据

我的代码仓库是私有的怎么办?
要在官方平台上发布您的模块,他们需要被允许从您的私有库中读取。如果您在GitHub上,只要简单授权online-odoo用户访问即可。如果不是,您将需要授权官方的public SSH key来代替。最后不要忘记使用SSH地址来注册您的仓库好让他们确定使用SSH协议

我还有其他问题?
请直接联系官方邮箱apps@odoo.com,据说他们将会竭诚为您服务。。。

浏览器每次访问odoo自动向官方服务器发送公司database.uuid信息

Odoo是经典的Web富客户端应用,每次启动都需要预加载很多资源
但是突然有一个外域请求让人很奇怪:

初步分析是一个html link标签发出的get css请求,然后通过301跳转了一次还是空白返回。虽诡异但合规,所以浏览器也没有任何报错
关键就在于这个请求的文件名:2ad90276-9cfa-11e5-9d21-5ce0c51da5ec.css
前缀其实就是系统参数里的database.uuid信息值
这就说明odoo官方其实是可以根据这个估算出每个实施项目的用户情况统计

但对于访问用户来说,虽然是异步请求,但只要没意义多一个都嫌多,特别是内网用户
经过阅读源码发现统计请求来自mail模块(Discussions, Mailing Lists, News)里的announcement.js,其几十行javascript代码随便注释下就可以搞定

刚巧最近在研究应用开发,知道前后端的模版都可以通过继承的方式来进行间接修改
那样最大的好处是官方的源码可以随时同步更新而不用担心直接修改带来的合并冲突
从前端架构的角度来说,模版的继承特性比模块类的继承特性难度大多了,查了下官方文档果然有记载模块类重载的方法

最终根据odoo8和odoo9的异同点特性不断精炼,得到如下兼容代码:

虽然简洁,但不能直接拿来即用,但懂应用开发的朋友绝对一看便知:)