Esempio n. 1
0
def transactions(ctx, account_id, num):
    """Show Monzo account transactions"""
    try:
        monzo_transactions = ctx.obj.transactions(
            account_id=account_id,
            reverse=True,
            limit=num,
        )
    except (ValueError, PyMonzoException) as e:
        raise click.ClickException(str(e))

    for n, transaction in enumerate(monzo_transactions, start=1):
        # We need a separate request for better merchant info
        trans = ctx.obj.transaction(
            transaction_id=transaction.id,
            expand_merchant=True,
        )
        merchant = trans.merchant

        if isinstance(merchant, MonzoMerchant):
            description = '{0} ({1})'.format(
                merchant.name,
                merchant.address['city'].capitalize(),
            )
        else:
            description = trans.description.split('  ')[0].capitalize()

        category = trans.category.replace('_', ' ').capitalize()

        amount = monzo_amount_to_dec(trans.local_amount)
        local_amount = format_currency(amount, trans.local_currency)

        click.secho(
            '{0} | {1}'.format(local_amount, description),
            fg='yellow',
            bold=True,
        )
        click.echo('{0:<12} {1}'.format('Category:', category))

        if transaction.notes:  # pragma: no cover
            click.echo('{0:<12} {1}'.format('Notes:', transaction.notes))

        click.echo('{0:<12} {1:%b %-d, %Y %-I:%M %p}'.format(
            'Date:',
            transaction.created,
        ))

        if n != len(monzo_transactions):
            click.echo()  # Print a new line between transactions
Esempio n. 2
0
def balance(ctx, account_id):
    """Show Monzo account balance"""
    try:
        monzo_balance = ctx.obj.balance(account_id=account_id)
    except (ValueError, PyMonzoException) as e:
        raise click.ClickException(str(e))

    amount = monzo_amount_to_dec(monzo_balance.balance)
    local_amount = format_currency(amount, monzo_balance.currency)

    local_spent_today = format_currency(monzo_balance.spend_today,
                                        monzo_balance.currency)

    click.secho(
        '{0:<12} {1}'.format('Balance:', local_amount),
        fg='green',
        bold=True,
    )
    click.echo('{0:<12} {1}'.format('Spent today:', local_spent_today))
Esempio n. 3
0
def test_monzo_str_to_dec(arg, result):
    """Test monz.utils.monzo_amount_to_dec"""
    assert monzo_amount_to_dec(arg) == result