From a522a3b1109dc93e88a751eb22a8e1f0df1cbbf7 Mon Sep 17 00:00:00 2001 From: Niklas Meinzer Date: Sun, 17 May 2026 11:08:48 +0200 Subject: [PATCH] Add account details view for admin --- src/allmende_payment_system/api/admin.py | 23 +++++++ .../templates/account_details.html.jinja | 68 +++++++++++++++++++ .../templates/accounts.html.jinja | 1 + .../templates/index.html.jinja | 2 +- 4 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 src/allmende_payment_system/templates/account_details.html.jinja diff --git a/src/allmende_payment_system/api/admin.py b/src/allmende_payment_system/api/admin.py index df5e668..e54eefa 100644 --- a/src/allmende_payment_system/api/admin.py +++ b/src/allmende_payment_system/api/admin.py @@ -387,3 +387,26 @@ async def add_balance_to_account( return RedirectResponse( url="/admin/accounts", status_code=status.HTTP_303_SEE_OTHER ) + + +@admin_router.get("/accounts/{account_id}/details") +async def view_account_details( + request: Request, + session: SessionDep, + user: UserDep, + account_id: int, +): + if not user.has_permission("account", "edit"): + raise HTTPException(status_code=403, detail="Insufficient permissions") + + account = session.execute( + select(Account).where(Account.id == account_id) + ).scalar_one() + + templates = get_jinja_renderer() + + return templates.TemplateResponse( + request, + "account_details.html.jinja", + context={"account": account}, + ) diff --git a/src/allmende_payment_system/templates/account_details.html.jinja b/src/allmende_payment_system/templates/account_details.html.jinja new file mode 100644 index 0000000..2158fd7 --- /dev/null +++ b/src/allmende_payment_system/templates/account_details.html.jinja @@ -0,0 +1,68 @@ + +{% extends "base.html.jinja" %} +{% block content %} + +
+

Kontodetails für Konto "{{account.name}}"

+
+
+
+
+
{{ account.name }}
+

+ {{ account.balance | format_number }} € +

+
+
+
+
+
+ + +
+
+
+ {% if account.transactions|length > 0 %} + {% for transaction in account.transactions %} +
+
+
{{ transaction.type|transaction_type_de }}
+ + {{ transaction.timestamp | timestamp_de }} + + {% if transaction.type == "order" %} +
+ {% if transaction.order and transaction.order.items|length > 0 %} +
+ {% for item in transaction.order.items[:3] %} + {{ item.product.current_details.name }}{% if loop.index < transaction.order.items[:3]|length %},{% endif %} + {% endfor %} + {% if transaction.order.items|length > 3 %} +
+ {{ transaction.order.items|length - 3 }} weitere{% if transaction.order.items|length - 3 == 1 %} Artikel{% else %} Artikel{% endif %}
+ {% endif %} +
+ {% endif %} + Einkauf ansehen +
+ {% endif %} +
+
+ + {{ transaction.total_amount | format_number }} € + + {% if transaction.quantity %} +
{{ transaction.quantity }}
+ {% endif %} +
+
+ {% endfor %} + {% else %} +
+

Noch keine Buchungen

+ Deine Buchungen werden hier erscheinen +
+ {% endif %} +
+
+
+{% endblock %} \ No newline at end of file diff --git a/src/allmende_payment_system/templates/accounts.html.jinja b/src/allmende_payment_system/templates/accounts.html.jinja index 5cdbc30..3c707de 100644 --- a/src/allmende_payment_system/templates/accounts.html.jinja +++ b/src/allmende_payment_system/templates/accounts.html.jinja @@ -48,6 +48,7 @@ {{ account.users | map(attribute='display_name') | join(", ") }} {{ account.balance | format_number }} € + Details ansehen diff --git a/src/allmende_payment_system/templates/index.html.jinja b/src/allmende_payment_system/templates/index.html.jinja index 8782d86..911ec54 100644 --- a/src/allmende_payment_system/templates/index.html.jinja +++ b/src/allmende_payment_system/templates/index.html.jinja @@ -56,7 +56,7 @@ {% if transaction.order and transaction.order.items|length > 0 %}
{% for item in transaction.order.items[:3] %} - {{ item.product.name }}{% if loop.index < transaction.order.items[:3]|length %},{% endif %} + {{ item.product.current_details.name }}{% if loop.index < transaction.order.items[:3]|length %},{% endif %} {% endfor %} {% if transaction.order.items|length > 3 %}
+ {{ transaction.order.items|length - 3 }} weitere{% if transaction.order.items|length - 3 == 1 %} Artikel{% else %} Artikel{% endif %}