コード例 #1
0
    def test_get_dates_document_recurrence_exdate_bug(self):
        """Document a bug(-fix) where exdates for recurrences were not applied
        correctly.

        """
        recurrence = u"RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20140402T000000" u"\r\nEXDATE:20140304T000000"
        data = {"start_time": time(13, 0), "recurrence": recurrence, "end_time": time(16, 30), "day": date(2014, 2, 18)}

        dates = utils.get_dates(data)
        self.assertEqual(3, len(dates))

        expected = [
            (datetime(2014, 2, 18, 13), datetime(2014, 2, 18, 16, 30)),
            (datetime(2014, 3, 18, 13), datetime(2014, 3, 18, 16, 30)),
            (datetime(2014, 4, 1, 13), datetime(2014, 4, 1, 16, 30)),
        ]
        self.assertListEqual(expected, dates)
コード例 #2
0
    def allocate(self, data):
        self._validate_recurrence_options(data)
        dates = utils.get_dates(data)

        def allocate():
            self.scheduler.allocate(
                dates,
                raster=data['raster'],
                quota=data['quota'],
                partly_available=data['partly_available'],
                grouped=not data['separately'],
                approve_manually=data['approve_manually'],
                reservation_quota_limit=data['reservation_quota_limit'],
                whole_day=data['whole_day'],
                rrule=data['recurrence'],
            )
            self.flash(_(u'Allocation added'))

        utils.handle_action(action=allocate, success=self.redirect_to_context)
コード例 #3
0
    def allocate(self, data):
        self._validate_recurrence_options(data)
        dates = utils.get_dates(data)

        def allocate():
            self.scheduler.allocate(
                dates,
                raster=data['raster'],
                quota=data['quota'],
                partly_available=data['partly_available'],
                grouped=not data['separately'],
                approve_manually=data['approve_manually'],
                reservation_quota_limit=data['reservation_quota_limit'],
                whole_day=data['whole_day'],
                rrule=data['recurrence'],

            )
            self.flash(_(u'Allocation added'))

        utils.handle_action(action=allocate, success=self.redirect_to_context)
コード例 #4
0
    def reserve(self, data):
        allocation = self.allocation(data['id'])
        approve_manually = allocation.approve_manually

        self.inject_missing_data(data, allocation)

        dates = utils.get_dates(data, is_whole_day=allocation.whole_day)
        quota = int(data.get('quota', 1))
        description = data.get('description')

        def reserve():
            self.run_reserve(
                data=data, approve_manually=approve_manually,
                dates=dates, quota=quota,
                rrule=data['recurrence'],
                description=description,
            )

        utils.handle_action(
            action=reserve, success=self.redirect_to_your_reservations
        )
コード例 #5
0
    def test_get_dates_document_recurrence_exdate_bug(self):
        """Document a bug(-fix) where exdates for recurrences were not applied
        correctly.

        """
        recurrence = u'RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20140402T000000'\
                     u'\r\nEXDATE:20140304T000000'
        data = {
            'start_time': time(13, 0),
            'recurrence': recurrence,
            'end_time': time(16, 30),
            'day': date(2014, 2, 18)
        }

        dates = utils.get_dates(data)
        self.assertEqual(3, len(dates))

        expected = [(datetime(2014, 2, 18, 13), datetime(2014, 2, 18, 16, 30)),
                    (datetime(2014, 3, 18, 13), datetime(2014, 3, 18, 16, 30)),
                    (datetime(2014, 4, 1, 13), datetime(2014, 4, 1, 16, 30))]
        self.assertListEqual(expected, dates)