odoo里的开发规范

摘要:
res_ grade=[]grade_列表=自身。env['ir.config_parameter']。search([('key'.country_id=fields.Many2one('res.country',string=u'country')state_id=fields.Many1one(''s.country.state':域=[('country_id',

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)




案例: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里的开发规范》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux shell 学习笔记--变量声明与赋值,循环Shell排序和二叉树排序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

精确时间协议PTP研究【转】

转自:http://www.coinv.com/page/pid/492.html 摘要:PTP(Precision Time Protocol)协议基于以太网,能够达到亚微妙级的对时精度,在模态分析和振动测试等领域将有着广阔的应用前景。首先介绍了PTP协议的基本原理及工作流程,接着剖析了关键数据结构及模块,最后给出了测试结果和下一步要作的工作。 关键词...

Java全家桶的这些知识,不用学了

众所周知,Java 的知识体系繁冗复杂,但是有很多知识在实际工作中几乎没有人用。 很多人在学习过程中,却经常把有限的时间和精力花在了这些“没有用”的知识上,事倍功半。 下面我捋一捋 Java 中那些不建议学习的知识点,让大家能避过雷区,尽量提升些学习的精准度。 Java 的桌面 GUI 相关技术 GUI,即 Graphical User Interface...

python接口自动化测试二十:函数写接口测试

python接口自动化测试二十:函数写接口测试  # coding:utf-8import requestsimport refrom bs4 import BeautifulSoup# s = requests.session() # 全局的sdef get_token(s): ''' fuction: 获取token args:...

sql server 碎片整理——DBCC SHOWCONTIG

转自: 1.http://blog.sina.com.cn/s/blog_6d2675450101ks6i.html 2.http://www.cnblogs.com/CareySon/archive/2012/01/06/2313897.html#!comments   关键字:查看索引碎片,重建索引     一、概述 SQLServer提供了一个数据库...

35 | 如何准备测试数据?

测试数据创建的基本方法 从创建测试数据的维度来看,测试数据准备方法主要可以分为四类: 基于 GUI 操作生成测试数据; 通过 API 调用生成测试数据; 通过数据库操作生成测试数据; 综合运用 API 和数据库的方式生成测试数据。 基于 GUI 操作生成测试数据 很少直接使用基于 GUI 的操作生成测试数据。 通过 API 调用生成测试数据 通过 AP...

使用PostgreSQL的bytea字段存读取文件及读取出错问题处理

  PostgreSQL中的bytea字段类型可以以二进制的形式存储数据,这样做的好处就是可以将原本存储在网站目录下的文件存储到数据库中,坏处就是如果文件过多、过大的话,就会导致数据库的数据量大大增加,备份和恢复的时候就会浪费大量的时间,而且数据也有可能会出错。个人觉得,在文件量小的情况下,使用这种存储方式还是很方便的。   言归正传,下面介绍一下使用by...