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
13.0
Laurent Mignon (ACSONE) 5 years ago
parent
commit
795d4130b5
  1. 2
      .isort.cfg
  2. 6
      base_jsonify/models/models.py
  3. 6
      base_jsonify/tests/test_get_parser.py

2
.isort.cfg

@ -9,4 +9,4 @@ line_length=88
known_odoo=odoo known_odoo=odoo
known_odoo_addons=odoo.addons known_odoo_addons=odoo.addons
sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER
known_third_party=
known_third_party=setuptools

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 _
@ -69,6 +69,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

6
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
@ -59,6 +60,8 @@ 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(
{ {
@ -76,6 +79,7 @@ class TestParser(TransactionCase):
}, },
) )
], ],
"date": fields.Date.today(),
} }
) )
expected_json = { expected_json = {
@ -96,6 +100,8 @@ class TestParser(TransactionCase):
"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