예제 #1
0
파일: commands.py 프로젝트: crodjer/atg
def schedule(args):
    '''
    Get convenient time slots to possibly contact the other person.
    '''

    reference = args.here_tz
    zipped_timeline = tuple(zip(U.timeline(args.here_tz, reference),
                                U.timeline(args.remote_tz, reference)))
    timeline_map = dict(zipped_timeline)

    def convenient(ht, rt):
        for a in args.dnd:
            if a.is_current(ht) and U.People.here in args.convenient_for:
                return False
            elif a.is_current(rt) and U.People.there in args.convenient_for:
                return False

        return True

    time_slots = U.grouped_time([
        ht
        for (ht, rt) in zipped_timeline
        if convenient(ht, rt)
    ])

    yield 'Convenient time slots:'
    for start, end, in time_slots:
        yield "\t{} to {} here i.e. {} to {} there".format(
            start.strftime("%R"), end.strftime("%R"),
            timeline_map[start].strftime("%R"), timeline_map[end].strftime("%R")
        )
예제 #2
0
파일: test_utils.py 프로젝트: crodjer/atg
    def test_timeline(self):
        delta = timedelta(minutes=30)
        _now = datetime.utcnow()
        start = utc.localize(
            datetime(year=_now.year, month=_now.month, day=_now.day, hour=7)
        )

        self.assertEqual([
            (start + (delta * i))
            for i in range(48)
        ], U.timeline(utc, utc))

        london_tz = timezone('Europe/London')
        start = start.astimezone(london_tz)
        self.assertEqual([
            (start + (delta * i))
            for i in range(48)
        ], U.timeline(london_tz, utc))