def past_present_future(self): """Find out if this Affil is in the past, present, or future. Returns -1 if this Affil is in the past, 0 if in the present, and 1 if in the future. If there was a parse error, returns None. """ current_year = timezone.now().year current_term = get_current_term() affil_dict = self.to_dict() if affil_dict is None: return None try: year = int(affil_dict.get('year')) except TypeError: return None try: term = int(affil_dict.get('term')) except TypeError: return None if year == current_year and term == current_term: return 0 elif year < current_year or ( year == current_year and term < current_term): return -1 else: return 1
def test_get_current_term(self): with freeze_time('2016-01-01'): self.assertEqual(get_current_term(), 1) with freeze_time('2016-03-16'): self.assertEqual(get_current_term(), 1) with freeze_time('2016-04-30'): self.assertEqual(get_current_term(), 1) with freeze_time('2016-05-01'): self.assertEqual(get_current_term(), 1) with freeze_time('2016-05-20'): self.assertEqual(get_current_term(), 2) with freeze_time('2016-08-20'): self.assertEqual(get_current_term(), 2) with freeze_time('2016-09-02'): self.assertEqual(get_current_term(), 3) with freeze_time('2016-12-12'): self.assertEqual(get_current_term(), 3)
def get_queryset(self): self.courses = get_courses_for_user(self.request.user) semester_view = self.request.GET.get('semester_view') current_term = get_current_term() current_year = timezone.now().year if semester_view == 'past': qs = filter_past_courses( self.courses, current_term, current_year) elif semester_view == 'future': qs = filter_future_courses( self.courses, current_term, current_year) elif semester_view == 'sandbox': qs = filter_sandbox_courses(self.courses) else: qs = filter_current_courses( self.courses, current_term, current_year) return qs.select_related( 'info', 'group', 'faculty_group', 'settings').prefetch_related( 'coursedetails_set')