Exemple #1
0
 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)
Exemple #2
0
 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)
Exemple #3
0
 def __init__(self,val=None):
     _timestamp.__init__(self,val)
     self.__mxdt = DateTime.mktime(self.__tval)
Exemple #4
0
    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,
        )
Exemple #5
0
 def __init__(self, val=None):
     _timestamp.__init__(self, val)
     self.__mxdt = DateTime.mktime(self.__tval)