def query_account(query, accountNames: List[str] = None) -> List[Account]: if accountNames is None: accounts = Account.objects() else: accounts = Account.objects().filter(account_name__in=accountNames) if query == "": return accounts.order_by('date_stamp') else: return accounts.filter(__raw__=query).order_by('date_stamp')
def add_bucket_to_account(account: Account, name: str, priority: int, due_day_of_month: int, spend_category: SpendCategory, base_budget_amount: float = 0.0, perc_budget_amount: float = 0.0, waterfall_amount: float = 0.0, saved_amount: float = 0.0, percent_of_income_adjustment_amount: float = 0.0, payment_method: PaymentMethod = None, payment_account: str = None, provider: str = None) -> Bucket: bucket = Bucket() bucket.name = name bucket.priority = priority bucket.due_day_of_month = due_day_of_month bucket.spend_category = spend_category.name bucket.base_budget_amount = base_budget_amount bucket.perc_budget_amount = perc_budget_amount bucket.waterfall_amount = waterfall_amount bucket.saved_amount = saved_amount bucket.percent_of_income_adjustment_amount = percent_of_income_adjustment_amount if payment_account: bucket.payment_account = payment_account if payment_method: bucket.payment_method = payment_method.name if provider: bucket.provider = provider account = Account.objects(id=account.id).first() account.buckets.append(bucket) account.save() return bucket
def enter_account_if_not_exists(name: str, description: str, type: AccountType) -> Account: existing = Account.objects(account_name=name) if len(existing) > 0: return None else: return enter_account(name, description, type)
def buckets_by_account(account: Account, raw_return=False) -> List[Bucket]: buckets = Account.objects(id=account.id).first().buckets if raw_return: return buckets.as_pymongo() else: bucket_list = [bucket for bucket in buckets] return bucket_list
def balances_by_account(account: Account, raw_return=False) -> List[OpenBalance]: balances = Account.objects(id=account.id).first().openBalances logging.debug(balances) if raw_return: return balances.as_pymongo() else: balance_list = [balance for balance in balances] return balance_list
def delete_bucket_from_account(account, bucketName): # bucket = bucket_by_name(account, bucketName) success = Account.objects(id=account.id).update_one( pull__buckets__name=bucketName) return success
def bucket_by_name(account: Account, bucket_name: str) -> Bucket: buckets = Account.objects(id=account.id).first().buckets bucket = next((bucket for bucket in buckets if bucket.name == bucket_name), None) return bucket
def account_by_name(account_name: str) -> Account: return Account.objects(account_name=account_name).first()