From 795d4130b512d7533f8c8062fc85209cb31482c8 Mon Sep 17 00:00:00 2001 From: "Laurent Mignon (ACSONE)" Date: Wed, 30 Oct 2019 09:47:52 +0100 Subject: [PATCH] [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 --- .isort.cfg | 2 +- base_jsonify/models/models.py | 6 +++++- base_jsonify/tests/test_get_parser.py | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/.isort.cfg b/.isort.cfg index 5751c40dd..98b216f74 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -9,4 +9,4 @@ line_length=88 known_odoo=odoo known_odoo_addons=odoo.addons sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER -known_third_party= +known_third_party=setuptools diff --git a/base_jsonify/models/models.py b/base_jsonify/models/models.py index 260bf7678..6fa32f90d 100644 --- a/base_jsonify/models/models.py +++ b/base_jsonify/models/models.py @@ -3,7 +3,7 @@ # Raphaƫl Reverdy # 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.tools.translate import _ @@ -69,6 +69,10 @@ class Base(models.AbstractModel): value = rec[field_name] if value is False and field_type != "boolean": 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 result.append(res) return result diff --git a/base_jsonify/tests/test_get_parser.py b/base_jsonify/tests/test_get_parser.py index 34be3a3b9..582d02aff 100644 --- a/base_jsonify/tests/test_get_parser.py +++ b/base_jsonify/tests/test_get_parser.py @@ -1,6 +1,7 @@ # Copyright 2017 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import fields from odoo.tests.common import TransactionCase @@ -59,6 +60,8 @@ class TestParser(TransactionCase): ("country_id:country", ["code", "name"]), "active", ("category_id", ["name"]), + "create_date", + "date", ] partner = self.env["res.partner"].create( { @@ -76,6 +79,7 @@ class TestParser(TransactionCase): }, ) ], + "date": fields.Date.today(), } ) expected_json = { @@ -96,6 +100,8 @@ class TestParser(TransactionCase): "email": None, } ], + "create_date": fields.Datetime.to_string(partner.create_date), + "date": fields.Date.to_string(partner.date), } json_partner = partner.jsonify(parser)