Source code for pyforms_web.controls.control_date

import datetime
from datetime import date
from pyforms_web.controls.control_base import ControlBase
import simplejson
from django.db.models.fields import NOT_PROVIDED

from django.utils.dateparse import parse_datetime
from django.utils import timezone

[docs]class ControlDate(ControlBase): def init_form(self): return "new ControlDate('{0}', {1})".format( self._name, simplejson.dumps(self.serialize()) ) @property def value(self): return ControlBase.value.fget(self) @value.setter def value(self, value): try: if isinstance(value, str) and len(value.strip())==0: value = None if value is not None and isinstance(value, str): try: value = datetime.datetime.strptime(value, '%Y%m%d') except: try: value = datetime.datetime.strptime(value, '%Y-%m-%d') except Exception as e: raise Exception('The value is not a valid date: '+value) if value and isinstance(value, datetime.datetime): value = value.date() ControlBase.value.fset(self, value) self.error = False except Exception as e: self.error = True self.mark_to_update_client() raise e def serialize(self): data = ControlBase.serialize(self) if self.value and self.value != NOT_PROVIDED: data.update({'value': self.value.isoformat()} ) return data