def __call__(self): term = getTermForDate(self.event.date) if term is None: return old_date = self.event.date new_date = self.event.replacement_date schoolyear = ISchoolYear(term) timetables = ITimetableContainer(schoolyear) for timetable in timetables.values(): if IScheduleExceptions.providedBy(timetable): modified = False scheduled = DateRange(timetable.first, timetable.last) meeting_exceptions = PersistentList() if old_date in scheduled: meetings = list(timetable.iterMeetings(old_date)) for meeting in meetings: meeting_exceptions.append( MeetingException( meeting.dtstart.replace(year=new_date.year, month=new_date.month, day=new_date.day), meeting.duration, period=meeting.period, meeting_id=meeting.meeting_id)) timetable.exceptions[old_date] = PersistentList() modified = True if new_date in scheduled: timetable.exceptions[new_date] = meeting_exceptions modified = True if modified: zope.lifecycleevent.modified(timetable)
def export_school_timetables(self, wb): self.task_progress.force('export_school_timetables', active=True) ws = wb.add_sheet("School Timetables") school_years = sorted(ISchoolYearContainer(self.context).values(), key=lambda s: s.first) row = 0 for ny, school_year in enumerate(sorted(school_years, key=lambda i: i.last)): timetables = ITimetableContainer(school_year) for nt, timetable in enumerate(sorted(timetables.values(), key=lambda i: i.__name__)): row = self.format_school_timetable(timetable, ws, row) + 1 self.progress('export_school_timetables', normalized_progress( ny, len(school_years), nt, len(timetables))) self.finish('export_school_timetables')
def export_school_timetables(self, wb): self.task_progress.force('export_school_timetables', active=True) ws = wb.add_sheet("School Timetables") school_years = sorted(ISchoolYearContainer(self.context).values(), key=lambda s: s.first) row = 0 for ny, school_year in enumerate( sorted(school_years, key=lambda i: i.last)): timetables = ITimetableContainer(school_year) for nt, timetable in enumerate( sorted(timetables.values(), key=lambda i: i.__name__)): row = self.format_school_timetable(timetable, ws, row) + 1 self.progress( 'export_school_timetables', normalized_progress(ny, len(school_years), nt, len(timetables))) self.finish('export_school_timetables')
def importAllTimetables(self): if not self.shouldImportAllTimetables(): return oldTimetables = ITimetableContainer(self.activeSchoolyear) newTimetables = ITimetableContainer(self.newSchoolyear) chooser = INameChooser(newTimetables) app = ISchoolToolApplication(None) tzname = IApplicationPreferences(app).timezone for schooltt in oldTimetables.values(): newSchooltt = Timetable(self.newSchoolyear.first, self.newSchoolyear.last, title=schooltt.title, timezone=tzname) name = chooser.chooseName(schooltt.__name__, newSchooltt) newTimetables[name] = newSchooltt self.setUpTimetable(newSchooltt, schooltt) if (oldTimetables.default is not None and sameProxiedObjects(oldTimetables.default, schooltt)): newTimetables.default = newSchooltt
def importAllTimetables(self): if not self.shouldImportAllTimetables(): return oldTimetables = ITimetableContainer(self.activeSchoolyear) newTimetables = ITimetableContainer(self.newSchoolyear) chooser = INameChooser(newTimetables) app = ISchoolToolApplication(None) tzname = IApplicationPreferences(app).timezone for schooltt in oldTimetables.values(): newSchooltt = Timetable( self.newSchoolyear.first, self.newSchoolyear.last, title=schooltt.title, timezone=tzname) name = chooser.chooseName(schooltt.__name__, newSchooltt) newTimetables[name] = newSchooltt self.setUpTimetable(newSchooltt, schooltt) if (oldTimetables.default is not None and sameProxiedObjects(oldTimetables.default, schooltt)): newTimetables.default = newSchooltt
def timetables(self): timetables = ITimetableContainer(self.schoolyear, None) if timetables is not None: return sorted(timetables.values(), key=lambda t:t.first, reverse=True)
def timetables(self): timetables = ITimetableContainer(self.schoolyear, None) if timetables is not None: return sorted(timetables.values(), key=lambda t: t.first, reverse=True)