• 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)




    案例: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)
     
  • 相关阅读:
    Matlab smooth函数原理
    Pandas中的高级索引loc、iloc、ix精简概括
    QT常见错误:"multiple definition of xxx"
    Github术语解释
    数据反转 LSB
    LSB最低有效位和MSB最高有效位
    Modbus通信CRC16校验程序
    CRC16常见几个标准的算法及C语言实现
    DB9 公头母头引脚定义及连接
    hdu 2577 How to Type(dp)
  • 原文地址:https://www.cnblogs.com/1314520xh/p/14065745.html
Copyright © 2020-2023  润新知