%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /www/loslex/
Upload File :
Create Path :
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)


Zerion Mini Shell 1.0