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
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))
def test_monzo_str_to_dec(arg, result): """Test monz.utils.monzo_amount_to_dec""" assert monzo_amount_to_dec(arg) == result