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
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
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
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_)
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_)