def parse_one_shot(row, course_inst): """Parses a table row for a one-time meeting and adds it to the course instance""" _sect_id, mtg_type, date, _mtg_doy, start_end_times, bldg, room, _ = row mtg_type = mtg_type.text date = parse_ucsd_date(date.text) start, end = parse_start_end_times(start_end_times) location = Location.new(bldg.text.strip(), room.text.strip()) one_shot = OneShotMeeting(date, start, end, location) if mtg_type == config.FINAL_CODE: if course_inst.final is not None and course_inst.final != one_shot: raise ValueError, "Multiple final exams\n(Old: %s\n New: %s)" % (course_inst.final, one_shot) course_inst.final = one_shot else: course_inst.add_meeting(mtg_type, one_shot)
def parse_unseated_meeting(row, course_inst): lectures = course_inst.lectures _sect_id, mtg_type, sect_num, mtg_days_of_wk, start_end_times, bldg, room, instructor = row if _sect_id.text.strip():# req'd, but time+location TBA return parse_TBA_seminar_or_sect(row, course_inst) mtg_type = mtg_type.text sect_num = sect_num.text mtg_days_of_wk = mtg_days_of_wk.text days = DaysOfWeekSet.from_ucsd_abbrevs(mtg_days_of_wk) start, end = parse_start_end_times(start_end_times) location = Location.new(bldg.text.strip(), room.text.strip()) instructor = parse_instructor(instructor) if instructor.text != NBSP else None meeting = RecurringMeeting(sect_num, instructor, start, end, days, location) course_inst.add_meeting(mtg_type, meeting)
def parse_one_shot(row, course_inst): """Parses a table row for a one-time meeting and adds it to the course instance""" _sect_id, mtg_type, date, _mtg_doy, start_end_times, bldg, room, _ = row mtg_type = mtg_type.text date = parse_ucsd_date(date.text) start, end = parse_start_end_times(start_end_times) location = Location.new(bldg.text.strip(), room.text.strip()) one_shot = OneShotMeeting(date, start, end, location) if mtg_type == config.FINAL_CODE: if course_inst.final is not None and course_inst.final != one_shot: raise ValueError, "Multiple final exams\n(Old: %s\n New: %s)" % ( course_inst.final, one_shot) course_inst.final = one_shot else: course_inst.add_meeting(mtg_type, one_shot)
def parse_unseated_meeting(row, course_inst): lectures = course_inst.lectures _sect_id, mtg_type, sect_num, mtg_days_of_wk, start_end_times, bldg, room, instructor = row if _sect_id.text.strip(): # req'd, but time+location TBA return parse_TBA_seminar_or_sect(row, course_inst) mtg_type = mtg_type.text sect_num = sect_num.text mtg_days_of_wk = mtg_days_of_wk.text days = DaysOfWeekSet.from_ucsd_abbrevs(mtg_days_of_wk) start, end = parse_start_end_times(start_end_times) location = Location.new(bldg.text.strip(), room.text.strip()) instructor = parse_instructor( instructor) if instructor.text != NBSP else None meeting = RecurringMeeting(sect_num, instructor, start, end, days, location) course_inst.add_meeting(mtg_type, meeting)
def parse_seated_meeting(row, course_inst): sect_id, mtg_type, sect_num, mtg_days_of_wk, start_end_times, bldg, room, instructor, avail, limit, books = row mtg_type = mtg_type.text #FIXME: PRACTICUM_CODE not strictly problematic if mtg_type in PROBLEMATIC_MEETING_TYPES: msg = "Instance of course %s deemed problematic due to including meeting of type code %s" % (repr(course_inst.code), repr(mtg_type)) LOGGER.info(msg) raise ProblematicCourse, msg sect_id = int(sect_id.text) sect_num = sect_num.text days = DaysOfWeekSet.from_ucsd_abbrevs(mtg_days_of_wk.text) start, end = parse_start_end_times(start_end_times) bldg = bldg.text.strip() room = room.text.strip() location = Location.new(bldg, room) available_seats, total_seats = parse_seating(avail, limit) books_link = extract_JavaScript_link(books.find(ANCHOR)) instructor = parse_instructor(instructor) if instructor.text != NBSP else None meeting = RecurringSeatedMeeting(sect_id, sect_num, instructor, start, end, days, available_seats, total_seats, books_link, location) course_inst.add_meeting(mtg_type, meeting)
def parse_seated_meeting(row, course_inst): sect_id, mtg_type, sect_num, mtg_days_of_wk, start_end_times, bldg, room, instructor, avail, limit, books = row mtg_type = mtg_type.text #FIXME: PRACTICUM_CODE not strictly problematic if mtg_type in PROBLEMATIC_MEETING_TYPES: msg = "Instance of course %s deemed problematic due to including meeting of type code %s" % ( repr(course_inst.code), repr(mtg_type)) LOGGER.info(msg) raise ProblematicCourse, msg sect_id = int(sect_id.text) sect_num = sect_num.text days = DaysOfWeekSet.from_ucsd_abbrevs(mtg_days_of_wk.text) start, end = parse_start_end_times(start_end_times) bldg = bldg.text.strip() room = room.text.strip() location = Location.new(bldg, room) available_seats, total_seats = parse_seating(avail, limit) books_link = extract_JavaScript_link(books.find(ANCHOR)) instructor = parse_instructor( instructor) if instructor.text != NBSP else None meeting = RecurringSeatedMeeting(sect_id, sect_num, instructor, start, end, days, available_seats, total_seats, books_link, location) course_inst.add_meeting(mtg_type, meeting)