summaryrefslogtreecommitdiff
path: root/odoo/fields.py
diff options
context:
space:
mode:
authorjem-odoo <jem@openerp.com>2018-09-05 13:37:22 +0200
committerjem-odoo <jem@openerp.com>2018-09-05 15:05:33 +0200
commita6401391ed305f4382bc66f895dfd8e1860bef08 (patch)
tree82d6457794a70a65b30e98777f217e4b9d03c864 /odoo/fields.py
parenta997a5a1c6e3f319b481019925d1e777ea6d30ef (diff)
[FIX] fields: raise when setting aware datetime
Now that Date/Datetime fields use python naive datetime, we want to prevent developper to call or assign aware datetime to fields. Moreover, if so, the timezone will be stored in the database, but when reading Datetime fields, we expect naive datetime. Comparing naive and aware datetime objects leads to errors. This commit forces developpers to use naive datetime when saving data in database. As example, we have to erase the timezone of dates in calendar modules. We also regroup the 2 assignations in one call to `write` for performance reason. Thanks to @dbeguin and @RomainLibert for spending some time on this bug.
Diffstat (limited to 'odoo/fields.py')
-rw-r--r--odoo/fields.py2
1 files changed, 2 insertions, 0 deletions
diff --git a/odoo/fields.py b/odoo/fields.py
index 16a58d70653..650eaebb799 100644
--- a/odoo/fields.py
+++ b/odoo/fields.py
@@ -1681,6 +1681,8 @@ class Datetime(Field):
return None
if isinstance(value, date):
if isinstance(value, datetime):
+ if value.tzinfo:
+ raise ValueError("Datetime field expects a naive datetime: %s" % value)
return value
return datetime.combine(value, time.min)
try: