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") )
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))