base_jsonify: misc fixes on comments/docstrings
parent
3ffa00c6f4
commit
ec8473059a
|
@ -1,23 +1,19 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# © 2017 Akretion (http://www.akretion.com)
|
||||
# Copyright 2017-2018 Akretion (http://www.akretion.com)
|
||||
# Sébastien BEAU <sebastien.beau@akretion.com>
|
||||
# Raphaël Reverdy <raphael.reverdy@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
{
|
||||
"name": "Base Jsonify",
|
||||
"summary": "Base module that provide the jsonify method on all object",
|
||||
"summary": "Base module that provide the jsonify method on all models",
|
||||
"version": "10.0.1.0.0",
|
||||
"category": "Uncategorized",
|
||||
"website": "https://odoo-community.org/",
|
||||
"website": "https://github.com/OCA/server-tools",
|
||||
"author": "Akretion, Odoo Community Association (OCA)",
|
||||
"license": "AGPL-3",
|
||||
"application": False,
|
||||
"installable": True,
|
||||
"external_dependencies": {
|
||||
"python": [],
|
||||
"bin": [],
|
||||
},
|
||||
"depends": [
|
||||
"base",
|
||||
],
|
||||
|
|
|
@ -8,6 +8,14 @@ from odoo import api, models
|
|||
|
||||
|
||||
def update_dict(data, fields):
|
||||
"""
|
||||
Contruct a tree of fields.
|
||||
ie: {
|
||||
"name": True,
|
||||
"resource": True,
|
||||
}
|
||||
Order of keys is important.
|
||||
"""
|
||||
field = fields[0]
|
||||
if len(fields) == 1:
|
||||
if field == '.id':
|
||||
|
@ -20,6 +28,11 @@ def update_dict(data, fields):
|
|||
|
||||
|
||||
def convert_dict(dict_parser):
|
||||
"""
|
||||
Converts the dict returned by update_dict to a list consistent with the
|
||||
Odoo API. The list is composed of strings (field names or aliases) or
|
||||
tuples.
|
||||
"""
|
||||
parser = []
|
||||
for field, value in dict_parser.iteritems():
|
||||
if value is True:
|
||||
|
@ -34,6 +47,10 @@ class IrExport(models.Model):
|
|||
|
||||
@api.multi
|
||||
def get_json_parser(self):
|
||||
"""
|
||||
Creates a parser from a ir_exports record and returns it. This parser
|
||||
can then be used to "jsonify" records of the ir_export's model.
|
||||
"""
|
||||
self.ensure_one()
|
||||
dict_parser = OrderedDict()
|
||||
for line in self.export_fields:
|
||||
|
@ -41,4 +58,5 @@ class IrExport(models.Model):
|
|||
if line.alias:
|
||||
names = line.alias.split('/')
|
||||
update_dict(dict_parser, names)
|
||||
|
||||
return convert_dict(dict_parser)
|
||||
|
|
|
@ -15,6 +15,9 @@ class Base(models.AbstractModel):
|
|||
|
||||
@api.model
|
||||
def __parse_field(self, parser_field):
|
||||
"""
|
||||
Deducts how to handle a field from its parser
|
||||
"""
|
||||
field_name = parser_field
|
||||
subparser = None
|
||||
if isinstance(parser_field, tuple):
|
||||
|
@ -36,7 +39,7 @@ class Base(models.AbstractModel):
|
|||
('line_id', ['id', ('product_id', ['name']), 'price_unit'])
|
||||
]
|
||||
|
||||
In order to be consitent with the odoo api the jsonify method always
|
||||
In order to be consistent with the odoo api the jsonify method always
|
||||
return a list of object even if there is only one element in input
|
||||
|
||||
By default the key into the json is the name of the field extracted
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
This module add the jsonify method to the ORM. This method take as argument
|
||||
the browse record and the "parser" that specify the field to extract.
|
||||
This module adds a 'jsonify' method to every model of the ORM.
|
||||
It works on the current recordset and requires a single argument 'parser'
|
||||
that specify the field to extract.
|
||||
|
||||
Example of parser:
|
||||
|
||||
|
|
Loading…
Reference in New Issue