Browse Source

[FIX] base_jsonify: In odoo 12, Date and Datetime fields values are datetime object

Convert fields.Date and fields.Datetime values to string when serializing to json
12.0
Laurent Mignon (ACSONE) 5 years ago
parent
commit
560ba5b3cb
  1. 6
      base_jsonify/models/models.py
  2. 10
      base_jsonify/tests/test_get_parser.py

6
base_jsonify/models/models.py

@ -3,7 +3,7 @@
# Raphaël Reverdy <raphael.reverdy@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 odoo import api, models
from odoo import api, fields, models
from odoo.exceptions import UserError from odoo.exceptions import UserError
from odoo.tools.translate import _ from odoo.tools.translate import _
@ -71,6 +71,10 @@ class Base(models.AbstractModel):
value = rec[field_name] value = rec[field_name]
if value is False and field_type != 'boolean': if value is False and field_type != 'boolean':
value = None value = None
elif field_type == "date":
value = fields.Date.to_string(value)
elif field_type == "datetime":
value = fields.Datetime.to_string(value)
res[json_key] = value res[json_key] = value
result.append(res) result.append(res)
return result return result

10
base_jsonify/tests/test_get_parser.py

@ -1,6 +1,7 @@
# 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 odoo import fields
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
@ -54,7 +55,9 @@ class TestParser(TransactionCase):
]), ]),
('country_id:country', ['code', 'name']), ('country_id:country', ['code', 'name']),
'active', 'active',
('category_id', ['name'])
('category_id', ['name']),
'create_date',
'date',
] ]
partner = self.env['res.partner'].create({ partner = self.env['res.partner'].create({
'name': 'Akretion', 'name': 'Akretion',
@ -67,6 +70,7 @@ class TestParser(TransactionCase):
'country_id': self.env.ref('base.fr').id 'country_id': self.env.ref('base.fr').id
}) })
], ],
'date': fields.Date.today()
}) })
expected_json = { expected_json = {
'lang': 'en_US', 'lang': 'en_US',
@ -91,7 +95,9 @@ class TestParser(TransactionCase):
'children': [], 'children': [],
'name': 'Sebatien Beau', 'name': 'Sebatien Beau',
'email': None 'email': None
}]
}],
'create_date': fields.Datetime.to_string(partner.create_date),
'date': fields.Date.to_string(partner.date)
} }
json_partner = partner.jsonify(parser) json_partner = partner.jsonify(parser)

Loading…
Cancel
Save