Example #1
0
def main(arguments):
    client = FioBank(token=arguments['--token'])

    if '<month>' in arguments:
        month = strtodatetime(arguments['<month>'])
        month_range = calendar.monthrange(month.year, month.month)
        
        month_start = datetime.date(month.year, month.month, month_range[0])
        month_end = datetime.date(month.year, month.month, month_range[1])

        transactions = client.period(month_start, month_end)
    else:
        transactions = client.period(arguments['<from>'], arguments['<to>'])
    
    print table_header()

    for transaction in transactions:
        try:
            transaction['recipient_message']
        except KeyError:
            transaction['recipient_message'] = ''
        try:
            transaction['variable_symbol']
        except KeyError:
            transaction['variable_symbol'] = ''
        
        print "||%s\t||%s\t||%s\t||%s\t||%s\t||" % (transaction['date'], transaction['user_identifiaction'], transaction['recipient_message'], transaction['variable_symbol'], transaction['amount'])
Example #2
0
def test_period_coerces_date(transactions_json):
    client = FioBank('...')

    from_date = '2016-08-04T09:36:42'
    to_date = '2016-08-30T11:45:38'

    options = {'return_value': transactions_json}
    with mock.patch.object(client, '_request', **options) as stub:
        client.period(from_date, to_date)
        stub.assert_called_once_with('periods',
                                     from_date=date(2016, 8, 4),
                                     to_date=date(2016, 8, 30))
Example #3
0
def test_period_coerces_date(transactions_json):
    client = FioBank('...')

    from_date = '2016-08-04T09:36:42'
    to_date = '2016-08-30T11:45:38'

    options = {'return_value': transactions_json}
    with mock.patch.object(client, '_request', **options) as stub:
        client.period(from_date, to_date)
        stub.assert_called_once_with('periods',
                                     from_date=date(2016, 8, 4),
                                     to_date=date(2016, 8, 30))
Example #4
0
def main():
    doc_key = '1TO5Yzk0-4V_RzRK5Jr9I_pF5knZsEZrNn2HKTXrHgls'

    client = FioBank(token=FIOBANK_API_KEY)
    to_date = date.today().strftime('%Y-%m-%d')

    records = []
    for transaction in client.period(from_date='2020-01-01', to_date=to_date):
        transaction['message'] = ', '.join(
            filter(None, [
                transaction.get('comment'),
                transaction.get('user_identification'),
                transaction.get('recipient_message'),
            ]))

        for category_fn in CATEGORIES:
            category = category_fn(transaction)
            if category:
                transaction['category'] = category
                break

        records.append({
            'Date': transaction['date'].strftime('%Y-%m-%d'),
            'Category': transaction['category'],
            'Amount': transaction['amount'],
            'Currency': transaction['currency'],
            'Message': transaction['message'],
            'Variable Symbol': transaction['variable_symbol'],
        })
    google_sheets.upload(google_sheets.get(doc_key, 'transactions'), records)
    def handle(self, *args, **kwargs):
        client = FioBank(token=settings.FIO_TOKEN)
        payments = client.period(
            datetime.datetime.now() -
            datetime.timedelta(days=kwargs['days_back']),
            datetime.datetime.now(),
        )

        for payment in payments:
            self.pair_payment(payment)
Example #6
0
def _get_last_payments():
    """ Get list of payments for last three days from FioBank """
    client = FioBank(token=settings.FIO_BANK_TOKEN)

    today = timezone.now()
    date_from = (today - timedelta(days=settings.FIO_BANK_PROCESS_DAYS)).strftime(DATE_FORMAT)
    date_to = today.strftime(DATE_FORMAT)

    try:
        data = list(client.period(date_from, date_to))
    except (requests.exceptions.HTTPError, requests.exceptions.ConnectionError) as e:
        logger.error('{} in _get_last_payments'.format(e))
        data = []

    return data
Example #7
0
 def handle(self, *args, **options):
     if settings.FIO_TOKEN:
         client = FioBank(token=settings.FIO_TOKEN)
         payments = client.period(from_date=datetime.date.today()-datetime.timedelta(30), to_date=datetime.date.today())
         for payment in payments:
             date = payment.get("date")
             vs = payment.get("variable_symbol")
             value = payment.get("amount", 0.0)
             trans = payment.get("transaction_id")
             if vs and value and date and trans:
                 try:
                     user = User.objects.get(id=(int(vs) - 100000))
                 except ObjectDoesNotExist:
                     continue
                 if not TransId.objects.filter(trans_id=trans).count() and value > 0:
                     self.pay(date, user, value, trans)
     else:
         sys.stderr.write("Error: not FIO TOKEN found")
Example #8
0
 def handle(self, *args, **options):
     if settings.FIO_TOKEN:
         client = FioBank(token=settings.FIO_TOKEN)
         payments = client.period(from_date=datetime.date.today() -
                                  datetime.timedelta(30),
                                  to_date=datetime.date.today())
         for payment in payments:
             date = payment.get("date")
             vs = payment.get("variable_symbol")
             value = payment.get("amount", 0.0)
             trans = payment.get("transaction_id")
             if vs and value and date and trans:
                 try:
                     user = User.objects.get(id=(int(vs) - 100000))
                 except ObjectDoesNotExist:
                     continue
                 if not TransId.objects.filter(
                         trans_id=trans).count() and value > 0:
                     self.pay(date, user, value, trans)
     else:
         sys.stderr.write("Error: not FIO TOKEN found")