Beispiel #1
0
    def test_save_schedule_two_users(self):
        user_1_times = [[11, 17, 11, 20], [12, 17, 12, 20]]
        schedule_arg = _schedule_arg_for_times(user_1_times)
        request = RequestMockup(self.user_1)
        rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE)

        user_2_times = [[11, 19, 11, 20], [12, 13, 12, 19]]
        schedule_arg = _schedule_arg_for_times(user_2_times)
        request = RequestMockup(self.user_2)
        rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE)

        counts = rpc.fetch_schedule(
            request, ['en'], ['es', 'it'], 2011, 8, 11, TIME_RANGE)
        self.assertEqual(12, len(counts))
        # first check counts on 8/11
        cur_index = 0
        start_hour = scheduling.hour_for_date(datetime(2011, 8, 11, 17))
        for hour in range(17, 21):
            self.assertEqual(start_hour + cur_index, 
                             counts[cur_index]['hour'])
            self.assertEqual(1 if hour < 19 else 2,
                             counts[cur_index]['count'])
            cur_index += 1
        # now check counts on 8/12
        for hour in range(13, 21):
            self.assertEqual(scheduling.hour_for_date(
                    datetime(2011, 8, 12, hour)),
                             counts[cur_index]['hour'])
            self.assertEqual(2 if hour >= 17 and hour <= 19 else 1,
                             counts[cur_index]['count'])
            cur_index += 1
Beispiel #2
0
def update_schedules(user_id, utc_start_date, num_hours):
    end_date = utc_start_date + timedelta(hours=num_hours)
    start_hour = scheduling.hour_for_date(utc_start_date)
    end_hour = scheduling.hour_for_date(end_date)
    user = User.objects.get(id=user_id)
    foreign_language_queries = \
        [Q(languagecalendarforeignlanguage__foreign_language=nl)
         for nl in user.native_languages()]
    native_language_queries = \
        [Q(languagecalendarnativelanguage__native_language=fl)
         for fl in user.foreign_languages()]
    calendars = models.LanguageCalendar.objects.filter(
        reduce(operator.or_, foreign_language_queries)).filter(
        reduce(operator.or_, native_language_queries)).distinct()
    for calendar in calendars:
        scheduling.update_language_calendar(calendar)
Beispiel #3
0
    def test_retrieve_schedule(self):
        schedule_arg = _schedule_arg_for_times([[11, 17, 11, 17]])
        request = RequestMockup(self.user_0)
        rpc.save_schedule(request, schedule_arg, 2011, 8, 11, TIME_RANGE)

        resulting_schedule = rpc.fetch_schedule(
            request, ['es'], ['en'], 2011, 8, 11, TIME_RANGE)
        self.assertEqual(1, len(resulting_schedule))
        self.assertEqual(
            scheduling.hour_for_date(datetime(2011, 8, 11, 17)),
            resulting_schedule[0]['hour'])
        self.assertEqual(
            1, resulting_schedule[0]['count'])
Beispiel #4
0
 def end_hour(self):
     return scheduling.hour_for_date(self.end_time)
Beispiel #5
0
 def start_hour(self):
     return scheduling.hour_for_date(self.start_time)