def compute_date(self, text, default=None, year=None): if default is None: default = datetime_strftime(datetime.datetime.now(), self.format) if text == self.initial_value or not text: return '' match = self.regex.match(text) if not match: return '' for i in range(len(match.groups())): val = match.group(i + 1) n = len(val) val = val.strip() val = val.strip('_') if n != 4: val = val.lstrip('0') if not val: continue fchar = '0' if n == 4: fchar = '_' if len(val) == 1: val = '0' + val if year and n == 4 and len(val) != 4: val = year val = (fchar * (n - len(val))) + val start = match.start(i + 1) end = match.end(i + 1) text = text[:start] + val + text[end:] for a in range(len(self.initial_value)): if self.initial_value[a] == text[a]: text = text[:a] + default[a] + text[a + 1:] return text
def test_date(self, text): default = datetime_strftime(datetime.datetime(2000, 1, 1), self.format) try: time.strptime(self.compute_date(text, default=default, year="2000"), self.format) except ValueError: return False return True
def compute_date(self, text, default=None, year=None): if default is None: default = datetime_strftime(datetime.datetime.now(), self.format) if text == self.initial_value or not text: return "" match = self.regex.match(text) if not match: return "" for i in range(len(match.groups())): val = match.group(i + 1) n = len(val) val = val.strip() val = val.strip("_") if n != 4: val = val.lstrip("0") if not val: continue fchar = "0" if n == 4: fchar = "_" if len(val) == 1: val = "0" + val if year and n == 4 and len(val) != 4: val = year val = (fchar * (n - len(val))) + val start = match.start(i + 1) end = match.end(i + 1) text = text[:start] + val + text[end:] for a in range(len(self.initial_value)): if self.initial_value[a] == text[a]: text = text[:a] + default[a] + text[a + 1 :] return text
def date_set(self, dt): if dt: self.set_text(datetime_strftime(dt, self.format)) else: if self.is_focus(): self.set_text(self.initial_value) else: self.set_text('')
def date_set(self, dt): if dt: self.set_text(datetime_strftime(dt, self.format)) else: if self.is_focus(): self.set_text(self.initial_value) else: self.set_text("")
def test_date(self, text): default = datetime_strftime(datetime.datetime(2000, 1, 1), self.format) try: time.strptime( self.compute_date(text, default=default, year='2000'), self.format) except ValueError: return False return True