예제 #1
0
    def update(self):
        """Read and validate form data, and update model if necessary.

        Also choose the correct template to render.
        """
        self.field_errors = []
        self.template = self.select_template

        if 'CANCEL' in self.request:
            self.request.response.redirect(
                absoluteURL(self.context, self.request))
            return

        if 'date' in self.request:
            try:
                self.date = parse_date(self.request['date'])
            except ValueError:
                self.error = _("Invalid date. Please use YYYY-MM-DD format.")
            else:
                self.term = getTermForDate(self.date)
                if self.term is None:
                    self.error = _("The date does not belong to any term.")
                    self.date = None

        if self.date:
            self.template = self.form_template

        if self.date and 'SUBMIT' in self.request:
            replacements = self.extractMeetings()
            if self.field_errors:
                self.error = self.field_error_message
            else:
                self.updateExceptions(replacements)
                self.request.response.redirect(
                    absoluteURL(self.context, self.request))
예제 #2
0
    def update(self):
        """Read and validate form data, and update model if necessary.

        Also choose the correct template to render.
        """
        self.field_errors = []
        self.template = self.select_template

        if 'CANCEL' in self.request:
            self.request.response.redirect(
                absoluteURL(self.context, self.request))
            return

        if 'date' in self.request:
            try:
                self.date = parse_date(self.request['date'])
            except ValueError:
                self.error = _("Invalid date. Please use YYYY-MM-DD format.")
            else:
                self.term = getTermForDate(self.date)
                if self.term is None:
                    self.error = _("The date does not belong to any term.")
                    self.date = None

        if self.date:
            self.template = self.form_template

        if self.date and 'SUBMIT' in self.request:
            replacements = self.extractMeetings()
            if self.field_errors:
                self.error = self.field_error_message
            else:
                self.updateExceptions(replacements)
                self.request.response.redirect(
                    absoluteURL(self.context, self.request))
예제 #3
0
파일: term.py 프로젝트: l1ph0x/schooltool-2
 def setHolidays(self, term):
     term.addWeekdays(0, 1, 2, 3, 4, 5, 6)
     holidays = self.request.form.get('holiday', [])
     if not isinstance(holidays, list):
         holidays = [holidays]
     for holiday in holidays:
         try:
             term.remove(parse_date(holiday))
         except ValueError:
             pass # ignore ill-formed or out-of-range dates
     toggle = [n for n in range(7) if ('TOGGLE_%d' % n) in self.request]
     if toggle:
         term.toggleWeekdays(*toggle)
예제 #4
0
 def date(self):
     event_date = self.request.get('date', None)
     if event_date is None:
         return None
     return parse_date(event_date)
예제 #5
0
 def dateTitle(self):
     return parse_date(self.request['date'])
예제 #6
0
 def getDate(self):
     if 'date' in self.request:
         return parse_date(self.request['date'])
     else:
         return datetime.date.today()
예제 #7
0
 def getDate(self):
     if 'date' in self.request:
         return parse_date(self.request['date'])
     else:
         return datetime.date.today()
예제 #8
0
    def update(self):
        self.template = self.date_template
        if 'CANCEL' in self.request:
            self.request.response.redirect(
                absoluteURL(self.context, self.request))
            return
        if 'date' in self.request:
            try:
                self.date = parse_date(self.request['date'])
            except ValueError:
                self.error = _("The date you entered is invalid."
                               "  Please use the YYYY-MM-DD format.")
                return
            if not self.date in self.context:
                self.error = _("The date you entered does not belong to"
                               " this term.")
                return
            if not self.context.isSchoolday(self.date):
                self.error = _("The date you entered is not a schoolday.")
                return

            self.template = self.replacement_template
        if 'replacement' in self.request:
            try:
                self.replacement = parse_date(self.request['replacement'])
            except ValueError:
                self.error = _("The replacement date you entered is invalid.")
                self.template = self.replacement_template
                return

        if self.date and self.replacement:
            if self.context.last < self.replacement:
                # XXX: I wonder if all places that are dependent on
                #      term start/end dates are updated properly
                self.context.last = self.replacement

            # XXX: assert?!
            assert not self.context.isSchoolday(self.replacement)
            assert self.context.isSchoolday(self.date)
            self.context.add(self.replacement)

            notify(EmergencyDayEvent(self.date, self.replacement))

            # XXX: Following code should be move to the event subscriber, but!
            #      It wants to store translated messages, and in current default
            #      case the event description will be stored in the language
            #      from somebodys browser settings.  Now that's naughty!
            #      If only we had 'apllication language' separate form 'user
            #      presentation language' this problem would go away.
            #
            # Post calendar events to schoolwide calendar
            calendar = ISchoolToolCalendar(ISchoolToolApplication(None))
            dtstart = datetime.datetime.combine(self.date, datetime.time())
            msg = _('School cancelled due to emergency.'
                    ' Replacement day $replacement.',
                    mapping={'replacement': str(self.replacement)})
            msg = translate(msg, context=self.request)
            calendar.addEvent(
                CalendarEvent(dtstart, datetime.timedelta(),
                              msg, allday=True))

            dtstart = datetime.datetime.combine(self.replacement,
                                                datetime.time())
            msg = _('Replacement day for emergency day $emergency.',
                    mapping={'emergency': str(self.date)})
            msg = translate(msg, context=self.request)
            calendar.addEvent(
                CalendarEvent(dtstart, datetime.timedelta(),
                              msg, allday=True))

            self.request.response.redirect(
                absoluteURL(self.context, self.request))