diff --git a/import2ledger/importers/github.py b/import2ledger/importers/github.py new file mode 100644 index 0000000000000000000000000000000000000000..ae2ea9a8caac638a39dfb6129f8db4c0b081086e --- /dev/null +++ b/import2ledger/importers/github.py @@ -0,0 +1,30 @@ +import decimal + +from . import _csv +from .. import strparse + +class SponsorsImporter(_csv.CSVImporterBase): + DATE_FMT = '%Y-%m-%d %H:%M:%S %z' + NEEDED_FIELDS = frozenset([ + 'Processed Amount', + 'Status', + 'Transaction Date', + ]) + COPIED_FIELDS = { + 'Sponsor Handle': 'handle', + 'Sponsor Profile Name': 'name', + 'Sponsor Public Email': 'email', + 'Transaction ID': 'transaction_id', + } + ENTRY_SEED = {'currency': 'USD'} + + def _read_row(self, row): + amount = strparse.currency_decimal(row['Processed Amount']) + if (not amount) or row['Status'] != 'settled': + return None + return { + 'amount': amount, + 'date': strparse.date(row['Transaction Date'], self.DATE_FMT), + 'payee': row['Sponsor Profile Name'] or row['Sponsor Handle'], + 'start_date': strparse.date(row['Sponsorship Started On'], self.DATE_FMT), + }