API: Expose history of check-ins (Z#23206049)

This commit is contained in:
Raphael Michel
2025-10-10 17:47:05 +02:00
committed by Raphael Michel
parent 7d5df2b69e
commit 9a69b76880
6 changed files with 215 additions and 3 deletions

View File

@@ -236,6 +236,21 @@ TEST_LIST_RES = {
"rules": {}
}
TEST_HISTORY_RES = {
"successful": True,
"error_reason": None,
"error_explanation": None,
"position": 1234,
"datetime": "2017-12-25T12:45:23Z",
"created": "2017-12-25T12:45:23Z",
"list": 2,
"auto_checked_in": False,
"gate": None,
"device": None,
"device_id": None,
"type": "entry",
}
@pytest.fixture
def clist(event, item):
@@ -1366,3 +1381,57 @@ def test_expand(token_client, organizer, event, clist, clist_all, item, other_it
))
assert resp.status_code == 200
assert 'value' in resp.data['results'][0]['variation']
@pytest.mark.django_db
def test_history(token_client, organizer, event, clist, order):
with scopes_disabled():
ci = order.positions.first().checkins.create(list=clist, type=Checkin.TYPE_ENTRY, datetime=now())
res = dict(TEST_HISTORY_RES)
res["id"] = ci.pk
res["datetime"] = ci.datetime.isoformat().replace('+00:00', 'Z')
res["created"] = ci.created.isoformat().replace('+00:00', 'Z')
res["list"] = clist.pk
res["position"] = ci.position_id
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/'.format(
organizer.slug, event.slug,
))
assert resp.status_code == 200
assert res == resp.data['results'][0]
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?auto_checked_in=false'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 1
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?auto_checked_in=true'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 0
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?successful=true'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 1
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?successful=false'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 0
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?type=entry'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 1
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?type=exit'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 0
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?created_before=2099-01-01T00:00:00Z'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 1
resp = token_client.get('/api/v1/organizers/{}/events/{}/checkins/?created_before=2017-01-01T00:00:00Z'.format(
organizer.slug, event.slug,
))
assert len(resp.data['results']) == 0

View File

@@ -54,6 +54,7 @@ event_urls = [
(None, 'taxrules/'),
('can_view_orders', 'waitinglistentries/'),
('can_view_orders', 'checkinlists/'),
('can_view_orders', 'checkins/'),
(None, 'seats/'),
]
@@ -176,6 +177,8 @@ event_permission_sub_urls = [
('post', 'can_change_orders', 'orders/ABC12/refunds/1/done/', 404),
('get', 'can_view_orders', 'checkinlists/', 200),
('post', 'can_change_orders', 'checkinlists/1/failed_checkins/', 400),
('get', 'can_view_orders', 'checkins/', 200),
('get', 'can_view_orders', 'checkins/1/', 404),
('post', 'can_change_event_settings', 'checkinlists/', 400),
('put', 'can_change_event_settings', 'checkinlists/1/', 404),
('patch', 'can_change_event_settings', 'checkinlists/1/', 404),