Time and TimeDelta check_required must test against None

datetime.time(0) and datetime.timedelta() are considered as False by Python.

issue5229
review22701002
This commit is contained in:
Cédric Krier committed 2016-01-13 21:10:55 +01:00
1 parent 9c2b09c50b
commit ec99c9a75c
1 file changed
+12 -8
+12 -8
View File
@@ -67,10 +67,13 @@ class Field(object):
context.update(record.expr_eval(self.attrs.get('context', {})))
return context
def _is_empty(self, record):
return not self.get_eval(record)
def check_required(self, record):
state_attrs = self.get_state_attrs(record)
if bool(int(state_attrs.get('required') or 0)):
if (not self.get_eval(record)
if (self._is_empty(record)
and not bool(int(state_attrs.get('readonly') or 0))):
return False
return True
@@ -255,6 +258,9 @@ class TimeField(Field):
_default = None
def _is_empty(self, record):
return self.get(record) is None
def set_client(self, record, value, force_change=False):
if isinstance(value, datetime.datetime):
value = value.time()
@@ -269,6 +275,9 @@ class TimeDeltaField(Field):
_default = None
def _is_empty(self, record):
return self.get(record) is None
def converter(self, record):
# TODO allow local context converter
return rpc.CONTEXT.get(self.attrs.get('converter'))
@@ -287,13 +296,8 @@ class TimeDeltaField(Field):
class FloatField(Field):
_default = None
def check_required(self, record):
state_attrs = self.get_state_attrs(record)
if bool(int(state_attrs.get('required') or 0)):
if (self.get(record) is None
and not bool(int(state_attrs.get('readonly') or 0))):
return False
return True
def _is_empty(self, record):
return self.get(record) is None
def get(self, record):
return record.value.get(self.name, self._default)