Ejemplo n.º 1
0
def user_prefences():
    db_session = create_session()
    preferences_dao = PreferenceDAO(db_session)

    preferences = preferences_dao.find_by_user_id(user_id=session["id"])
    db_session.close()
    return render_template("profile/preferences.edit.html", preferences=preferences)
Ejemplo n.º 2
0
def edit_accounts(account_id):
    db_session = create_session()
    accounts_dao = AccountDAO(db_session)

    account = accounts_dao.find_by_id_and_user_id(account_id, session["id"])
    db_session.close()
    return render_template("accounts/edit.html", account=account)
Ejemplo n.º 3
0
def list_categories():
    db_session = create_session()
    categories_dao = CategoryDAO(db_session)

    categories = categories_dao.find_by_user_id(session["id"])
    db_session.close()
    return render_template("categories/index.html", categories=categories)
Ejemplo n.º 4
0
def list_accounts():
    db_session = create_session()
    accounts_dao = AccountDAO(db_session)

    accounts = accounts_dao.find_by_user_id(session["id"])
    db_session.close()
    return render_template("accounts/index.html", accounts=accounts)
Ejemplo n.º 5
0
def edit_category(category_id):
    db_session = create_session()
    categories_dao = CategoryDAO(db_session)

    category = categories_dao.find_by_id_and_user_id(category_id, session["id"])
    db_session.close()
    return render_template("categories/edit.html", category=category)
Ejemplo n.º 6
0
def save_users():
    db_session = create_session()
    user_dao = UserDAO(db_session)
    preferences_dao = PreferenceDAO(db_session)

    maybe_user = user_dao.find_by_email(request.form["email"])
    if maybe_user is not None:
        return redirect(url_for("create_user"))

    user = user_dao.create(
        email=request.form["email"],
        name=request.form["name"],
        password=request.form["password"],
    )

    db_session.commit()

    preferences_dao.save(
        user_id=user.id,
        preference="en-us",
    )

    db_session.commit()
    db_session.close()
    return redirect(url_for("list_transactions"))
Ejemplo n.º 7
0
def edit_transaction(transaction_id):
    db_session = create_session()
    category_dao = CategoryDAO(db_session)
    categories = category_dao.find_by_user_id(session["id"])
    account_dao = AccountDAO(db_session)
    accounts = account_dao.find_by_user_id(session["id"])
    transaction_dao = TransactionDAO(db_session)
    transaction = transaction_dao.find_by_id_and_user_id(
        transaction_id=transaction_id,
        user_id=session["id"]
    )
    destination_accnt_id = None
    linked_transaction_id = None
    if transaction.link_id is not None:
        linked_transaction = transaction_dao.find_linked_transaction(
            link_id=transaction.link_id,
            user_id=session["id"],
            transaction_id=transaction.id
        )
        destination_accnt_id = linked_transaction.source_accnt_id
        linked_transaction_id = linked_transaction.id
    db_session.close()
    return render_template(
        "transactions/edit.html",
        categories=categories,
        accounts=accounts,
        category_id=transaction.category_id,
        date=transaction.date,
        description=transaction.description,
        destination_accnt_id=destination_accnt_id,
        id=transaction.id,
        source_accnt_id=transaction.source_accnt_id,
        value=transaction.value,
        link_id=linked_transaction_id
    )
Ejemplo n.º 8
0
def list_transactions():
    db_session = create_session()
    transaction_dao = TransactionDAO(db_session)
    all_transactions = transaction_dao.find_by_user_id(user_id=session["id"])
    category_dao = CategoryDAO(db_session)
    categories = category_dao.find_by_user_id(session["id"])
    account_dao = AccountDAO(db_session)
    accounts = account_dao.find_by_user_id(session["id"])
    db_session.close()
    return render_template("transactions/index.html",
                           transactions=all_transactions,
                           categories=categories,
                           accounts=accounts)
Ejemplo n.º 9
0
def save_preferences():
    db_session = create_session()
    preferences_dao = PreferenceDAO(db_session)

    preferences_dao.save(
        user_id=session["id"],
        preference=request.form["preference"],
    )

    db_session.commit()
    db_session.close()
    session['preference'] = request.form["preference"]
    return redirect(url_for("profile_page"))
