parent
26c8180ca0
commit
bfc757cace
4 changed files with 96 additions and 0 deletions
@ -0,0 +1,91 @@ |
||||
import django, sys, os |
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'apiserver.settings' |
||||
django.setup() |
||||
|
||||
import datetime |
||||
import json |
||||
from apiserver.api import models, old_models, utils |
||||
|
||||
PAYPAL_FOLDER = 'old_paypal/' |
||||
transactions = models.Transaction.objects.all() |
||||
|
||||
paypal_files = os.listdir(PAYPAL_FOLDER) |
||||
paypal_json = [x for x in paypal_files if x.endswith('.json')] |
||||
|
||||
if paypal_json: |
||||
print('Found paypal json files:', paypal_json) |
||||
else: |
||||
print('Couldnt find any paypal json files in', PAYPAL_FOLDER) |
||||
exit(1) |
||||
|
||||
paypal_txs = [] |
||||
|
||||
for filename in paypal_json: |
||||
with open(PAYPAL_FOLDER + filename) as f: |
||||
j = json.load(f) |
||||
paypal_txs.extend(j['transaction_details']) |
||||
|
||||
print('Num transactions found:', len(paypal_txs)) |
||||
print('Linking with portal transactions...') |
||||
|
||||
paypal_accounts = {} |
||||
|
||||
for t in paypal_txs: |
||||
t_info = t['transaction_info'] |
||||
|
||||
|
||||
account_id = t_info.get('paypal_account_id', None) |
||||
if not account_id: |
||||
print('Skipping tx id: {}, no payer (could be bank tx)'.format( |
||||
t_info['transaction_id'], |
||||
)) |
||||
continue |
||||
|
||||
if account_id not in paypal_accounts: |
||||
paypal_accounts[account_id] = [] |
||||
|
||||
|
||||
reference = t_info['transaction_id'][:11] |
||||
try: |
||||
portal_tx = transactions.get(reference_number=reference) |
||||
paypal_accounts[account_id].append(portal_tx.member_id) |
||||
except models.Transaction.DoesNotExist: |
||||
print('Unable to find portal transaction for id: {}, ref: {}, date: {}, name: {} {}, email: {}'.format( |
||||
t_info['transaction_id'], |
||||
reference, |
||||
t_info['transaction_initiation_date'][:10], |
||||
t['payer_info']['payer_name'].get('given_name', 'unknown'), |
||||
t['payer_info']['payer_name'].get('surname', 'unknown'), |
||||
t['payer_info'].get('email_address', 'unknown'), |
||||
)) |
||||
|
||||
print('Num paypal accounts found:', len(paypal_accounts)) |
||||
print('Linking with portal members...') |
||||
count = 0 |
||||
|
||||
for account_id, member_ids in paypal_accounts.items(): |
||||
if len(member_ids) == 0: |
||||
print('Skipping account {}, no members found'.format( |
||||
account_id, |
||||
)) |
||||
continue |
||||
|
||||
member_id = member_ids[0] |
||||
|
||||
if len(set(member_ids)) > 1: |
||||
print('Account {} has multiple members {}, assuming {}'.format( |
||||
account_id, |
||||
str(set(member_ids)), |
||||
member_id, |
||||
)) |
||||
|
||||
print(account_id, '-->', member_id) |
||||
|
||||
models.PayPalHint.objects.update_or_create( |
||||
account=account_id, |
||||
defaults=dict(member_id=member_id), |
||||
) |
||||
count += 1 |
||||
|
||||
print('Num paypal hints processed:', count) |
||||
print('Done.') |
Loading…
Reference in new issue