mirror of
https://git.hiabuto.net/C3MA/CCMA.git
synced 2026-08-25 23:15:18 +02:00
Update member UI and related app changes
This commit is contained in:
@@ -6,6 +6,7 @@ from pathlib import Path
|
||||
from tkinter import filedialog, messagebox, ttk
|
||||
|
||||
from ccma.config import AppConfig
|
||||
from ccma.domain.models import HOUSEKEEPER_MEMBER_FIELD_LABELS
|
||||
from ccma.services.intervals import (
|
||||
IntervalValidationError,
|
||||
normalize_anniversary_intervals,
|
||||
@@ -38,6 +39,11 @@ class OptionsDialog(tk.Toplevel):
|
||||
self.anniversary_before_var = tk.StringVar(value=str(config.anniversary_days_before))
|
||||
self.anniversary_after_var = tk.StringVar(value=str(config.anniversary_days_after))
|
||||
self.anniversary_intervals_var = tk.StringVar(value=config.anniversary_intervals)
|
||||
self.retroactive_claims_var = tk.BooleanVar(value=config.retroactive_claims)
|
||||
self.optional_member_field_vars = {
|
||||
field: tk.BooleanVar(value=field in config.optional_member_fields)
|
||||
for field in HOUSEKEEPER_MEMBER_FIELD_LABELS
|
||||
}
|
||||
number_policy = repository.get_member_number_policy()
|
||||
self.manual_numbers_var = tk.BooleanVar(value=number_policy["mode"] == "manual")
|
||||
self.number_pattern_var = tk.StringVar(value=number_policy["pattern"])
|
||||
@@ -238,6 +244,22 @@ class OptionsDialog(tk.Toplevel):
|
||||
text="Komma oder Semikolon; ohne Einheit = Jahre. Beispiel: 30D;2M;1;10Y.",
|
||||
style="Muted.TLabel",
|
||||
).grid(row=5, column=1, sticky="w")
|
||||
ttk.Checkbutton(
|
||||
parent,
|
||||
text="Beitragsforderungen rückwirkend seit Beitritt anlegen",
|
||||
variable=self.retroactive_claims_var,
|
||||
style="Switch",
|
||||
).grid(row=6, column=0, columnspan=3, sticky="w", pady=(18, 0))
|
||||
optional_fields = ttk.LabelFrame(parent, text="Bei leeren Mitgliedsfeldern nicht meckern", padding=12)
|
||||
optional_fields.grid(row=7, column=0, columnspan=3, sticky="ew", pady=(18, 0))
|
||||
for column in range(2):
|
||||
optional_fields.columnconfigure(column, weight=1)
|
||||
for index, (field, label) in enumerate(HOUSEKEEPER_MEMBER_FIELD_LABELS.items()):
|
||||
ttk.Checkbutton(
|
||||
optional_fields,
|
||||
text=label,
|
||||
variable=self.optional_member_field_vars[field],
|
||||
).grid(row=index // 2, column=index % 2, sticky="w", padx=(0, 16), pady=4)
|
||||
|
||||
def _build_member_numbers(self, parent: ttk.Frame) -> None:
|
||||
parent.columnconfigure(1, weight=1)
|
||||
@@ -381,6 +403,10 @@ class OptionsDialog(tk.Toplevel):
|
||||
self.config_obj.anniversary_days_before = anniversary_before
|
||||
self.config_obj.anniversary_days_after = anniversary_after
|
||||
self.config_obj.anniversary_intervals = anniversary_intervals
|
||||
self.config_obj.retroactive_claims = self.retroactive_claims_var.get()
|
||||
self.config_obj.optional_member_fields = tuple(
|
||||
field for field, variable in self.optional_member_field_vars.items() if variable.get()
|
||||
)
|
||||
try:
|
||||
self.config_obj.save()
|
||||
self.repository.save_member_number_policy(mode=number_mode, pattern=number_pattern)
|
||||
|
||||
Reference in New Issue
Block a user