88from django .core .management .base import BaseCommand
99from uw_mazevo .api import PublicCourses
1010from uw_sws .term import (get_current_term , get_next_term , get_term_after ,
11- get_term_by_year_and_quarter )
11+ get_term_before , get_term_by_year_and_quarter )
1212from uw_r25 .models import Event , Reservation
1313
1414from mazevo_r25 .more_r25 import get_event_list , get_reservations_attrs
@@ -134,14 +134,23 @@ def handle(self, *args, **options):
134134 else :
135135 term = get_current_term ()
136136
137+ prev_term = get_term_before (term )
138+
139+ # import_term is the data structure we upload to Mazevo.
140+ # By coincidence, this format of startDate and endDate also works for the R25
141+ # API, so we re-use it in those queries.
137142 import_term = {
138143 "termDescription" : "{} {}" .format (term .quarter , term .year ).title (),
139- "startDate" : term .first_day_quarter .isoformat (),
144+ # can't use term.first_day_quarter because of early start classes
145+ "startDate" : (
146+ prev_term .grade_submission_deadline + datetime .timedelta (days = 1 )
147+ ).isoformat (),
140148 "endDate" : term .grade_submission_deadline .isoformat (),
141149 }
142150
143- logger .info ("Retrieving R25 reservations for {}" .format (
144- import_term ["termDescription" ]))
151+ logger .info ("Retrieving R25 reservations for {}: {} - {}" .format (
152+ import_term ["termDescription" ],
153+ import_term ["startDate" ], import_term ["endDate" ]))
145154
146155 courses = {}
147156
@@ -162,8 +171,8 @@ def handle(self, *args, **options):
162171 state = "+" .join ([Event .TENTATIVE_STATE ,
163172 Event .CONFIRMED_STATE ,
164173 Event .SEALED_STATE ]),
165- reservation_start_dt = term . first_day_quarter . isoformat () ,
166- reservation_end_dt = term . grade_submission_deadline . isoformat () ,
174+ reservation_start_dt = import_term [ "startDate" ] ,
175+ reservation_end_dt = import_term [ "endDate" ] ,
167176 category_id = "+" .join (settings .MAZEVO_R25_CATEGORIES_UNLISTED ))
168177
169178 unlisted_event_ids = unlisted_events .keys ()
@@ -181,8 +190,8 @@ def handle(self, *args, **options):
181190 Reservation .EXCEPTION_STATE ,
182191 Reservation .WARNING_STATE ,
183192 Reservation .OVERRIDE_STATE ]),
184- start_dt = term . first_day_quarter . isoformat () ,
185- end_dt = term . grade_submission_deadline . isoformat () ,
193+ start_dt = import_term [ "startDate" ] ,
194+ end_dt = import_term [ "endDate" ] ,
186195 paginate = paginate , page = page , page_size = 1000 )
187196
188197 if page == 1 :
0 commit comments