Beispiel #1
0
 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)
Beispiel #2
0
 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')
Beispiel #3
0
 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')
Beispiel #4
0
 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
Beispiel #6
0
 def timetables(self):
     timetables = ITimetableContainer(self.schoolyear, None)
     if timetables is not None:
         return sorted(timetables.values(), key=lambda t:t.first,
                       reverse=True)
Beispiel #7
0
 def timetables(self):
     timetables = ITimetableContainer(self.schoolyear, None)
     if timetables is not None:
         return sorted(timetables.values(),
                       key=lambda t: t.first,
                       reverse=True)