Exemple #1
0
def get_transactions_for_date_range(account, start_date, end_date=None):
    """
    Gets the transactions of an account from a specific start date until a
    given end date.

    Parameters
    ----------
    account     : MonetaryAccountBank, the account for which to get the
                    transactions
    start_date  : datetime object
    end_date    : datetime object, when None will use current datetime

    Returns
    -------
    list[Payment]
    """

    if end_date is None:
        end_date = datetime.now(timezone.utc)

    if end_date < start_date:
        raise ValueError('End date cannot be before start date.')

    user = get_user()
    transactions = Payment.list(Client.ctx(), user.id_, account.id_)
    transactions_in_range = [
        t for t in transactions
        if start_date <= get_datetime(t.created) <= end_date
    ]

    return transactions_in_range
Exemple #2
0
def make_payment(account_from, request_map):
    """
    Creates a new Payment object with a given request_map and an account from
    which the Payment should be made

    Parameters
    ----------
    account_from    : MonetaryAccountBank, the account from which to make the
                        Payment
    request_map     : dict

    Returns
    -------
    dict            : Response from bunq API
    """

    user = get_user()
    ctx = Client.ctx()

    payment_id = generated.Payment.create(ctx, request_map, user.id_,
                                          account_from.id_)

    res = generated.Payment.get(ctx, user.id_, account_from.id_, payment_id)
    res_json = res.to_json()

    return res_json
Exemple #3
0
def get_user():
    """
    Gets an UserPerson

    Returns
    -------
    generated.UserPerson
    """

    users = generated.User.list(Client.ctx())
    user_first: generated.UserPerson = users[0].UserPerson
    return user_first
Exemple #4
0
def get_all_accounts(user):
    """
    Gets all the accounts belonging to the user.

    Parameters
    ----------
    user    : generated.UserPerson

    Returns
    -------
    list[generated.MonetaryAccountBank]
    """

    return MonetaryAccountBank.list(Client.ctx(), user.id_)
Exemple #5
0
def get_account_for_iban(iban):
    """
    Parameters
    ----------
    iban    : str

    Returns
    -------
    MonetaryAccountBank
    """

    user = get_user()
    accounts = generated.MonetaryAccountBank.list(Client.ctx(), user.id_)
    for acc in accounts:
        for a in acc.alias:
            if a.type_ == 'IBAN' and a.value == iban:
                return acc
def _add_callbacks(user, account, callbacks):
    """
    Parameters
    ----------
    user        : UserPerson
    account     : MonetaryAccountBank
    callbacks   : list[Callback]

    Returns
    -------
    MonetaryAccountBank
    """

    callbacks_new = [
        NotificationFilter('URL', c.url, c.category) for c in callbacks
    ]
    request_map = {
        MonetaryAccountBank.FIELD_NOTIFICATION_FILTERS: callbacks_new
    }

    return MonetaryAccountBank.update(Client.ctx(), request_map, user.id_,
                                      account.id_)