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里的开发案例的更多相关文章

  1. ODOO里视图开发案例---定义一个像tree、form一样的视图

    odoo里视图模型MVC模式: 例子:在原来的视图上修改他: var CustomRenderer = KanbanRenderer.extend({ ....});var CustomRendere ...

  2. 使用Jquery+EasyUI 进行框架项目开发案例讲解之五 模块(菜单)管理源码分享

    http://www.cnblogs.com/huyong/p/3454012.html 使用Jquery+EasyUI 进行框架项目开发案例讲解之五  模块(菜单)管理源码分享    在上四篇文章 ...

  3. 使用Jquery+EasyUI 进行框架项目开发案例讲解之四 组织机构管理源码分享

    http://www.cnblogs.com/huyong/p/3404647.html 在上三篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

  4. 使用Jquery+EasyUI 进行框架项目开发案例讲解之三---角色管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之三 角色管理源码分享    在上两篇文章  <使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享> ...

  5. 使用Jquery+EasyUI 进行框架项目开发案例讲解之二---用户管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之二 用户管理源码分享   在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享>我们分享 ...

  6. 【推荐】使用Jquery+EasyUI进行框架项目开发案例讲解之一---员工管理源码分享

    使用Jquery+EasyUI 进行框架项目开发案例讲解之一 员工管理源码分享   在开始讲解之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery的U ...

  7. 使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之中的一个 员工管理源代码分享 在開始解说之前,我们先来看一下什么是Jquery EasyUI?jQuery EasyUI是一组基于jQuery ...

  8. 百度UEditor开发案例(JSP)

    本案例的开发环境:MyEclipse+tomcat+jdk     本案例的开发内容: 用百度编辑器发布新闻(UEditor的初始化开发部署) 编辑已发过的新闻(UEditor的应用——编辑旧文章) ...

  9. 使用Jquery+EasyUI 进行框架项目开发案例解说之二---用户管理源代码分享

    使用Jquery+EasyUI 进行框架项目开发案例解说之二 用户管理源代码分享  在上一篇文章<使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享> ...

随机推荐

  1. 终于放弃了单调的swagger-ui了,选择了这款神器—knife4j

    knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案(在非Java项目中也提供了前端UI的增强解决方案),前身是swagger-bootstrap-ui,取名knife ...

  2. js 统计图插件chart.js

    chart是一个纯js插件,它功能强大小巧使用也很简单. 第一步引入 chart.js . <script type="text/javascript" src=" ...

  3. 谷歌浏览器加载驱动(chromedriver)——selenium

    http://chromedriver.storage.googleapis.com/index.html 可以到该网站下载对应的谷歌驱动器(注意:需要版本和操作系统对应,其中windows统一32的 ...

  4. TypeScript 在开发应用中的实践总结

    背景 以前 hybrid app 的移动端开发模式下,H5 和客户端通信的 js sdk 代码使用 js 编写,sdk 方法的说明使用文档输出.对于开发的使用来说,在 IDE 中不能得到友好的参数类型 ...

  5. Java 创建PDF文件包的2种方法

    1. 概述 PDF文件包可方便在仅打开一个窗口的情况下阅读多个文档,通过将多个PDF文档或其他非PDF文档封装在一起,打开文件包后可以随意切换查看文件包中的文档,在需要编辑更改的情况,也可以打开文本包 ...

  6. 9.5、zabbix高级操作(2)

    4.zabbix的分布式监控: 使用zabbix-proxy主动方式(被动也可),使用zabbix-agent的主动方式(被动也可): Zabbix Server <- Zabbix Proxy ...

  7. 关于vue告警 More than 1 blank line not allowed

    开发vue-cli脚手架工程,eslint规范检查工具告警笔记 More than 1 blank line not allowed 代码空格不允许超过1行,把多余的空行删除就可以了

  8. Jquery手机点击其他地方隐藏控件问题

    因为不太懂mui的底部导航栏的操作,所以自己写了用很普通的方法实现手机底部导航栏,遇到了很多问题.比如:要实现点击底部菜单栏上某一个菜单,显示子菜单,然后点击手机空白处,隐藏菜单. 实现方法是: // ...

  9. Redis:redis.conf配置文件 - 及配置详解

    配置文件详解(文章最后有完整的redis.conf文件) ###################################  NETWORK  ######################### ...

  10. java swagger ui 添加header请求头参数

    我用到的swagger 主要有三款产品,swagger editor,swagger ui 和swagger codegen. swagger editor:主要是一个本地客户端,用来自己添加api, ...