def test_canvas_sis_id(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS='restclients.dao_implementation.sws.File', RESTCLIENTS_PWS_DAO_CLASS='restclients.dao_implementation.pws.File'): term = get_term_by_year_and_quarter(2013, 'spring') self.assertEquals(term.canvas_sis_id(), '2013-spring', 'Canvas SIS ID') term = get_previous_term() self.assertEquals(term.canvas_sis_id(), '2013-winter', 'Canvas SIS ID')
def test_bad_response(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS='restclients.dao_implementation.sws.TestBadResponse', RESTCLIENTS_PWS_DAO_CLASS='restclients.dao_implementation.pws.File', RESTCLIENTS_USE_INLINE_THREADS=True): term = get_term_by_year_and_quarter(2012, 'summer') self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term)
def test_canvas_sis_id(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=SWSF, RESTCLIENTS_PWS_DAO_CLASS=PWSF): term = get_term_by_year_and_quarter(2013, 'spring') self.assertEquals(term.canvas_sis_id(), '2013-spring', 'Canvas SIS ID') term = get_previous_term() self.assertEquals(term.canvas_sis_id(), '2013-winter', 'Canvas SIS ID')
def test_canvas_sis_id(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS=SWSF, RESTCLIENTS_PWS_DAO_CLASS=PWSF): term = get_term_by_year_and_quarter(2013, 'spring') self.assertEquals(term.canvas_sis_id(), '2013-spring', 'Canvas SIS ID') term = get_previous_term() self.assertEquals(term.canvas_sis_id(), '2013-winter', 'Canvas SIS ID')
def handle(self, *args, **options): if len(args): (year, quarter) = args[0].split('-') term = get_term_by_year_and_quarter(year, quarter) else: term = get_term_by_date(datetime.now().date()) csv_path = generate_unused_course_csv(term) if not settings.SIS_IMPORT_CSV_DEBUG: print csv_path
def test_specific_quarters(self): #testing bad data - get_by_year_and_quarter with self.settings(RESTCLIENTS_SWS_DAO_CLASS=SWSF, RESTCLIENTS_PWS_DAO_CLASS=PWSF): self.assertRaises(DataFailureException, get_term_by_year_and_quarter, -2012, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 0, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 1901, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, 'fall') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, '') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, ' ') # Equality tests self.assertEquals(get_term_by_year_and_quarter(2012, 'autumn'), get_term_by_year_and_quarter(2012, 'autumn')) self.assertEquals(get_specific_term(2012, 'autumn'), get_term_by_year_and_quarter(2012, 'autumn')) self.assertEquals(get_specific_term(2013, 'spring'), get_current_term()) self.assertEquals(get_term_by_year_and_quarter(2013, 'spring'), get_current_term()) self.assertNotEquals(get_specific_term(2012, 'autumn'), get_term_by_year_and_quarter(2013, 'winter'))
def test_specific_quarters(self): #testing bad data - get_by_year_and_quarter with self.settings( RESTCLIENTS_SWS_DAO_CLASS='restclients.dao_implementation.sws.File', RESTCLIENTS_PWS_DAO_CLASS='restclients.dao_implementation.pws.File'): self.assertRaises(DataFailureException, get_term_by_year_and_quarter, -2012, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 0, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 1901, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, 'fall') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, '') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, ' ') # Equality tests self.assertEquals(get_term_by_year_and_quarter(2012, 'autumn'), get_term_by_year_and_quarter(2012, 'autumn')) self.assertNotEquals(get_term_by_year_and_quarter(2012, 'autumn'), get_term_by_year_and_quarter(2013, 'winter'))
def test_mock_data_fake_grading_window(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS='restclients.dao_implementation.sws.File', RESTCLIENTS_PWS_DAO_CLASS='restclients.dao_implementation.pws.File'): # This rounds down to 0 days, so check by seconds :( hour1_delta = timedelta(hours=-1) hour48_delta = timedelta(hours=-48) now = datetime.now() term = get_current_term() self.assertEquals(term.is_grading_period_open(), True, "Grading period is open") self.assertEquals(term.is_grading_period_past(), False, "Grading period is not past") deadline = term.grade_submission_deadline self.assertEquals(deadline + hour1_delta > now, True, "Deadline is in the future") self.assertEquals(deadline + hour48_delta < now, True, "But not too far in the future") open_diff_all = now - term.grading_period_open # Timezone configuration can mess this up, so using seconds self.assertEquals(open_diff_all.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_all.days < 2, True, "But not too far in the past") open_diff_summer_a = now - term.aterm_grading_period_open self.assertEquals(open_diff_summer_a.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_summer_a.days < 2, True, "But not too far in the past") # Also test for Spring 2013, as that's the "current" quarter term = get_term_by_year_and_quarter(2013, 'spring') self.assertEquals(term.is_grading_period_open(), True, "Grading period is open") self.assertEquals(term.is_grading_period_past(), False, "Grading period is not past") deadline = term.grade_submission_deadline self.assertEquals(deadline + hour1_delta > now, True, "Deadline is in the future") self.assertEquals(deadline + hour48_delta < now, True, "But not too far in the future") open_diff_all = now - term.grading_period_open # Timezone configuration can mess this up, so using seconds self.assertEquals(open_diff_all.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_all.days < 2, True, "But not too far in the past") open_diff_summer_a = now - term.aterm_grading_period_open self.assertEquals(open_diff_summer_a.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_summer_a.days < 2, True, "But not too far in the past")
def _get_term_by_year_and_quarter(year, quarter): """ Returns Term object by the given year and quarter. If year and quarter are None, return the current term """ logid = ('get_term_by_year_and_quarter ' + str(year) + "," + quarter) timer = Timer() try: return sws_term.get_term_by_year_and_quarter(year, quarter) except Exception as ex: log_exception(logger, logid, traceback.format_exc()) finally: log_resp_time(logger, logid, timer) return None
def test_specific_quarters(self): #testing bad data - get_by_year_and_quarter with self.settings( RESTCLIENTS_SWS_DAO_CLASS=SWSF, RESTCLIENTS_PWS_DAO_CLASS=PWSF): self.assertRaises(DataFailureException, get_term_by_year_and_quarter, -2012, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 0, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 1901, 'summer') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, 'fall') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, '') self.assertRaises(DataFailureException, get_term_by_year_and_quarter, 2012, ' ') # Equality tests self.assertEquals(get_term_by_year_and_quarter(2012, 'autumn'), get_term_by_year_and_quarter(2012, 'autumn')) self.assertEquals(get_specific_term(2012, 'autumn'), get_term_by_year_and_quarter(2012, 'autumn')) self.assertEquals(get_specific_term(2013, 'spring'), get_current_term()) self.assertEquals(get_term_by_year_and_quarter(2013, 'spring'), get_current_term()) self.assertNotEquals(get_specific_term(2012, 'autumn'), get_term_by_year_and_quarter(2013, 'winter')) # Loading a term with null Registration Periods term = get_term_by_year_and_quarter(2015, 'autumn') self.assertEquals(term.registration_services_start, None)
def handle(self, *args, **options): if len(args): (year, quarter) = args[0].split('-') target_term = get_term_by_year_and_quarter(year, quarter) else: curr_date = datetime.now().date() curr_term = get_term_by_date(curr_date) if curr_date < curr_term.census_day: self.update_job() return target_term = get_term_before(get_term_before(curr_term)) term_sis_id = target_term.canvas_sis_id() try: imp = Term.objects.queue_unused_courses(term_sis_id) except EmptyQueueException: self.update_job() return try: imp.csv_path = generate_unused_course_csv(term_sis_id) except: imp.csv_errors = traceback.format_exc() imp.save() try: imp.import_csv() except MissingImportPathException as ex: if not imp.csv_errors: imp.delete() self.update_job()
def test_mock_data_fake_grading_window(self): with self.settings(RESTCLIENTS_SWS_DAO_CLASS=SWSF, RESTCLIENTS_PWS_DAO_CLASS=PWSF): # This rounds down to 0 days, so check by seconds :( hour1_delta = timedelta(hours=-1) hour48_delta = timedelta(hours=-48) now = datetime.now() term = get_current_term() self.assertEquals(term.is_grading_period_open(), True, "Grading period is open") self.assertEquals(term.is_grading_period_past(), False, "Grading period is not past") deadline = term.grade_submission_deadline self.assertEquals(deadline + hour1_delta > now, True, "Deadline is in the future") self.assertEquals(deadline + hour48_delta < now, True, "But not too far in the future") open_diff_all = now - term.grading_period_open # Timezone configuration can mess this up, so using seconds self.assertEquals(open_diff_all.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_all.days < 2, True, "But not too far in the past") open_diff_summer_a = now - term.aterm_grading_period_open self.assertEquals(open_diff_summer_a.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_summer_a.days < 2, True, "But not too far in the past") # Also test for Spring 2013, as that's the "current" quarter term = get_term_by_year_and_quarter(2013, 'spring') self.assertEquals(term.is_grading_period_open(), True, "Grading period is open") self.assertEquals(term.is_grading_period_past(), False, "Grading period is not past") deadline = term.grade_submission_deadline self.assertEquals(deadline + hour1_delta > now, True, "Deadline is in the future") self.assertEquals(deadline + hour48_delta < now, True, "But not too far in the future") open_diff_all = now - term.grading_period_open # Timezone configuration can mess this up, so using seconds self.assertEquals(open_diff_all.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_all.days < 2, True, "But not too far in the past") open_diff_summer_a = now - term.aterm_grading_period_open self.assertEquals(open_diff_summer_a.seconds > 0, True, "Open date is in the past") self.assertEquals(open_diff_summer_a.days < 2, True, "But not too far in the past")
def _json_to_section(section_data, term=None, include_instructor_not_on_time_schedule=True): """ Returns a section model created from the passed json. """ pws = PWS() section = Section() if term is not None and (term.year == int(section_data["Course"]["Year"]) and term.quarter == section_data["Course"]["Quarter"]): section.term = term else: section.term = get_term_by_year_and_quarter( section_data["Course"]["Year"], section_data["Course"]["Quarter"]) section.curriculum_abbr = section_data["Course"]["CurriculumAbbreviation"] section.course_number = section_data["Course"]["CourseNumber"] section.course_title = section_data["CourseTitle"] section.course_title_long = section_data["CourseTitleLong"] section.course_campus = section_data["CourseCampus"] section.section_id = section_data["SectionID"] section.institute_name = section_data.get("InstituteName", "") section.primary_lms = section_data.get("PrimaryLMS", None) section.lms_ownership = section_data.get("LMSOwnership", None) section.is_independent_start = section_data.get("IsIndependentStart", False) section.section_type = section_data["SectionType"] if "independent study" == section.section_type: section.is_independent_study = True else: section.is_independent_study = False section.class_website_url = section_data["ClassWebsiteUrl"] section.sln = section_data["SLN"] if "SummerTerm" in section_data: section.summer_term = section_data["SummerTerm"] else: section.summer_term = "" section.delete_flag = section_data["DeleteFlag"] if "withdrawn" == section.delete_flag: section.is_withdrawn = True else: section.is_withdrawn = False section.current_enrollment = int(section_data['CurrentEnrollment']) section.auditors = int(section_data['Auditors']) section.allows_secondary_grading = section_data["SecondaryGradingOption"] primary_section = section_data["PrimarySection"] if (primary_section is not None and primary_section["SectionID"] != section.section_id): section.is_primary_section = False section.primary_section_href = primary_section["Href"] section.primary_section_id = primary_section["SectionID"] section.primary_section_curriculum_abbr = primary_section[ "CurriculumAbbreviation"] section.primary_section_course_number = primary_section["CourseNumber"] else: section.is_primary_section = True section.linked_section_urls = [] for linked_section_type in section_data["LinkedSectionTypes"]: for linked_section_data in linked_section_type["LinkedSections"]: url = linked_section_data["Section"]["Href"] section.linked_section_urls.append(url) section.joint_section_urls = [] for joint_section_data in section_data.get("JointSections", []): url = joint_section_data["Href"] section.joint_section_urls.append(url) section.grade_submission_delegates = [] for del_data in section_data["GradeSubmissionDelegates"]: delegate = GradeSubmissionDelegate( person=pws.get_person_by_regid(del_data["Person"]["RegID"]), delegate_level=del_data["DelegateLevel"]) section.grade_submission_delegates.append(delegate) section.meetings = [] for meeting_data in section_data["Meetings"]: meeting = SectionMeeting() meeting.section = section meeting.term = section.term meeting.meeting_index = meeting_data["MeetingIndex"] meeting.meeting_type = meeting_data["MeetingType"] meeting.building = meeting_data["Building"] if meeting_data["BuildingToBeArranged"]: meeting.building_to_be_arranged = True else: meeting.building_to_be_arranged = False meeting.room_number = meeting_data["RoomNumber"] if meeting_data["RoomToBeArranged"]: meeting.room_to_be_arranged = True else: meeting.room_to_be_arranged = False if meeting_data["DaysOfWeekToBeArranged"]: meeting.days_to_be_arranged = True else: meeting.days_to_be_arranged = False for day_data in meeting_data["DaysOfWeek"]["Days"]: attribute = "meets_%s" % day_data["Name"].lower() setattr(meeting, attribute, True) meeting.start_time = meeting_data["StartTime"] meeting.end_time = meeting_data["EndTime"] meeting.instructors = [] for instructor_data in meeting_data["Instructors"]: # TSPrint: True # Instructor information currently listed on the Time Schedule if instructor_data[ "TSPrint"] or include_instructor_not_on_time_schedule: pdata = instructor_data["Person"] if "RegID" in pdata and pdata["RegID"] is not None: try: instructor = pws.get_person_by_regid(pdata["RegID"]) except: instructor = Person(uwregid=pdata["RegID"], display_name=pdata["Name"]) instructor.TSPrint = instructor_data["TSPrint"] meeting.instructors.append(instructor) section.meetings.append(meeting) section.final_exam = None if "FinalExam" in section_data and section_data["FinalExam"] is not None: if "MeetingStatus" in section_data["FinalExam"]: final_exam = FinalExam() final_data = section_data["FinalExam"] status = final_data["MeetingStatus"] final_exam.no_exam_or_nontraditional = False final_exam.is_confirmed = False if (status == "2") or (status == "3"): final_exam.is_confirmed = True elif status == "1": final_exam.no_exam_or_nontraditional = True final_exam.building = final_data["Building"] final_exam.room_number = final_data["RoomNumber"] final_format = "%Y-%m-%d : %H:%M" strptime = datetime.strptime if final_data["Date"] and final_data["Date"] != "0000-00-00": if final_data["StartTime"]: start_string = "%s : %s" % (final_data["Date"], final_data["StartTime"]) final_exam.start_date = strptime(start_string, final_format) if final_data["EndTime"]: end_string = "%s : %s" % (final_data["Date"], final_data["EndTime"]) final_exam.end_date = strptime(end_string, final_format) final_exam.clean_fields() section.final_exam = final_exam return section
def _json_to_section(section_data, term=None, include_instructor_not_on_time_schedule=True): """ Returns a section model created from the passed json. """ pws = PWS() section = Section() if term is not None and ( term.year == int(section_data["Course"]["Year"]) and term.quarter == section_data["Course"]["Quarter"]): section.term = term else: section.term = get_term_by_year_and_quarter( section_data["Course"]["Year"], section_data["Course"]["Quarter"]) section.curriculum_abbr = section_data["Course"][ "CurriculumAbbreviation"] section.course_number = section_data["Course"]["CourseNumber"] section.course_title = section_data["CourseTitle"] section.course_title_long = section_data["CourseTitleLong"] section.course_campus = section_data["CourseCampus"] section.section_id = section_data["SectionID"] section.institute_name = section_data.get("InstituteName", "") section.primary_lms = section_data.get("PrimaryLMS", None) section.lms_ownership = section_data.get("LMSOwnership", None) section.is_independent_start = section_data.get("IsIndependentStart", False) # Some section data sources have different formats for these dates. try: date_format = "%Y-%m-%d" if section_data.get("StartDate", None): str_date = section_data["StartDate"] start_date = datetime.strptime(str_date, date_format).date() section.start_date = start_date if section_data.get("EndDate", None): str_date = section_data["EndDate"] section.end_date = datetime.strptime(str_date, date_format).date() except Exception as ex: pass section.section_type = section_data["SectionType"] if "independent study" == section.section_type: section.is_independent_study = True else: section.is_independent_study = False section.class_website_url = section_data["ClassWebsiteUrl"] section.sln = section_data["SLN"] if "SummerTerm" in section_data: section.summer_term = section_data["SummerTerm"] else: section.summer_term = "" section.delete_flag = section_data["DeleteFlag"] if "withdrawn" == section.delete_flag: section.is_withdrawn = True else: section.is_withdrawn = False section.current_enrollment = int(section_data['CurrentEnrollment']) section.auditors = int(section_data['Auditors']) section.allows_secondary_grading = section_data["SecondaryGradingOption"] primary_section = section_data["PrimarySection"] if (primary_section is not None and primary_section["SectionID"] != section.section_id): section.is_primary_section = False section.primary_section_href = primary_section["Href"] section.primary_section_id = primary_section["SectionID"] section.primary_section_curriculum_abbr = primary_section[ "CurriculumAbbreviation"] section.primary_section_course_number = primary_section[ "CourseNumber"] else: section.is_primary_section = True section.linked_section_urls = [] for linked_section_type in section_data["LinkedSectionTypes"]: for linked_section_data in linked_section_type["LinkedSections"]: url = linked_section_data["Section"]["Href"] section.linked_section_urls.append(url) section.joint_section_urls = [] for joint_section_data in section_data.get("JointSections", []): url = joint_section_data["Href"] section.joint_section_urls.append(url) section.grade_submission_delegates = [] for del_data in section_data["GradeSubmissionDelegates"]: delegate = GradeSubmissionDelegate( person=pws.get_person_by_regid(del_data["Person"]["RegID"]), delegate_level=del_data["DelegateLevel"]) section.grade_submission_delegates.append(delegate) section.meetings = [] for meeting_data in section_data["Meetings"]: meeting = SectionMeeting() meeting.section = section meeting.term = section.term meeting.meeting_index = meeting_data["MeetingIndex"] meeting.meeting_type = meeting_data["MeetingType"] meeting.building = meeting_data["Building"] if meeting_data["BuildingToBeArranged"]: meeting.building_to_be_arranged = True else: meeting.building_to_be_arranged = False meeting.room_number = meeting_data["RoomNumber"] if meeting_data["RoomToBeArranged"]: meeting.room_to_be_arranged = True else: meeting.room_to_be_arranged = False if meeting_data["DaysOfWeekToBeArranged"]: meeting.days_to_be_arranged = True else: meeting.days_to_be_arranged = False for day_data in meeting_data["DaysOfWeek"]["Days"]: attribute = "meets_%s" % day_data["Name"].lower() setattr(meeting, attribute, True) meeting.start_time = meeting_data["StartTime"] meeting.end_time = meeting_data["EndTime"] meeting.instructors = [] for instructor_data in meeting_data["Instructors"]: # TSPrint: True # Instructor information currently listed on the Time Schedule if (instructor_data["TSPrint"] or include_instructor_not_on_time_schedule): pdata = instructor_data["Person"] if "RegID" in pdata and pdata["RegID"] is not None: try: instructor = pws.get_person_by_regid(pdata["RegID"]) except: instructor = Person(uwregid=pdata["RegID"], display_name=pdata["Name"]) instructor.TSPrint = instructor_data["TSPrint"] meeting.instructors.append(instructor) section.meetings.append(meeting) section.final_exam = None if "FinalExam" in section_data and section_data["FinalExam"] is not None: if "MeetingStatus" in section_data["FinalExam"]: final_exam = FinalExam() final_data = section_data["FinalExam"] status = final_data["MeetingStatus"] final_exam.no_exam_or_nontraditional = False final_exam.is_confirmed = False if (status == "2") or (status == "3"): final_exam.is_confirmed = True elif status == "1": final_exam.no_exam_or_nontraditional = True final_exam.building = final_data["Building"] final_exam.room_number = final_data["RoomNumber"] final_format = "%Y-%m-%d : %H:%M" strptime = datetime.strptime if final_data["Date"] and final_data["Date"] != "0000-00-00": if final_data["StartTime"]: start_string = "%s : %s" % (final_data["Date"], final_data["StartTime"]) final_exam.start_date = strptime(start_string, final_format) if final_data["EndTime"]: end_string = "%s : %s" % (final_data["Date"], final_data["EndTime"]) final_exam.end_date = strptime(end_string, final_format) final_exam.clean_fields() section.final_exam = final_exam return section
def get_term_by_year_and_quarter(self, year, quarter): deprecation("Use restclients.sws.term.get_term_by_year_and_quarter") from restclients.sws.term import get_term_by_year_and_quarter return get_term_by_year_and_quarter(year, quarter)
def test_sws_schedule_data(self): with self.settings( RESTCLIENTS_SWS_DAO_CLASS='restclients.dao_implementation.sws.File', RESTCLIENTS_PWS_DAO_CLASS='restclients.dao_implementation.pws.File'): #Valid data, shouldn't throw exceptions term = get_previous_term() get_schedule_by_regid_and_term('9136CCB8F66711D5BE060004AC494FFE', term) term = get_current_term() get_schedule_by_regid_and_term('9136CCB8F66711D5BE060004AC494FFE', term) term = get_next_term() get_schedule_by_regid_and_term('9136CCB8F66711D5BE060004AC494FFE', term) term = get_term_by_year_and_quarter(2012, 'summer') get_schedule_by_regid_and_term('9136CCB8F66711D5BE060004AC494FFE', term) term = get_current_term() #Bad data, should throw exceptions self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFF", term) self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFX", term) self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "javerage", term) self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "", term) self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, " ", term) term.year = None self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.year = 1929 self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.year = 2399 self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.year = 0 self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.year = -2012 self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.quarter = "spring" self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.quarter = "fall" self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.quarter = "" self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.quarter = " " self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term) term.quarter = "Spring" self.assertRaises(DataFailureException, get_schedule_by_regid_and_term, "9136CCB8F66711D5BE060004AC494FFE", term)
def get_term_by_year_and_quarter(self, year, quarter): deprecation("Use restclients.sws.term.get_term_by_year_and_quarter") from restclients.sws.term import get_term_by_year_and_quarter return get_term_by_year_and_quarter(year, quarter)