def _course_search(search_phrase): term_id = current_term_id() course_rows = [] def _compress_to_alphanumeric(s): return ''.join(e for e in s if e.isalnum()) words = search_phrase.rsplit(' ', 1) if len(words) == 1: candidate_subject_area = None candidate_catalog_id = words[0] else: candidate_subject_area = words[0] candidate_catalog_id = words[1] # If the search phrase appears to contain a catalog id, set up the course search that way. if any(c.isdigit() for c in candidate_catalog_id): subject_area = candidate_subject_area and _compress_to_alphanumeric( candidate_subject_area).upper() catalog_id = candidate_catalog_id.upper() course_rows = get_enrolled_primary_sections_for_parsed_code( term_id, subject_area, catalog_id) # Otherwise just compress the search phrase to alphanumeric characters and look for a simple match. else: compressed_search_phrase = _compress_to_alphanumeric(search_phrase) if compressed_search_phrase: course_rows = get_enrolled_primary_sections( term_id, compressed_search_phrase.upper()) courses = [] if course_rows: for row in islice(course_rows, 50): courses.append({ 'termId': row['term_id'], 'sectionId': row['sis_section_id'], 'courseName': row['sis_course_name'], 'courseTitle': row['sis_course_title'], 'instructionFormat': row['sis_instruction_format'], 'sectionNum': row['sis_section_num'], 'instructors': row['instructors'], }) return { 'courses': courses, 'totalCourseCount': len(course_rows), }
def test_get_enrolled_primary_sections(self, app): sections = data_loch.get_enrolled_primary_sections('2178', 'MATH1') assert len(sections) == 6 for section in sections: assert section['term_id'] == '2178' assert section['sis_course_name'].startswith('MATH 1')