From bf682736e1011768d8ea6dfa4316f78d83700408 Mon Sep 17 00:00:00 2001 From: Niklas Meinzer Date: Sat, 14 Feb 2026 14:37:37 +0100 Subject: [PATCH] Add demo button to deposit money --- src/allmende_payment_system/api/__init__.py | 26 ++++++++++++++++++- src/allmende_payment_system/database.py | 3 ++- .../templates/base.html.jinja | 1 + .../templates/index.html.jinja | 5 ++-- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/allmende_payment_system/api/__init__.py b/src/allmende_payment_system/api/__init__.py index 54d1d9f..d37fcbe 100644 --- a/src/allmende_payment_system/api/__init__.py +++ b/src/allmende_payment_system/api/__init__.py @@ -1,6 +1,11 @@ -from fastapi import APIRouter, Request +import os + +from fastapi import APIRouter, HTTPException, Request +from fastapi.responses import RedirectResponse +from starlette import status from allmende_payment_system.api.dependencies import SessionDep, UserDep +from allmende_payment_system.models import Transaction from allmende_payment_system.tools import get_jinja_renderer root_router = APIRouter() @@ -31,3 +36,22 @@ async def landing_page( "focused_account": focused_account, }, ) + + +@root_router.get("/demo/add_balance/{account_id}") +async def add_balance( + request: Request, session: SessionDep, user: UserDep, account_id: int +): + if "APS_PRODUCTION_MODE" in os.environ: + raise HTTPException(status_code=403, detail="Not allowed in production mode.") + + for account in user.accounts: + if account.id == account_id: + break + else: + raise HTTPException(status_code=400, detail="Invalid account ID.") + + account.transactions.append(Transaction(total_amount=100.0, type="deposit")) + session.flush() + + return RedirectResponse(url=f"/", status_code=status.HTTP_302_FOUND) diff --git a/src/allmende_payment_system/database.py b/src/allmende_payment_system/database.py index 9365dae..7996ce6 100644 --- a/src/allmende_payment_system/database.py +++ b/src/allmende_payment_system/database.py @@ -1,8 +1,9 @@ import os + from sqlalchemy import create_engine, select from sqlalchemy.orm import Session, sessionmaker -from allmende_payment_system.models import User, Account, Transaction +from allmende_payment_system.models import Account, Transaction, User SQLALCHEMY_DATABASE_URL = "sqlite:///./aps_db.db" engine = create_engine(SQLALCHEMY_DATABASE_URL) diff --git a/src/allmende_payment_system/templates/base.html.jinja b/src/allmende_payment_system/templates/base.html.jinja index 8d822c7..93b41cd 100644 --- a/src/allmende_payment_system/templates/base.html.jinja +++ b/src/allmende_payment_system/templates/base.html.jinja @@ -80,6 +80,7 @@ {% endif %} {% block content %} diff --git a/src/allmende_payment_system/templates/index.html.jinja b/src/allmende_payment_system/templates/index.html.jinja index 0067251..fe30a49 100644 --- a/src/allmende_payment_system/templates/index.html.jinja +++ b/src/allmende_payment_system/templates/index.html.jinja @@ -14,11 +14,12 @@

{{ account.balance | format_number }} €

- {% if user.accounts|length > 1 and (not focused_account or (focused_account.id != account.id)) %}
+ {% if user.accounts|length > 1 and (not focused_account or (focused_account.id != account.id)) %} Transaktionen ansehen -
{% endif %} + 🚧 100 € einzahlen 🚧 +