def test_pre_reserve_script_variables(self): class MockContext(object): def getPhysicalPath(self): return ['', 'foo', 'bar'] start, end = datetime.now(), datetime.now() data = utils.mock_data_dictionary({ 'is_test': True, 'description': 'This is the description' }) settings.set('pre_reservation_script', u'exit()') locals_ = {} run_pre_reserve_script(MockContext(), start, end, data, locals_) self.assertEqual(locals_['path'], '/foo/bar') self.assertFalse(locals_['is_group_reservation']) self.assertEqual(locals_['start'], start) self.assertEqual(locals_['end'], end) self.assertEqual(locals_['date'], date) self.assertEqual(locals_['datetime'], datetime) self.assertEqual(locals_['timedelta'], timedelta) self.assertTrue(locals_['formset_available']('mock'))
def run_reserve(self, data, approve_manually, start=None, end=None, group=None, quota=1, dates=None): assert (start and end) or group or dates assert not (start and end and group and dates) email = self.email(data) additional_data = self.additional_data(data, add_manager_defaults=True) session_id = self.session_id() # only store forms defined in the formsets list if not self.context.formsets: additional_data = {} else: additional_data = dict((form, additional_data[form]) for form in self.context.formsets if form in additional_data) run_pre_reserve_script(self.context, start, end, additional_data) def run(): if start and end: return self.scheduler.reserve(email, (start, end), data=additional_data, session_id=session_id, quota=quota) elif group: return self.scheduler.reserve(email, group=group, data=additional_data, session_id=session_id, quota=quota) else: return self.scheduler.reserve(email, dates, data=additional_data, session_id=session_id, quota=quota) token = throttled(run, 'reserve')() if not approve_manually: self.scheduler.approve_reservations(token) self.flash( _(u'Added reservation to your list. ' u'You have 15 minutes to confirm your reservations.'))
def run_reserve( self, data, approve_manually, dates=None, group=None, quota=1, rrule=None, description=None ): assert dates or group assert not (dates and group) email = self.email(data) session_id = self.session_id() additional_data = self.additional_data(data, add_manager_defaults=True) # only store forms defined in the formsets list additional_data = dict( ( form, additional_data[form] ) for form in self.context.formsets if form in additional_data ) if dates: for start, end in utils.pairs(dates): run_pre_reserve_script( self.context, start, end, additional_data ) else: run_pre_reserve_script(self.context, None, None, additional_data) def run(): if dates: return self.scheduler.reserve( email, dates, data=additional_data, session_id=session_id, quota=quota, rrule=rrule, description=description ) else: return self.scheduler.reserve( email, group=group, data=additional_data, session_id=session_id, quota=quota, description=description ) token = throttled(run, 'reserve')() if approve_manually: self.flash(_(u'Added to waitinglist')) else: self.scheduler.approve_reservation(token) self.flash(_(u'Reservation successful'))
def run_reserve( self, data, approve_manually, start=None, end=None, group=None, quota=1 ): assert (start and end) or group assert not (start and end and group) email = self.email(data) additional_data = self.additional_data(data, add_manager_defaults=True) session_id = self.session_id() # only store forms defined in the formsets list additional_data = dict( ( form, additional_data[form] ) for form in self.context.formsets if form in additional_data ) run_pre_reserve_script(self.context, start, end, additional_data) def run(): if start and end: return self.scheduler.reserve( email, (start, end), data=additional_data, session_id=session_id, quota=quota ) else: return self.scheduler.reserve( email, group=group, data=additional_data, session_id=session_id, quota=quota ) token = throttled(run, 'reserve')() if approve_manually: self.flash(_(u'Added to waitinglist')) else: self.scheduler.approve_reservation(token) self.flash(_(u'Reservation successful'))
def run_reserve(self, data, approve_manually, start=None, end=None, group=None, quota=1, dates=None): assert (start and end) or group or dates assert not (start and end and group and dates) email = self.email(data) additional_data = self.additional_data(data, add_manager_defaults=True) session_id = self.session_id() # only store forms defined in the formsets list if not self.context.formsets: additional_data = {} else: additional_data = dict( (form, additional_data[form]) for form in self.context.formsets if form in additional_data ) run_pre_reserve_script(self.context, start, end, additional_data) def run(): if start and end: return self.scheduler.reserve( email, (start, end), data=additional_data, session_id=session_id, quota=quota ) elif group: return self.scheduler.reserve( email, group=group, data=additional_data, session_id=session_id, quota=quota ) else: return self.scheduler.reserve(email, dates, data=additional_data, session_id=session_id, quota=quota) token = throttled(run, "reserve")() if not approve_manually: self.scheduler.approve_reservations(token) self.flash(_(u"Added reservation to your list. " u"You have 15 minutes to confirm your reservations."))
def test_pre_reserve_script_example(self): class MockContext(object): def getPhysicalPath(self): return ['', 'foo', 'bar'] script = u""" if is_group_reservation: exit() if not formset_available('personalien'): exit() if personalien.zipcode != '1337': error('People with uncool zipcodes are not welcome.') """ settings.set('pre_reservation_script', dedent(script)) start, end = None, None data = utils.mock_data_dictionary({}) run = lambda: run_pre_reserve_script(MockContext(), start, end, data) run() # exits early because it's a group reservation start, end = datetime.now(), datetime.now() run() # exits early because the formset is not available data = utils.mock_data_dictionary({ 'zipcode': '1234' }, 'personalien') self.assertRaises(CustomReservationError, run) # uncool zipcode data = utils.mock_data_dictionary({ 'zipcode': '1337' }, 'personalien') run() # ok