예제 #1
0
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))
        ]
    }
예제 #2
0
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
        }
    }
예제 #3
0
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)
    }
예제 #4
0
    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)