base_jsonify: cleanups

remove copyrights from init and update copyrights
pull/1704/head
hpar 2017-10-02 12:08:12 +02:00 committed by laurent.corron
parent c51bb8ca1b
commit cfabca6d04
11 changed files with 92 additions and 102 deletions

View File

@ -2,9 +2,9 @@
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3 :alt: License: AGPL-3
============== ============
Base Jsonify Base Jsonify
============== ============
This module add the jsonify method to the ORM. This method take as argument 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. the browse record and the "parser" that specify the field to extract.
@ -76,7 +76,7 @@ This is a technical module not function feature is added
Known issues / Roadmap Known issues / Roadmap
====================== ======================
Nothing yet No distinction between float 0.0L and no value
Bug Tracker Bug Tracker
=========== ===========
@ -98,6 +98,7 @@ Contributors
------------ ------------
* BEAU Sébastien <sebastien.beau@akretion.com> * BEAU Sébastien <sebastien.beau@akretion.com>
* Raphaël Reverdy <raphael.reverdy@akretion.com>
* Laurent Mignon <laurent.mignon@acsone.eu> * Laurent Mignon <laurent.mignon@acsone.eu>
Maintainer Maintainer

View File

@ -1,7 +1,2 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2016 Akretion (http://www.akretion.com)
# Sébastien BEAU <sebastien.beau@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models from . import models

View File

@ -1,12 +1,13 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2016 Akretion (http://www.akretion.com) # © 2017 Akretion (http://www.akretion.com)
# Sébastien BEAU <sebastien.beau@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). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{ {
"name": "Base Jsonify", "name": "Base Jsonify",
"summary": "Base module that provide the jsonify method on all object", "summary": "Base module that provide the jsonify method on all object",
"version": "8.0.1.0.0", "version": "10.0.1.0.0",
"category": "Uncategorized", "category": "Uncategorized",
"website": "https://odoo-community.org/", "website": "https://odoo-community.org/",
"author": "Akretion, Odoo Community Association (OCA)", "author": "Akretion, Odoo Community Association (OCA)",

View File

@ -1,11 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<openerp> <odoo>
<data> <record id="ir_exp_partner" model="ir.exports">
<field name="name">Partner Export</field>
<record id="ir_exp_partner" model="ir.exports"> <field name="resource">res.partner</field>
<field name="name">Partner Export</field> </record>
<field name="resource">res.partner</field> </odoo>
</record>
</data>
</openerp>

View File

@ -1,9 +1,4 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2016 Akretion (http://www.akretion.com)
# Sébastien BEAU <sebastien.beau@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import models from . import models
from . import ir_export from . import ir_export
from . import ir_exports_line from . import ir_exports_line

View File

@ -1,10 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2016 Akretion (http://www.akretion.com) # © 2017 Akretion (http://www.akretion.com)
# Sébastien BEAU <sebastien.beau@akretion.com> # Sébastien BEAU <sebastien.beau@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from collections import OrderedDict from collections import OrderedDict
from openerp import api, models from odoo import api, models
def update_dict(data, fields): def update_dict(data, fields):

View File

@ -2,8 +2,8 @@
# Copyright 2017 ACSONE SA/NV # Copyright 2017 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.exceptions import ValidationError from odoo.exceptions import ValidationError
from openerp import api, fields, models, _ from odoo import api, fields, models, _
class IrExportsLine(models.Model): class IrExportsLine(models.Model):

View File

@ -1,76 +1,80 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2016 Akretion (http://www.akretion.com) # © 2017 Akretion (http://www.akretion.com)
# Sébastien BEAU <sebastien.beau@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). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from openerp import api, models from odoo import api, models
from openerp.exceptions import Warning as UserError from odoo.exceptions import UserError
from openerp.tools.translate import _ from odoo.tools.translate import _
def __parse_field(parser_field): class Base(models.AbstractModel):
field_name = parser_field
subparser = None _inherit = 'base'
if isinstance(parser_field, tuple):
field_name, subparser = parser_field @api.model
json_key = field_name def __parse_field(self, parser_field):
if ':' in field_name: field_name = parser_field
field_name, json_key = field_name.split(':') subparser = None
return field_name, json_key, subparser if isinstance(parser_field, tuple):
field_name, subparser = parser_field
json_key = field_name
if ':' in field_name:
field_name, json_key = field_name.split(':')
return field_name, json_key, subparser
@api.multi @api.multi
def jsonify(self, parser): def jsonify(self, parser):
""" Convert the record according to the parser given """ Convert the record according to the parser given
Example of parser: Example of parser:
parser = [
'name',
'number',
'create_date',
('partner_id', ['id', 'display_name', 'ref'])
('line_id', ['id', ('product_id', ['name']), 'price_unit'])
]
In order to be consitent 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
from the model. If you need to specify an alternate name to use as key, you
can define your mapping as follow into the parser definition:
parser = [ parser = [
'name', 'field_name:json_key'
'number',
'create_date',
('partner_id', ['id', 'display_name', 'ref'])
('line_id', ['id', ('product_id', ['name']), 'price_unit'])
] ]
In order to be consitent with the odoo api the jsonify method always """
return a list of object even if there is only one element in input result = []
empty_value = {
'char': None,
'int': None,
# 'float': None, TODO: 0.0 != False
'text': None,
}
By default the key into the json is the name of the field extracted for rec in self:
from the model. If you need to specify an alternate name to use as key, you res = {}
can define your mapping as follow into the parser definition: for field in parser:
field_name, json_key, subparser = self.__parse_field(field)
parser = [ field_type = rec._fields[field_name].type
'field_name:json_key' if subparser:
] if field_type in ('one2many', 'many2many'):
res[json_key] = rec[field_name].jsonify(subparser)
""" elif field_type in ('many2one', 'reference'):
result = [] if rec[field_name]:
empty_value = { res[json_key] = rec[field_name].jsonify(subparser)[0]
'char': '', else:
'int': 0, res[json_key] = None
'float': 0,
}
for rec in self:
res = {}
for field in parser:
field_name, json_key, subparser = __parse_field(field)
field_type = rec._fields[field_name].type
if subparser:
if field_type in ('one2many', 'many2many'):
res[json_key] = rec[field_name].jsonify(subparser)
elif field_type in ('many2one', 'reference'):
if rec[field_name]:
res[json_key] = rec[field_name].jsonify(subparser)[0]
else: else:
res[json_key] = None raise UserError(_('Wrong parser configuration'))
else: else:
raise UserError(_('Wrong parser configuration')) res[json_key] = rec[field_name]
else: if not res[json_key] and field_type in empty_value:
res[json_key] = rec[field_name] res[json_key] = empty_value[field_type]
if not res[json_key] and field_type in empty_value: result.append(res)
res[json_key] = empty_value[field_type] return result
result.append(res)
return result
models.Model.jsonify = jsonify

View File

@ -1,7 +1,3 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# © 2016 Akretion (http://www.akretion.com)
# Sébastien BEAU <sebastien.beau@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_get_parser from . import test_get_parser
from . import test_ir_exports_line from . import test_ir_exports_line

View File

@ -2,7 +2,7 @@
# © <YEAR(S)> <AUTHOR(S)> # © <YEAR(S)> <AUTHOR(S)>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.tests.common import TransactionCase from odoo.tests.common import TransactionCase
class TestParser(TransactionCase): class TestParser(TransactionCase):
@ -57,17 +57,18 @@ class TestParser(TransactionCase):
partner = self.env['res.partner'].create({ partner = self.env['res.partner'].create({
'name': 'Akretion', 'name': 'Akretion',
'country_id': self.env.ref('base.fr').id, 'country_id': self.env.ref('base.fr').id,
'lang': 'en_US', # default
'category_id': [(0, 0, {'name': 'Inovator'})], 'category_id': [(0, 0, {'name': 'Inovator'})],
'child_ids': [ 'child_ids': [
(0, 0, { (0, 0, {
'name': 'Sebatien Beau', 'name': 'Sebatien Beau',
'country_id': self.env.ref('base.fr').id 'country_id': self.env.ref('base.fr').id
}) })
] ],
}) })
expected_json = [{ expected_json = [{
u'lang': False, u'lang': u'en_US',
u'comment': False, u'comment': None,
u'credit_limit': 0.0, u'credit_limit': 0.0,
u'name': u'Akretion', u'name': u'Akretion',
u'color': 0, u'color': 0,
@ -87,8 +88,9 @@ class TestParser(TransactionCase):
}, },
u'children': [], u'children': [],
u'name': u'Sebatien Beau', u'name': u'Sebatien Beau',
u'email': False u'email': None
}] }]
}] }]
json_partner = partner.jsonify(parser) json_partner = partner.jsonify(parser)
self.assertDictEqual(json_partner[0], expected_json[0]) self.assertDictEqual(json_partner[0], expected_json[0])

View File

@ -2,8 +2,8 @@
# © 2017 ACSONE SA/NV # © 2017 ACSONE SA/NV
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from openerp.exceptions import ValidationError from odoo.exceptions import ValidationError
from openerp.tests.common import TransactionCase from odoo.tests.common import TransactionCase
class TestIrExportsLine(TransactionCase): class TestIrExportsLine(TransactionCase):