def toPython(self, value, state): if value is None: return None if isinstance(value, DateTimeType): return value if datetime_available: # convert datetime instance to mxDateTime if isinstance(value, datetime.datetime): return DateTime.DateTime(value.year, value.month, value.day, value.hour, value.minute, value.second) elif isinstance(value, datetime.date): return DateTime.Date(value.year, value.month, value.day) try: stime = time.strptime(value, self.format) except: raise validators.InvalidField("expected an date/time string of the '%s' format in the DateTimeCol '%s', got %s instead" % \ (self.format, self.name, type(value)), value, state) return DateTime.mktime(stime)
def to_python(self, value, state): if value is None: return None if isinstance(value, (DateTimeType, TimeType, sqlbuilder.SQLExpression)): return value if isinstance(value, datetime.datetime): return DateTime.DateTime(value.year, value.month, value.day, value.hour, value.minute, value.second) elif isinstance(value, datetime.date): return DateTime.Date(value.year, value.month, value.day) elif isinstance(value, datetime.time): return DateTime.Time(value.hour, value.minute, value.second) try: stime = time.strptime(value, self.format) except: raise validators.Invalid("expected a date/time string of the '%s' format in the DateTimeCol '%s', got %s %r instead" % \ (self.format, self.name, type(value), value), value, state) return DateTime.mktime(stime)
def __init__(self,val=None): _timestamp.__init__(self,val) self.__mxdt = DateTime.mktime(self.__tval)
def __get_event(self, model): event = model.value.copy() self.__convert(event) caption = '' description = [] starts = None ends = None if self.axis: f = self.axis[0] s = event[f] if isinstance(s, (tuple, list)): s = s[-1] caption = ustr(s) for f in self.axis[1:]: s = event[f] if isinstance(s, (tuple, list)): s = s[-1] description += [ustr(s)] starts = event.get(self.date_start) ends = event.get(self.date_delay) or 1.0 span = 0 if starts and ends: n = 0 h = ends or 1 if ends == self.day_length: span = 1 if ends > self.day_length: n = ends / self.day_length h = ends % self.day_length n = int(math.floor(n)) if n > 0: if not h: n = n - 1 span = n + 1 t=DateTime.mktime(starts) ends = time.localtime(t.ticks() + (h * 60 * 60) + (n * 24 * 60 * 60)) if starts and self.date_stop: ends = event.get(self.date_stop) if not ends: ends = time.localtime(time.mktime(starts) + 60 * 60) tds = time.mktime(starts) tde = time.mktime(ends) if tds >= tde: tde = tds + 60 * 60 ends = time.localtime(tde) n = (tde - tds) / (60 * 60) if n > self.day_length: span = math.floor(n / 24.) if not starts: return None color_key = event.get(self.color_field) if isinstance(color_key, list): color_key = tuple(color_key) color_info = self.colors.get(color_key) color = color_info and color_info[2] or 'black' description = ', '.join(description).strip() all_day = span > 0 return TinyEvent(model=model, caption=caption.strip(), start=datetime(*starts[:7]), end=datetime(*ends[:7]), description=description, dayspan=span, all_day=all_day, color_info=color_info, bg_color = (all_day or self.mode != 'month') and color or 'white', text_color = (all_day or self.mode != 'month') and 'black' or color, )
def __init__(self, val=None): _timestamp.__init__(self, val) self.__mxdt = DateTime.mktime(self.__tval)