def test_get_booking_params_for_event_multiple_times(create_event, create_contribution, create_entry, dummy_room, start_time, end_time, expected_params): start_dt = pytz.utc.localize(datetime.combine(date(2019, 8, 16), start_time)) end_dt = pytz.utc.localize(datetime.combine(date(2019, 8, 18), end_time)) event = create_event(start_dt=start_dt, end_dt=end_dt, room=dummy_room) c1 = create_contribution(event, 'C1', timedelta(minutes=30)) c2 = create_contribution(event, 'C2', timedelta(minutes=120)) c3 = create_contribution(event, 'C3', timedelta(minutes=30)) create_entry(c1, pytz.utc.localize(datetime(2019, 8, 17, 9, 0))) create_entry(c2, pytz.utc.localize(datetime(2019, 8, 17, 18, 0))) create_entry(c3, pytz.utc.localize(datetime(2019, 8, 17, 19, 0))) params = get_booking_params_for_event(event) assert params == { 'type': 'mixed_times', 'params': { 'link_type': 'event', 'link_id': event.id, 'text': dummy_room.name, }, 'time_info': [ (date(2019, 8, 16), dict({'sd': '2019-08-16'}, **expected_params)), # this day has timetable entries -> not using the event defaults (date(2019, 8, 17), {'interval': 'week', 'number': 1, 'recurrence': 'single', 'sd': '2019-08-17', 'st': '09:00', 'et': '20:00'}), (date(2019, 8, 18), dict({'sd': '2019-08-18'}, **expected_params)) ] }
def test_get_booking_params_timezone(create_event): chicago_tz = pytz.timezone('America/Chicago') start_dt = chicago_tz.localize(datetime(2019, 8, 16, 8, 0)).astimezone(pytz.utc) end_dt = chicago_tz.localize(datetime(2019, 8, 18, 22, 0)).astimezone(pytz.utc) event = create_event(start_dt=start_dt, end_dt=end_dt, timezone='America/Chicago') assert get_booking_params_for_event(event) == { 'type': 'same_times', 'params': { 'sd': '2019-08-16', 'st': '08:00', 'ed': '2019-08-18', 'et': '22:00', 'interval': 'week', 'number': 1, 'recurrence': 'daily', 'link_id': event.id, 'link_type': 'event', 'text': None } }
def test_get_booking_params_for_event_same_times(create_event, dummy_room, start_dt, end_dt, expected_params): start_dt = pytz.utc.localize(start_dt) end_dt = pytz.utc.localize(end_dt) event = create_event(start_dt=start_dt, end_dt=end_dt, room=dummy_room) params = get_booking_params_for_event(event) assert params == { 'type': 'same_times', 'params': dict({ 'link_id': event.id, 'link_type': 'event', 'text': dummy_room.name, }, **expected_params) }
def _process(self): form = BookingListForm(event=self.event) has_contribs = _contrib_query(self.event).has_rows() has_session_blocks = _session_block_query(self.event).has_rows() links = (ReservationLink.query.with_parent(self.event).options( joinedload('reservation').joinedload('room'), joinedload('session_block'), joinedload('contribution')).filter( ~ReservationLink.reservation.has(Reservation.is_cancelled)). join(Reservation).order_by(Reservation.start_dt).all()) contribs_data = { c.id: { 'start_dt': c.start_dt.isoformat(), 'end_dt': c.end_dt.isoformat() } for c in _contrib_query(self.event) } session_blocks_data = { sb.id: { 'start_dt': sb.start_dt.isoformat(), 'end_dt': sb.end_dt.isoformat() } for sb in _session_block_query(self.event) } is_past_event = self.event.end_dt < now_utc() event_rb_params = get_booking_params_for_event(self.event) return WPEventBookingList.render_template( 'booking_list.html', self.event, form=form, links=links, has_contribs=has_contribs, contribs_data=contribs_data, has_session_blocks=has_session_blocks, session_blocks_data=session_blocks_data, event_rb_params=event_rb_params, is_past_event=is_past_event)