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:
1 parent
9c2b09c50b
commit
ec99c9a75c
1 file changed
+12
-8
@@ -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)
|
||||
|
||||
Reference in new issue
Block a user