Пример #1
0
class TagTimeKey(TimeKey):

    def __init__(self, tag, minutes=each10minutes, name='tagtime'):
        self.minutes = IIBTree([(i, 1) for i in minutes])

        self.tag = tag
        self.name = name

    def __call__(self, objectId, instance, *arg, **kw):
        tag = self.tag.query(instance.context)
        if not tag:
            return ()

        tag = time.localtime(tag)

        minute = tag[4]
        if not (self.minutes.has_key(-1) or self.minutes.has_key(minute)):
            minute = self.minutes.maxKey(minute)

        try:
            minute2 = self.minutes.minKey(minute+1)
            time2 = time.mktime(tag[:4] + (minute2, 0, 0, 0, 0))
        except ValueError:
            time2 = time.mktime(tag[:4] + (0, 0, 0, 0, 0)) + 3600

        if time2 < time.time():
            return {'%s:%s'%(self.name, self.tag.name): time2}

        return {'%s:%s'%(self.name, self.tag.name):
                    time.mktime(tag[:4] + (minute, 0, 0, 0, 0))}
Пример #2
0
class TimeKey(object):
    interface.implements(ITimeKey)

    def __init__(self, hours=eachHour, minutes=each0minute, name='time'):
        self.hours = IIBTree([(i, 1) for i in hours])
        self.minutes = IIBTree([(i, 1) for i in minutes])
        self.name = name

    def __call__(self, *args, **kw):
        now = time.localtime()

        minute = now[4]
        if not (self.minutes.has_key(-1) or self.minutes.has_key(minute)):
            minute = self.minutes.maxKey(minute)

        hour = now[3]
        if not (self.hours.has_key(-1) or self.hours.has_key(hour)):
            hour = self.hours.maxKey(hour)

        return {self.name: time.mktime(now[:3] + (hour, minute, 0, 0, 0, 0))}