odoo里的开发案例
1、模块命名[驼峰命名方法]
res开头的是:resources 常见模型:res.users, res.company, res.partner, res.config.settings 等。。。
@api.model
def _selection_grade(self):
res_grade = []
grade_list = self.env['ir.config_parameter'].search([('key','like','')])
for item in grade_list:
res_grade.append((item.key[12:],_(item.value)))
return res_grade
2、三级联动案例:
country_id = fields.Many2one('res.country',string=u'国家')
state_id=fields.Many2one('res.country.state',domain=[('country_id','=',country_id.id)],string=u'省份')
state_id=fields.Many2one('res.country.state',domain=lambda self:[('country_id','=',self.env.user.country_id.id)],string=u'省份')
或
<field name="country_id" />
<field name="state_id" domain="[('country_id','=',country_id)]"/>
3、filtered函数用法,可以用于对many2many或one2many类字段过滤:
def filtered(self, func):
""" Select the records in ``self`` such that ``func(rec)`` is true, and
return them as a recordset.
:param func: a function or a dot-separated sequence of field names
"""
if isinstance(func, pycompat.string_types):
name = func
func = lambda rec: any(rec.mapped(name))
return self.browse([rec.id for rec in self if func(rec)])
案例:filtered过滤返回的石记录集
@api.constrains('product_id', 'product_tmpl_id', 'bom_line_ids')
def _check_product_recursion(self):
for bom in self:
if bom.bom_line_ids.filtered(lambda x: x.product_id.product_tmpl_id == bom.product_tmpl_id):
raise ValidationError(_('BoM line product %s should not be same as BoM product.') % bom.display_name)
4、notify通知
javascript:/**
var core = require('web.core');
core.action_registry.add('action_notify', function(element, action){
var params = action.params;
if(params){
element.do_notify(params.title, params.text, params.sticky);
}
return {'type':'ir.actions.act_window_close'};
});
py用法
def action_notify(self, title=u'默认通知标题', text=u"默认通知内容", sticky=False):
return {
"type": "ir.actions.client",
"tag": "action_notify",
"params": {
"title": title,
"text": text,
"sticky": sticky
}
}
案例:flask与odoo对接接口
# -*- coding: utf-8 -*-
from flask import Flask, g, jsonify
from flask_restful import Api
from flask_cors import CORS
from resource.partner import PartnerAPI app = Flask(__name__)
api = Api(app)
CORS(app, supports_credentials=True) @app.after_request
def after_request(response):
response.headers['Access-Control-Allow-Origin'] = '*'
return response @app.route('/')
def index():
return "hello,%s!" % g.username @app.errorhandler(403)
def permission_denied(error=None):
message = {
"return_msg": "permission denied",
"return_code": 403
}
return jsonify(message), 403 # 绑定资源和路由'
api.add_resource(PartnerAPI, 'api/v1.0/partner/<int id>') if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
# -*- coding: utf-8 -*-
import odoorpc
from flask import Flask, g, jsonify, request
from flask_restful import Resource
from common import error_code
import logging
FORMAT = "%(asctime)s%(thread)d%(message)s"
logging.basicConfig(level=logging.INF, format=FORMAT)
class PartnerAPI(Resource):
def get(self, id):
odoo = odoorpc.ODOO('localhost', port=8069)
odoo.login('database_name', 'admin', 'admin')
order_code = request.args['order_code']
domain = [('name', '=', order_code)]
order_list = odoo.env['sale.order'].search(domain, ['partner_id', 'name', 'order_line'])
partner = odoo.env['res.partner'].browse(id).read(['id', 'name'])[0]
if order_list:
for order in order_list:
order['partner_name'] = order['partner_id'][1]
if partner:
api_result = {
'return_code': 200,
'return_message': 'success',
'data': partner
}
return jsonify(api_result)
odoo里的开发案例的更多相关文章
- ODOO里视图开发案例---定义一个像tree、form一样的视图
odoo里视图模型MVC模式: 例子:在原来的视图上修改他: var CustomRenderer = KanbanRenderer.extend({ ....});var CustomRendere ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享
http://www.cnblogs.com/huyong/p/3454012.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享 在上四篇文章 ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享
http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章 <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享
使用Jquery+EasyUI 进行框架项目开发案例讲解之三 角色管理源码分享 在上两篇文章 <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...
- 使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享
使用Jquery+EasyUI 进行框架项目开发案例讲解之二 用户管理源码分享 在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享>我们分享 ...
- 【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享
使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享 在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的U ...
- 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...
- 百度UEditor开发案例(JSP)
本案例的开发环境:MyEclipse+tomcat+jdk 本案例的开发内容: 用百度编辑器发布新闻(UEditor的初始化开发部署) 编辑已发过的新闻(UEditor的应用——编辑旧文章) ...
- 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享
使用Jquery+EasyUI 进行框架项目开发案例解说之二 用户管理源代码分享 在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享> ...
随机推荐
- P2365 任务安排
题目描述 n 个任务排成一个序列在一台机器上等待完成(顺序不得改变),这 n 个任务被分成若干批,每批包含相邻的若干任务. 从零时刻开始,这些任务被分批加工,第 i 个任务单独完成所需的时间为 ti ...
- UI自动化在RobotFramework中采用的分层设计
RF测试数据 RF测试数据由4种表数据组成.这些测试数据由表的第一个单元格标识,名称和用法如下: 表名 用法 别名 设置表 导入测试库,资源文件和变量文件.为测试套件和测试用例定义元数据 Settin ...
- 重新整理 .net core 实践篇—————路由和终结点[二十三]
前言 简单整理一下路由和终节点. 正文 路由方式主要有两种: 1.路由模板方式 2.RouteAttribute 方式 路由约束: 1.类型约束 2.范围约束 3.正则表达式 4.是否必选 5.自定义 ...
- Spring Boot WebFlux-06——WebFlux 整合 Redis
第06课:WebFlux 整合 Redis 前言 上一篇内容讲了如何整合 MongoDB,这里继续讲如何操作 Redis 这个数据源,那什么是 Reids? Redis 是一个高性能的 key-val ...
- C#中怎样使控件随着窗体一起变化大小
此文原作者为CSDN的 zhouwen5288,原文链接 http://blog.csdn.net/zhouwen5288/article/details/6493835 本人仅作为随笔备忘,转载请 ...
- SAI常用快捷键大全
一.默认常用工具快捷键如下: N 铅笔 B 喷枪 V 笔 X 前/背景色切换 - 前景色与透明色切换 C 水彩笔 A 选区笔 S 选区擦 D 清空当前图层 F 向下转写 (当前图层内容合并至下层,该层 ...
- Qt5实现文本编辑器(附图片转PDF与详细代码)
1. 功能介绍 老规矩,我们直接上截图 这是主界面 文件菜单界面 编辑菜单界面 设置菜单界面 关于菜单界面 2. 功能演示 设置字体颜色 设置字体大小 点击关于菜单 点击关于Qt菜单 会自动跳转到Qt ...
- 7.6、openstack网络拓扑
1.openstack官方架构图: 2.openstack服务常用服务的端口号: mysql:3306 keystone:5000 memcache:11211 rabbitmq:5672 rabbi ...
- 5、rsync全网备份
定时备份rsync(增量备份,无差异备份,daemon进程)+crontab,主要备份一些任务脚本和配置文件,如果此时有用户增加数据, 如果是增量备份的话不会备份下来,因为在备份的那一刻,数据已经被锁 ...
- 使用gitlab自带的ci/cd实现.net core应用程序的部署
这两天在折腾持续集成和交付,公司考虑使用gitlab自带的ci/cd来处理,特此记下来整个流程步骤. 好记性不如一支烂笔头---尼古拉斯-古人言 第一步: 安装gitlab,这个自然不用多说 第二步: ...