Beispiel #1
0
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')
Beispiel #2
0
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
Beispiel #3
0
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)
Beispiel #4
0
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
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
def account_by_name(account_name: str) -> Account:
    return Account.objects(account_name=account_name).first()