Compare commits
2 Commits
8bf37c82b6
...
5b752ab7c4
| Author | SHA1 | Date | |
|---|---|---|---|
| 5b752ab7c4 | |||
| e0dadc4b20 |
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
@@ -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]:
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user