コード例 #1
0
ファイル: utils.py プロジェクト: yzhan289/semesterly
def courses_to_slots(courses, locked_sections, semester, optional_course_ids):
    """
    Return a list of lists of Slots. Each Slot sublist represents the list of possibilities
    for a given course and section type, i.e. a valid timetable consists of any one slot from each
    sublist.
    """
    slots = []
    optional_course_ids = set(optional_course_ids)
    for course in courses:
        is_optional = course.id in optional_course_ids
        grouped = get_sections_by_section_type(course, semester)
        for section_type, sections in grouped.iteritems():
            locked_section_code = locked_sections.get(str(course.id),
                                                      {}).get(section_type)
            section_codes = [section.meeting_section for section in sections]
            if locked_section_code in section_codes:
                locked_section = next(
                    s for s in sections
                    if s.meeting_section == locked_section_code)
                locked_slot = Slot(course,
                                   locked_section,
                                   locked_section.offering_set.all(),
                                   is_optional=is_optional,
                                   is_locked=True)
                slots.append([locked_slot])
            else:
                possibilities = [
                    Slot(course,
                         section,
                         section.offering_set.all(),
                         is_optional=is_optional,
                         is_locked=False) for section in sections
                ]
                slots.append(possibilities)
    return slots
コード例 #2
0
ファイル: utils.py プロジェクト: majidaziz/semesterly
def courses_to_slots(courses, locked_sections, semester, optional_course_ids):
    """
    Return a list of lists of Slots. Each Slot sublist represents the list of possibilities
    for a given course and section type, i.e. a valid timetable consists of any one slot from each
    sublist.
    """
    slots = []
    optional_course_ids = set(optional_course_ids)
    for course in courses:
        is_optional = course.id in optional_course_ids
        grouped = get_sections_by_section_type(course, semester)
        for section_type, sections in grouped.iteritems():
            locked_section_code = locked_sections.get(str(course.id), {}).get(section_type)
            section_codes = [section.meeting_section for section in sections]
            if locked_section_code in section_codes:
                locked_section = next(s for s in sections
                                      if s.meeting_section == locked_section_code)
                locked_slot = Slot(course, locked_section, locked_section.offering_set.all(),
                                   is_optional=is_optional, is_locked=True)
                slots.append([locked_slot])
            else:
                possibilities = [Slot(course, section, section.offering_set.all(),
                                      is_optional=is_optional, is_locked=False)
                                 for section in sections]
                slots.append(possibilities)
    return slots