From 8a5c418f0c981fdc1e72e9346a9ab1d5d567726d Mon Sep 17 00:00:00 2001 From: mroloux Date: Wed, 8 Jul 2026 14:04:43 +0200 Subject: [PATCH] Add flat list and CSV report methods for event reports --- seatsio/reports/events/eventReports.py | 9 +++++ .../events/testEventReportsFlatList.py | 38 +++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 tests/reports/events/testEventReportsFlatList.py diff --git a/seatsio/reports/events/eventReports.py b/seatsio/reports/events/eventReports.py index 378d88a..e1542cd 100644 --- a/seatsio/reports/events/eventReports.py +++ b/seatsio/reports/events/eventReports.py @@ -92,6 +92,15 @@ def summary_by_channel(self, event_key): def deep_summary_by_channel(self, event_key): return self.__fetch_deep_summary_report("byChannel", event_key) + def flat_list(self, event_key): + url = "/reports/events/{key}" + body = self.http_client.url(url, key=event_key).get() + return [EventObjectInfo(item) for item in body] + + def flat_list_csv(self, event_key): + url = "/reports/events/{key}.csv" + return self.http_client.url(url, key=event_key).get_raw().decode('utf-8') + def __fetch_report(self, report_type, event_key, report_filter=None): if report_filter: url = "/reports/events/{key}/{reportType}/{filter}" diff --git a/tests/reports/events/testEventReportsFlatList.py b/tests/reports/events/testEventReportsFlatList.py new file mode 100644 index 0000000..e4f0da0 --- /dev/null +++ b/tests/reports/events/testEventReportsFlatList.py @@ -0,0 +1,38 @@ +from seatsio.domain import EventObjectInfo +from tests.seatsioClientTest import SeatsioClientTest +from tests.util.asserts import assert_that + + +class EventReportsFlatListTest(SeatsioClientTest): + + def test_flat_list(self): + chart_key = self.create_test_chart() + event = self.client.events.create(chart_key) + + report = self.client.events.reports.flat_list(event.key) + + assert_that(report).is_instance(list) + assert_that(report[0]).is_instance(EventObjectInfo) + labels = [item.label for item in report] + assert_that(labels).is_equal_to(sorted(labels)) + + def test_flat_list_properties(self): + chart_key = self.create_test_chart() + event = self.client.events.create(chart_key) + + report = self.client.events.reports.flat_list(event.key) + + first = next(item for item in report if item.label == "A-1") + assert_that(first.status).is_equal_to("free") + assert_that(first.label).is_equal_to("A-1") + assert_that(first.object_type).is_equal_to("seat") + + def test_flat_list_csv(self): + chart_key = self.create_test_chart() + event = self.client.events.create(chart_key) + + csv = self.client.events.reports.flat_list_csv(event.key) + + assert_that(csv).is_instance(str) + assert_that(csv).contains("A-1") +