Exemplo n.º 1
0
    def __holidays__(self, month_planning):
        _map = dict()  # map { day_number: [off_time_slots]}
        _lowest, _highest = month_planning.__first_last_key_dates__()

        for _blob in self.holidays:
            switch = {
                date: lambda: {
                    _blob: TimeSlot.flags()
                } if _lowest <= _blob <= _highest else dict(),
                FreeSlots: lambda: _blob.__transform__(month_planning),
                SporadicOccurrence:
                lambda: _blob.__transform__(month_planning),
                DateDuration: lambda: _blob.__transform__(month_planning)
            }
            fuse = [(x, isinstance(_blob, x)) for x in switch]
            if any([x[1] for x in fuse]):
                _slots = switch[[x[0] for x in fuse if x[1]][0]]()

                for day_slot in _slots:
                    if day_slot not in _map:
                        _map[day_slot] = set()
                    _map[day_slot] |= set(_slots[day_slot])
            else:
                raise UserWarning("days/slots dump contains unmanaged types.")
        return dict([(x, list(_map[x])) for x in _map])
Exemplo n.º 2
0
    def __transform__(self, month_planning):
        first_date, last_date = month_planning.__first_last_key_dates__()

        if datetime(self.lower_date.year, self.lower_date.month, self.lower_date.day) < datetime(first_date.year, first_date.month, first_date.day):
            lower_bound = first_date
        else:
            lower_bound = self.lower_date

        if datetime(self.upper_date.year, self.upper_date.month, self.upper_date.day) > datetime(last_date.year, last_date.month, last_date.day):
            upper_bound = last_date
        else:
            upper_bound = self.upper_date

        map = dict()
        for i in range((upper_bound - lower_bound).days + 1):
            map[lower_bound + timedelta(days=i)] = TimeSlot.flags()

        return map
    def __transform__(self, month_planning):
        _map = dict()  # map { day_number: [off_time_slots]}
        _lowest, _highest = month_planning.__first_last_key_dates__()
        if self.offset:
            _lowest += self.offset

        _datetimes = []

        _current = _lowest  # initialization
        if self.progressive_period:
            while _lowest <= _current <= _highest:
                _datetimes.append(_current)
                _current += self.progressive_period
        else:
            _datetimes.append(_current)

        for _datetime in _datetimes:
            _map[_datetime] = TimeSlot.flags()  # all day included

        return _map
Exemplo n.º 4
0
    def __holidays__(self, month_planning):
        _map = dict()  # map { day_number: [off_time_slots]}
        _lowest, _highest = month_planning.__first_last_key_dates__()

        for _blob in self.holidays:
            switch = {
                date: lambda: {_blob: TimeSlot.flags()} if _lowest <= _blob <= _highest else dict(),
                FreeSlots: lambda: _blob.__transform__(month_planning),
                SporadicOccurrence: lambda: _blob.__transform__(month_planning),
                DateDuration: lambda: _blob.__transform__(month_planning)
            }
            fuse = [(x, isinstance(_blob, x)) for x in switch]
            if any([x[1] for x in fuse]):
                _slots = switch[[x[0] for x in fuse if x[1]][0]]()

                for day_slot in _slots:
                    if day_slot not in _map:
                        _map[day_slot] = set()
                    _map[day_slot] |= set(_slots[day_slot])
            else:
                raise UserWarning("days/slots dump contains unmanaged types.")
        return dict([(x, list(_map[x])) for x in _map])
Exemplo n.º 5
0
    def __transform__(self, month_planning):
        first_date, last_date = month_planning.__first_last_key_dates__()

        if datetime(self.lower_date.year,
                    self.lower_date.month, self.lower_date.day) < datetime(
                        first_date.year, first_date.month, first_date.day):
            lower_bound = first_date
        else:
            lower_bound = self.lower_date

        if datetime(self.upper_date.year,
                    self.upper_date.month, self.upper_date.day) > datetime(
                        last_date.year, last_date.month, last_date.day):
            upper_bound = last_date
        else:
            upper_bound = self.upper_date

        map = dict()
        for i in range((upper_bound - lower_bound).days + 1):
            map[lower_bound + timedelta(days=i)] = TimeSlot.flags()

        return map
Exemplo n.º 6
0
 def __init__(self, _date, _slots=TimeSlot.flags()):
     self.date = _date
     self.slots = _slots
Exemplo n.º 7
0
 def __regular_t2a__(p):
     return dict([(int(key), dict([(TimeSlot.__from_string__(timeslot), [Activity.__from_string__(activity) for activity in activities]) for timeslot, activities in timeslot2activites.iteritems()])) for key, timeslot2activites in p.iteritems()])