def format_timetables(self, section, ws, offset): schedules = IScheduleContainer(section) if not schedules: return offset schedules = list( sorted(schedules.values(), key=lambda s: s.timetable.__name__)) for schedule in schedules: timetable = schedule.timetable self.write_header(ws, offset, 0, "School Timetable") self.write(ws, offset, 1, timetable.__name__) offset += 1 self.write(ws, offset, 0, "Consecutive periods as one") self.write(ws, offset, 1, schedule.consecutive_periods_as_one and 'yes' or 'no') offset += 1 self.write_header(ws, offset, 0, "Day") self.write_header(ws, offset, 1, "Period") offset += 1 for period in schedule.periods: day = period.__parent__ self.write(ws, offset, 0, day.title) self.write(ws, offset, 1, period.title) offset += 1 offset += 1 return offset
def format_timetables(self, section, ws, offset): schedules = IScheduleContainer(section) if not schedules: return offset schedules = list(sorted(schedules.values(), key=lambda s: s.timetable.__name__)) for schedule in schedules: timetable = schedule.timetable self.write_header(ws, offset, 0, "School Timetable") self.write(ws, offset, 1, timetable.__name__) offset += 1 self.write(ws, offset, 0, "Consecutive periods as one") self.write(ws, offset, 1, schedule.consecutive_periods_as_one and 'yes' or 'no') offset += 1 self.write_header(ws, offset, 0, "Day") self.write_header(ws, offset, 1, "Period") offset += 1 for period in schedule.periods: day = period.__parent__ self.write(ws, offset, 0, day.title) self.write(ws, offset, 1, period.title) offset += 1 offset += 1 return offset
def updateSection(self, section, term, course, instructor, periods, dry_run=True): """Create a section. `periods` is a list of tuples (day_id, period_id). A title is generated from the titles of `course` and `instructor`. If an existing section with the same title is found, it is used instead of creating a new one. The created section is returned, or None if dry_run is True. """ if dry_run: return None # Establish links to course and to teacher for c in list(section.courses): if c is not course: section.remove(c) if course not in section.courses: section.courses.add(course) for i in list(section.instructors): if i is not instructor: section.instructor.remove(i) if instructor not in section.instructors: section.instructors.add(instructor) timetable_container = ITimetableContainer(self.schoolyear) timetables = [timetable_container[ttid] for ttid in sorted(periods)] schedules = IScheduleContainer(section) for timetable in timetables: selected = periods[timetable.__name__] schedule = None for s in schedules.values(): if sameProxiedObjects(s.timetable, timetable): schedule = s break if schedule is None: schedule = SelectedPeriodsSchedule(timetable, term.first, term.last, title=timetable.title, timezone=timetable.timezone) for period in selected: schedule.addPeriod(period) schedules[timetable.__name__] = schedule else: for period in schedule.periods: if period not in selected: schedule.removePeriod(period) for period in selected: schedule.addPeriod(period)
def updateSection(self, section, term, course, instructor, periods, dry_run=True): """Create a section. `periods` is a list of tuples (day_id, period_id). A title is generated from the titles of `course` and `instructor`. If an existing section with the same title is found, it is used instead of creating a new one. The created section is returned, or None if dry_run is True. """ if dry_run: return None # Establish links to course and to teacher for c in list(section.courses): if c is not course: section.remove(c) if course not in section.courses: section.courses.add(course) for i in list(section.instructors): if i is not instructor: section.instructor.remove(i) if instructor not in section.instructors: section.instructors.add(instructor) timetable_container = ITimetableContainer(self.schoolyear) timetables = [timetable_container[ttid] for ttid in sorted(periods)] schedules = IScheduleContainer(section) for timetable in timetables: selected = periods[timetable.__name__] schedule = None for s in schedules.values(): if sameProxiedObjects(s.timetable, timetable): schedule = s break if schedule is None: schedule = SelectedPeriodsSchedule( timetable, term.first, term.last, title=timetable.title, timezone=timetable.timezone) for period in selected: schedule.addPeriod(period) schedules[timetable.__name__] = schedule else: for period in schedule.periods: if period not in selected: schedule.removePeriod(period) for period in selected: schedule.addPeriod(period)