1 Traceback (most recent call last): File , in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File , in dispatch result = self._call_function(**self.params) File , in _call_function return checked_call(self.db, *args,…
1.检查业务逻辑中的错误,终止代码执行,显示错误或警告信息: raise osv.except_osv(_('Error!'), _('Error Message.')) 示例代码: #删除当前销售单,需要验证销售单的状态 def unlink(self, cr, uid, ids, context=None): for rec in self.browse(cr, uid, ids, context=context): if rec.state not in ['draft']: raise…
odoo开发笔记 -- div标签代替odoo button写法 并调用自定义js <footer> <div id="confirm_request_cloud_report" class="btn btm-sm button oe_highlight" style="font-size:12px;">确定</div> <button special="cancel" string=…
odoo开发笔记 -- 搜索视图继承扩展…
odoo开发笔记 -- 后台日志输出及分析 附:日志分析软件…
场景描述: 恢复Odoo数据后,抛出错误导致无法进入页面 -- ::, INFO aeo odoo.addons.base.ir.ir_attachment: _read_file reading /var/lib/odoo/filestore/aeo//576746a590a5ec2384a9428a907bc44e9117ee1e Traceback (most recent call last): File , in _file_read r = open(full_path,'rb').…
场景描述: odoo.conf文件指定了数据库配置,如果docker打包的时候,没注意,新环境启动该镜像,会导致并没有连接本地的数据库,如果你配置文件中的数据库地址,当前这台服务器也可以访问到,那么问题就来了,启动之后,会将源先的应用数据库直接清空或覆盖掉,部署的时候,这块必须注意.…
场景描述: 更新代码,重启服务服务后,odoo后台报错,提示关键字:in resolve_deps field = model._fields[fname]  KeyError: 'entry_id' 没有其他信息了,一头雾水,因为最近修改代码文件比较多,代码中用到字段“entry_id”的地方很多,一下不知是哪块的问题... 如下图: 从输出的异常日志可以看出,是模型依赖的问题.于是开始网上查询类似案例,找到如下一则: https://www.odoo.com/zh_CN/forum/help…
python中一切皆对象! odoo基于python开发,那么odoo中也可以理解成一切皆对象. 我们在python中定义类的时候,一般会用到self,用来表示当前对象自己. 那么odoo中的self除了python语法中,自带的用法,还有哪些特殊的用法呢? 一:self是什么 目前新版的Odoo中使用到的self,是对  游标cr.用户ID.模型.上下文.记录集.缓存  的封装. 我们可以通过 self.XX 获取到这些封装的东西,比如:self.cr.self.uid. 二:通过直接设置属性…
(1) odoo视图字段,如果是readonly,默认该数据是不会往后台传递的,因此,保存数据的时候,该字段的数据是不会存到数据库中的.(待确认,字段中增加默认值,保存) (2)视图界面,注释的时候,一般情况,饿哦们认为注释的代码,启动服务时,就不会被解释:其实不是,当视图中没有涉及变量的action视图ID引用指向的时候,这种情况下,确实没有影响:但是,如果被注释的该段代码,包含了引用另一个窗口视图的ID,即使注释掉,当你更新升级模块的时候,还会加载,出现视图外部extend id找不到的异常…
在odoo设置界面,点击用户,进入用户配置界面,会看到: 访问权 | 个人资料菜单 在访问权 page菜单界面,可以看到系统预制的一些模块都会显示在这里, 那么,我们自己开发的模块如何显示在这块呢,从而方便在创建用户的时候,给该用户访问我们自己开发模块的权限! 实现方式: 在odoo后台代码中增加两个文件,并在__manifest__.py中申明引用这两个文件. 具体编写: 新建两个文件夹: (1) 在自己模块根目录下,创建data 和 security 两个目录,一般这两个目录也是平时odoo…
odoo有着强大的消息记录.通知机制: 实际开发中,常常会有客户的需求,页面上form视图中的某些字段不允许反复修改, 假如有的用户修改了,恶意搞坏,往往容易给公司利益造成损失,或破坏,那么如何有效的记录相关用户的操作, 提供一定的安全审计功能? 别担心,odoo已经为我们考虑到了!!! 下面我们就来介绍下, 首先,先保证整体基本的消息记录功能,两个地方需要修改,模型和form视图 在你需要消息记录的模型申明中,添加如下红色部分代码: class TestModle(models.Model):…
附件上传基本原理实现,可以参考这篇: https://www.cnblogs.com/ljwTiey/p/7348291.html http://blog.csdn.net/wangnan537/article/details/41903159 首先我们看一下odoo界面默认的附件功能,有木有感觉不是很友好!囧 :) 下面给小伙伴们介绍另一种odoo自带的附件管理方式! 首先,在你的模型中增加如下定义: ##############################################…
       Odoo的市场定位是SME(中小型企业),这个市场的ERP产品,多如牛毛,产品各具特色.不过,Odoo的自动化处理机制,可以睥睨天下,无人能及.包括一些大型国产软件,如用友.金蝶也不具备如此强大的自动化业务处理功能.Odoo的业务自动化机制,可以非常容易地扩充ERP系统功能,非常容易地让业务工作自动化. Odoo自动化动作 如下图,增加一个自动化动作,“自动删除过期的SaaS DB”.系统会按定义好的条件筛选出符合条件的数据记录(业务对象),自动执行定义好的Server Actio…
场景描述: odoo模块化开发的架构理念,科学&高效, 可以让很多业务场景,尽可能松耦合:让开发人员的主要精力,关注在当前的业务逻辑: 所谓「前人栽树,后人乘凉」,模块整体好比一棵大树, 开发过程中,你发现了大树的某个枝干上[模块下某个类]前人挂了个牌儿A-B, 上边书道:“该枝干继承了某根节点[父类A]的功能,并扩展了它的方法!”, 有一天,原大树枝繁叶茂,根部延长出另一棵树[原模块的扩展模块], 此时呢,新树上的某个枝干,也要继承之前那个根节点A,并扩展它的方法, 同样需要在该枝干上挂个牌儿…
开发中经常有这样的场景,需要给某个日期或者时间的字段默认值: 例如: 日期,默认今天 时间,默认当前时间 可以在odoo模型定义中进行设置, 如下样例提供参考: test_data = fields.Date(string=u"日期", default=fields.Date.today) # 默认值为:当天 test_time = fields.Datetime(string=u"时间", default=fields.Datetime.now) #默认值为:系统…
场景描述: 在已启动开发的模块中,odoo顶部一级菜单只有一个“会员管理”,需求是:在同一级顶部菜单,增加新菜单“产品管理”.举例如图:       处理方式: 按照odoo的机制,实现这种效果,可以通过多种方式: 1. 新增加一个独立模块,用作 “产品管理” 2. 共用一个模块,开发者模式下,通过对菜单进行配置,实现效果.(弊端:程序升级后,需要重新配置) 3. 共用一个模块,通过代码实现.(这里介绍的就是这种,基于odoo10) 很简单,只需要在模块代码-->views --> menu.…
场景描述: 开发过程中,有时候我们需要去除odoo自带的一些样式, 比如,form视图,要集成自定义的界面时,就希望把顶部的服务动作 和 分页按钮 隐藏掉. 处理方式: 分两种情况: 1. 保留顶部区域,只隐藏“服务器动作”& “分页” 2. 顶部区域全部隐藏 待补充…
odoo后台日志记录功能 修改启动文件odoo.conf 将参数logfile注释放开, logfile = /var/log/odoo/odoo-server.log login_message = False login_message参数提供odoo日志记录的几种级别, 可选参数及含义:…
app+db在一台服务器: odoo.conf配置文件: db_host = False db_maxconn = 64 db_name = False db_password = 123456db_port = False db_template = template1 db_user = odoo app+db在不同服务器: odoo.conf配置文件:db_host = 192.168.1.222 db_maxconn = 64 db_name = test   # 数据库名db_pass…
场景描述: 开发过程中,有时候会遇到,模块安装的时候,一直卡着,走不过去:或者安装报错,导致进入了系统! 这个时候,怎么处理呢? 先简单说下,odoo中模块的升级有4个状态,模块相关的安装情况记录在表:ir_module_module 中: state uninstallable  不可安装 uninstalled    未安装 安装中 to upgrade   升级中 installed       已安装 例如:取消升级中的模块.注意这里只是举例,查找了“所有”的记录,可以指定特定的某个模块…
场景描述: odoo中定义模型的时候,系统会根据参数_name="********" 按照一定的系统规则自动生成表名; 最近开发过程中发现,_name参数的字符长度不能超过64位,否则系统自动生成表名后,界面调用的时候或者创建关联表的时候(Many2many字段)会报错. 结论:postgresql 表名长度不能超过64位! 为了防止系统自动生成的表名过长,可以加_table参数自定义表名,限制表名长度,让系统以我们自己定义的名字创建表名:…
odoo 时区问题 待补充 odoo默认数据库是以UTC时间存放的:这也是odoo设计优秀的地方.…
可能的原因: 排查顺序: 1.id在视图中的加载顺序问题. 可能是:__manifest__.py文件,view文件先后加载顺序有问题:也可能是:xml 视图文件中,被引用的id出现在了引用id的下方(注意:odoo服务启动后,页面的加载顺序是从上到下). 2. 上次的代码中的id已经注册进了系统,这个时候解决方式,可以通过前台开发者模式,找到相应的引用视图ID,把它注释掉,再次升级. 3.  外部Id 相互引用 陷入相互引用,导致ID相互依赖,解决方式:方式1 单独扩展视图,扩展相互引用的视图…
./odoo-bin shell -d test1 -c /home/odoo/odooshare/odoo.conf ./odoo-bin shell -d 数据库名 -c 指定配置文件…
场景描述: 解决方式: 网络搜索,vnsoft_form_hide_edit 找到了这个odoo8的模块, odoo10语法和视图界面有新的变化,所以需要修改一些地方,感兴趣的小伙伴可以对比下两个代码的不同. odoo10: 注意:该js代码是全局生效的. odoo.define('vnsoft_form_hide_edit', function (require) { "use strict"; var FormView = require('web.FormView'); Form…
Backend debranding 找到如下文件,将相关灰色代码注释掉. <?xml version="1.0" encoding="UTF-8"?> <templates> <t t-extend="mail.client_action"> <t t-jquery=".o_mail_request_permission" t-operation="inner"&…
odoo数据库 导入.导出 首先odoo框架下postgresql数据库中,表结构的存储方式: 存在id(小写),并没有所谓的外部ID 例如数据库中的国家表:模块名_tb_country   (注意:odoo框架下,数据库中生成的表命名规则是,模块名_实际表名) id   code  name 1   001   中国 2   002   美国 3   003   德国 ... odoo系统自带功能,前台界面导出的时候:导入兼容导出模式 这种情况下导出的csv表数据结构 :  注意这里导出的id…
转两篇关于权限的2篇文章,加深这方面的认识.注:后面附有原作者地址,希望不构成侵权. https://www.cnblogs.com/crazyguo/p/6999408.html 第一篇:http://www.cnblogs.com/dancesir/p/6994030.html Odoo的权限的核心是权限组(res_groups).对每个权限组,可以设置权限组的菜单表示,对象表示,记录规则表示,字段表示. 1.菜单/对象级别 设置哪些人可以访问哪些菜单/对象,对象的访问权限包括创建.读.写.…
odoo 源码解析:http://blog.csdn.net/weixin_35737303…