Compare commits

...

2 Commits

Author SHA1 Message Date
hnzio 5b752ab7c4 fix: label personal accounts with user names 2026-04-21 21:49:54 +02:00
hnzio e0dadc4b20 fix: include admin in personal payout fallback 2026-04-21 21:43:36 +02:00
6 changed files with 32 additions and 6 deletions
+7
View File
@@ -26,6 +26,7 @@ main_bp = Blueprint("main", __name__)
def _community_account_cards(month, previous_month):
personal_label_map = personal_account_names()
community_accounts = CommunityAccount.query.filter_by(is_active=True).order_by(
CommunityAccount.sort_order.asc(), CommunityAccount.name.asc()
).all()
@@ -73,9 +74,15 @@ def _community_account_cards(month, previous_month):
)
assigned_budget_names = [category.name for category in assigned_categories]
delta = current_total - previous_total
display_name = (
f"Auszahlung {personal_label_map.get(community_account.linked_account_slug, community_account.name)}"
if community_account.account_type == "personal" and community_account.linked_account_slug
else community_account.name
)
cards.append(
{
"community_account": community_account,
"display_name": display_name,
"current_total": current_total,
"previous_total": previous_total,
"delta": delta,
+7
View File
@@ -102,6 +102,7 @@ def _resolve_avatar_url(existing: str | None = None) -> str | None:
def _community_account_totals(month, previous_month, community_accounts, budget_categories):
personal_label_map = personal_account_names()
current_entry_values = {item.entry_id: to_decimal(item.planned_amount) for item in month.entry_values}
previous_entry_values = (
{item.entry_id: to_decimal(item.planned_amount) for item in previous_month.entry_values}
@@ -157,9 +158,15 @@ def _community_account_totals(month, previous_month, community_accounts, budget_
)
assigned_budget_names = [category.name for category in assigned_categories]
delta = current_total - previous_total
display_name = (
f"Auszahlung {personal_label_map.get(community_account.linked_account_slug, community_account.name)}"
if community_account.account_type == "personal" and community_account.linked_account_slug
else community_account.name
)
cards.append(
{
"community_account": community_account,
"display_name": display_name,
"current_total": current_total,
"previous_total": previous_total,
"delta": delta,
+2 -2
View File
@@ -71,7 +71,7 @@
{% if card.is_read_only %}
<div class="summary-category-card summary-static-card community-account-card">
<div class="summary-card-head">
<strong>{{ card.community_account.name }}</strong>
<strong>{{ card.display_name }}</strong>
<span class="icon-label muted-label">Nur Anzeige</span>
</div>
<div class="summary-card-meta">
@@ -89,7 +89,7 @@
{% else %}
<button type="button" class="summary-category-card community-account-card" data-open-dialog="community-account-item-{{ card.community_account.id }}">
<div class="summary-card-head">
<strong>{{ card.community_account.name }}</strong>
<strong>{{ card.display_name }}</strong>
<img src="{{ url_for('static', filename='icons/pencil.svg') }}" alt="" class="ui-icon small-ui-icon">
</div>
<div class="summary-card-meta">
+2 -1
View File
@@ -34,7 +34,8 @@ def active_users() -> list[User]:
def personal_users() -> list[User]:
users = active_users()
non_admin = [user for user in users if not user.is_admin()]
return (non_admin or users)[:2]
admin_users = [user for user in users if user.is_admin()]
return (non_admin + admin_users)[:2]
def personal_account_names() -> dict[str, str]:
+12 -1
View File
@@ -3,7 +3,7 @@ from __future__ import annotations
from decimal import Decimal
from app.extensions import db
from app.models import Account, AllocationSuggestion, Month
from app.models import Account, AllocationSuggestion, Month, User
from app.utils.users import personal_account_names
@@ -169,3 +169,14 @@ def test_seeded_distribution_entries_are_marked_as_allocation_targets(app):
assert target_entries["Freizeitbudget"] is True
assert target_entries["Person 1"] is True
assert target_entries["Person 2"] is True
def test_personal_account_names_fill_with_admin_if_only_one_editor_is_active(app):
editor_b = User.query.filter_by(username="mitglied2").first()
editor_b.is_active = False
db.session.commit()
personal_labels = personal_account_names()
assert personal_labels["persoenlich-flo"] == "Person A"
assert personal_labels["persoenlich-desi"] == "Admin"
+2 -2
View File
@@ -107,8 +107,8 @@ def test_planning_shows_budgets_and_community_accounts(logged_in_client):
assert response.status_code == 200
assert b"Budgets" in response.data
assert b"Gemeinschaftskonten" in response.data
assert b"Privatkonto 1" in response.data
assert b"Privatkonto 2" in response.data
assert b"Auszahlung Person A" in response.data
assert b"Auszahlung Person B" in response.data
def test_community_account_can_assign_budget_categories(logged_in_client):