From 2e87f9eaf036ef0bafa6eaaccea7dfc78e537c7f Mon Sep 17 00:00:00 2001 From: Ben Sturmfels Date: Tue, 30 Sep 2025 23:32:14 +1000 Subject: [PATCH] Update Eventbrite importer for new CSV format --- import2ledger/importers/eventbrite.py | 35 ++++++++++++--------------- setup.py | 2 +- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/import2ledger/importers/eventbrite.py b/import2ledger/importers/eventbrite.py index 21633b3..b6b4965 100644 --- a/import2ledger/importers/eventbrite.py +++ b/import2ledger/importers/eventbrite.py @@ -1,30 +1,28 @@ -import decimal +import datetime from . import _csv from .. import strparse + class SalesImporter(_csv.CSVImporterBase): DECIMAL_FIELDS = { - 'Eventbrite Fees': 'eventbrite_fees', - 'Eventbrite Payment Processing': 'payment_fees', - 'Fees Paid': 'total_fees', - 'Quantity': 'quantity', - 'Tax Paid': 'tax', - 'Total Paid': 'amount', + 'Eventbrite service fee': 'service_fee', + 'Eventbrite payment processing fee': 'payment_processing_fee', + 'Ticket quantity': 'ticket_quantity', + 'Eventbrite tax': 'eventbrite_tax', + 'Organizer tax': 'organizer_tax', + 'Gross sales': 'amount', } NEEDED_FIELDS = frozenset([ - 'Order Date', - 'Order Type', + 'Order date', + 'Payment status', *DECIMAL_FIELDS, ]) OPTIONAL_FIELDS = { - 'Attendee #': 'attendee_id', - 'Company': 'corporation', 'Currency': 'currency', 'Event ID': 'event_id', - 'Event Name': 'event_name', - 'Order #': 'order_id', - 'Ticket Type': 'ticket_type', + 'Event name': 'event_name', + 'Order ID': 'order_id', } ENTRY_SEED = {'currency': 'USD'} @@ -36,12 +34,9 @@ class SalesImporter(_csv.CSVImporterBase): self.DECIMAL_FIELDS[key]: strparse.currency_decimal(row[key]) for key in self.DECIMAL_FIELDS } - date_s, _, _ = row['Order Date'].partition(' ') - retval['date'] = strparse.date(date_s, '%Y-%m-%d') - try: - retval['payee'] = '{Buyer First Name} {Buyer Last Name}'.format_map(row) - except KeyError: - retval['payee'] = '{First Name} {Last Name}'.format_map(row) + retval['date'] = datetime.datetime.fromisoformat(row['Order date']).date() + retval['payee'] = '{Buyer first name} {Buyer last name}'.format_map(row) + retval['total_fees'] = retval['service_fee'] + retval['payment_processing_fee'] retval.update( (self.OPTIONAL_FIELDS[key], row.get(key, '')) for key in self.OPTIONAL_FIELDS diff --git a/setup.py b/setup.py index 5262db2..fb8066c 100755 --- a/setup.py +++ b/setup.py @@ -30,7 +30,7 @@ REQUIREMENTS['tests_require'] = [ setup( name='import2ledger', description="Import different sources of financial data to Ledger", - version='1.4.5', + version='1.4.6', author='Brett Smith', author_email='brettcsmith@brettcsmith.org', license='GNU AGPLv3+',