喜马拉雅APP:免费领取29天VIP会员
如何获取:下面链接中输入手机号,接收验证码领取,下载喜马拉雅APP使用
得到APP:免费听书两个月VIP
如何获取:打开得到APP——我的——卡券——兑换卡券——输入“平平安安”
电子图书免费读(电脑在线阅读)
机械工业出版社清华大学出版社,2月16日前北京外国语大学外语在线学习平台全国报刊索引,2月29日前,免费注册后,每个帐号每天可下载全文内容100次,50幅图片(图片库)
这个示例将创建一个菜单,点击触发一个客户端动作,关联js定义的对象,显示相应模板
这个示例包括下面三个文件
static/src/xml/client_action.xml
HelloJS
显示<div>Display HelloJS</div>
static/src/js/client_action.js
HomePage
继承于web.AbstractAction
HelloJS
模板init
方法和start
方法HomePage
对象注册为动作:HelloJS_tag
views/client_action.xml
web.assets_backend
加载JS文件HelloJS_tag
1、定义模板文件static/src/xml/client_action.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
2、定义JS文件static/src/js/client_action.js
1 | odoo.define('hello.js', function (require) { |
3、创建视图文件views/client_action.xml
1 | <?xml version="1.0" encoding="UTF-8"?> |
4、在__manifest__.py
文件中引入XML文件
1 | 'qweb': [ |
在Chrome浏览器的Console控制台中,使用console.log()
命令可以输出js变量或字符串,但如何将这些输出保存到文件中呢
使用log4b.js可以实现输出保存到文件,这个功能可用于在console中使用xpath获取页面内容并保存到文件
1、载入log4b
js原生的console.log()
无法输出到文件,下载log4b.js文件,复制log4b.js
的内容到console中执行
2、创建log4b对象
在console中执行
var Log4b = new log4b();
3、输出内容
使用Log4b.log()
替代console.log()
来输出内容
4、导出到文件
使用Log4b.downloadLog()
可以下载由Log4b.log()
输出的内容
getLog: get log show on the console tab
downloadLog: download the log
clear: clear all saved log
log: write log
lines: get how many lines of log
search: search a string
self.realTimeLoggingOn = true; // log in real time (forwards to console.log)
self.useTimestamps = false; // insert a timestamp in front of each log
self.recordLogs = true; // set to false after you're done debugging to avoid the log eating up memory
self.maxLines = 2500; // if autoTrim is true, this many most recent lines are saved
self.lineMaxChars = 1500; // if one log is max than lineMaxChars, it will be cut
self.logFilename = 'log4b.txt'; // filename of log downloaded with downloadLog()
self.lineBreak = '\n\n';
Odoo shell是一个交互式命令行工具,它类似Python shell或Django shell一样,可以在开发过程中调试Odoo内置对象和API函数,比如:测试对象有哪些属性和方法,或是测试API调用的返回是否达到预期
在命令行输入下面指令即可启动Odoo shell:
python3 odoo-bin shell -c odoofile/odoo.conf -d test
Odoo shell有下面几种类型
通过参数shell-interface可以指定shell类型,如下所示使用ipython启动shell
python3 odoo-bin shell -c odoofile/odoo.conf --shell-interface ipython -d test
shell启动后提供以下几个变量
1、获取模型列表
registry是Odoo实例维护的信息中心,通过env.registry获取
env.registry.models
可以获取当前Odoo实例的模型列表,返回ModelClass和Model字典键值对
2、查看常用模型
示例:product.product是ModelClass,odoo.api.product.product是Model
1) 获取model的两种方式
2) 访问基类
odoo.api.product.product 的基类可以通过env.registry.get('product.product').__bases__
访问
3、操作记录集
env['product.product'].search([])
rec.name
rec.write()
实现后效果如图所示,增加了范围类型、范围开始日期、范围结束日期和一个生成按钮
1、开发前找到修改目标
首先激活开发者模式,通过菜单Settings | Technical | Sequences
进入序列编辑界面,通过菜单Open Developer Tools | Edit View: Form
查看表单视图,得到需要修改的模型为ir.sequence
,视图为base.sequence_view
(为了排除翻译导致的名称不一致,这里菜单名和截图使用英文的)
2、创建模块
进入自己的模块目录中,使用脚手架生成模块结构
cd C:/Project/odoo12-x64/source\odoo\custom-addons
C:\Project\venv\odoo12\Scripts\python.exe C:/Project/odoo12-x64/source/odoo-bin scaffold myapp_sequence
3、继承序列模型,添加设置日期范围的字段
1 | #models/models.py |
4、继承序列表单视图,添加字段和按钮
1 | <!-- views/views.xml --> |
其中
class="oe_edit_only oe_highlight"
表示按钮编辑时可见
attrs="{'invisible': [('use_date_range', '=', False)]}"
表示字段use_date_range
为False时隐藏
5、为按钮添加事件函数
1 | #models/models.py |
6、安装并使用模块
从应用中安装这个模块,进入序列号编辑表单,选择范围类型,范围开始日期和结束日期,点击创建日期范围,将清除之前的日期范围,按照规则重新创建日期范围