%PDF- %PDF-
| Direktori : /www/loslex/ |
| Current File : /www/loslex/pretix.py |
import requests
import time
import json
from requests import RequestException
from urllib.parse import urljoin
import click
import sys
import pprint
fioToken = 'RUcabe62eUUss2hEc9g2YWrYOa1m92nzpA3yYu9xLBlWWCBRrMKVXkKXKWB44oNx'
pretixToken = 'xuvi20onfc0v4ud9dq92o8dwmq00d8qznhbwzdsxz99wszmhy0j03owae9sm5avi'
pretixServer = 'https://pretix.varak.net'
pretixOrganizer = 'klubovnaostrava'
# TODO: un-comment when in production
accResponse = requests.get('https://fioapi.fio.cz/v1/rest/last/' + fioToken + '/transactions.json')
accText = accResponse.text
#fin = open('data1744821838.732042.json', 'r')
#accText = fin.read()
#fin.close()
# TODO: remove response saving when confirmed working
f = open('data' + str(time.time()) + '.json', 'w')
f.write(accText)
f.close()
accData = json.loads(accText)
transactions = []
for trans in accData['accountStatement']['transactionList']['transaction']:
amount = trans['column1']['value']
code = 'No reference' if trans['column16'] is None else trans['column16'] ['value']
payer = trans['column10']['value']
transDate = trans['column0']['value'][:10]
bankId = trans['column17']['value']
tx = {
'amount': amount,
'reference': code,
'payer': payer,
'date': transDate,
'external_id': bankId
}
transactions.append(tx)
payload = {
'event': None,
'transactions': transactions
}
pprint.pp(payload)
# upload to pretix
try:
pretixUrl = urljoin(pretixServer, '/api/v1/organizers/{}/bankimportjobs/'.format(pretixOrganizer))
r = requests.post(pretixUrl, headers={
'Authorization': 'Token {}'.format(pretixToken)
}, json=payload, verify=True)
if r.status_code == 201:
click.echo(click.style('Job uploaded.', fg='green'))
else:
click.echo(click.style('Invalid response code: %d' % r.status_code, fg='red'))
click.echo(r.text)
sys.exit(2)
except (RequestException, OSError) as e:
click.echo(click.style('Connection error: %s' % str(e), fg='red'))
sys.exit(2)
except ValueError as e:
click.echo(click.style('Could not read response: %s' % str(e), fg='red'))
sys.exit(2)