Source code for jdaviz.core.custom_traitlets
from traitlets import Int, Float
__all__ = ['HandleEmptyMixin', 'IntHandleEmpty', 'FloatHandleEmpty']
[docs]
class HandleEmptyMixin:
"""Mixin to handle empty field."""
def __init__(self, *args, **kwargs):
self._empty_to_default = kwargs.pop('replace_with_default', False)
super().__init__(*args, **kwargs)
[docs]
def validate(self, obj, value):
if value is None or (isinstance(value, str) and not len(value)):
if self._empty_to_default:
# If the field is emptied, it will override with the default value.
return self.default_value
# The value will remain as the empty string or None, likely will need to either
# couple this with form validation or handle the case where the value
# is an empty string once retrieved.
return value
return super().validate(obj, value)
[docs]
class IntHandleEmpty(HandleEmptyMixin, Int):
"""Mixin to handle empty integer field."""
pass
[docs]
class FloatHandleEmpty(HandleEmptyMixin, Float):
"""Mixin to handle empty floating point field."""
[docs]
def validate(self, obj, value):
if value == '.':
return value
return super().validate(obj, value)