Ejemplo n.º 10
0
def new_transaction():
    db_session = create_session()
    category_dao = CategoryDAO(db_session)
    categories = category_dao.find_by_user_id(session["id"])
    account_dao = AccountDAO(db_session)
    accounts = account_dao.find_by_user_id(session["id"])
    db_session.close()
    return render_template(
        "transactions/edit.html",
        categories=categories,
        date=datetime.now(),
        destination_accnt_id=None,
        accounts=accounts
    )
Ejemplo n.º 11
0
def save_category():
    db_session = create_session()
    categories_dao = CategoryDAO(db_session)

    category_id = request.form["id"]
    if category_id == "":
        category_id = None

    categories_dao.save(
        category_id=category_id,
        name=request.form["name"],
        user_id=session["id"],
    )

    db_session.commit()
    db_session.close()
    return redirect(url_for("list_categories"))
Ejemplo n.º 12
0
def save_accounts():
    db_session = create_session()
    accounts_dao = AccountDAO(db_session)

    account_id = request.form["id"]
    if account_id == "":
        account_id = None

    accounts_dao.save(
        account_id=account_id,
        name=request.form["name"],
        user_id=session["id"],
        account_type=request.form["type"],
    )

    db_session.commit()
    db_session.close()
    return redirect(url_for("list_accounts"))
Ejemplo n.º 13
0
def login():
    db_session = create_session()
    maybe_user = UserDAO(db_session) \
        .find_by_email_and_password(request.form["email"], request.form["password"])

    if maybe_user is None:
        db_session.close()
        return redirect(url_for("get_login"))

    preferences_dao = PreferenceDAO(db_session)
    preference = preferences_dao.find_by_user_id(user_id=maybe_user.id)

    session['preference'] = preference.preference
    session['email'] = maybe_user.email
    session['id'] = maybe_user.id
    session['name'] = maybe_user.name
    db_session.close()
    return redirect(url_for("dashboard"))
Ejemplo n.º 14
0
def post_transactions():

    valid, value = parse_currency(request.form["value"])
    if not valid:
        return "Value can not be empty."

    if value < 0:
        value = value*-1

    if request.form["direction"] == "1":
        value = value*-1

    valid, transaction_date = parse_date(request.form["date"])
    if not valid:
        return f"'{request.form['date']}' Is not according to format."

    db_session = create_session()

    if validate_accounts(
            db_session,
            request.form["source_accnt_id"],
            request.form["destination_accnt_id"],
            user_id=session["id"]) is False:
        db_session.close()
        return "Sorry, there was an error. Invalid account ID."

    if validate_categories(
            db_session,
            request.form["category_id"],
            user_id=session["id"]) is False:
        db_session.close()
        return "Sorry, there was an error. Invalid category ID."

    transaction_dao = TransactionDAO(db_session)

    reverse_transaction = None
    link_id = None
    transaction_id = request.form["id"] or None
    if transaction_id is not None:
        transaction = transaction_dao.find_by_id_and_user_id(
            transaction_id=request.form["id"],
            user_id=session["id"]
        )
        if transaction is None:
            db_session.close()
            return "Sorry, there was an error. Invalid transaction ID."
        if transaction.link_id is not None:
            link_id = transaction.link_id
            reverse_transaction = transaction_dao.find_linked_transaction(
                link_id=link_id,
                user_id=session["id"],
                transaction_id=transaction.id
            )

    if request.form["destination_accnt_id"] != "-1":
        link_id = str(uuid.uuid4())
        reverse_transaction_id = None
        if reverse_transaction is not None:
            reverse_transaction_id = reverse_transaction.id
        transaction_dao.save(
            transaction_id=reverse_transaction_id,
            description=request.form["description"],
            user_id=session["id"],
            category_id=request.form["category_id"],
            date=transaction_date,
            value=value*-1,
            source_accnt_id=request.form["destination_accnt_id"],
            link_id=link_id
        )

    if reverse_transaction is not None and request.form["destination_accnt_id"] == "-1":
        transaction_dao.delete_by_id(
            transaction_id=reverse_transaction.id,
            user_id=session["id"]
        )
        link_id = None

    transaction_dao.save(
        transaction_id=transaction_id,
        description=request.form["description"],
        user_id=session["id"],
        category_id=request.form["category_id"],
        date=transaction_date,
        value=value,
        source_accnt_id=request.form["source_accnt_id"],
        link_id=link_id
    )


    db_session.commit()
    db_session.close()
    return redirect(url_for("list_transactions"))