Update footer version to v2.1.4 - Enhanced Destinataer Management
- Bump version from v2.1.3 to v2.1.4 - Update status badge from 'Stabil' to 'Enhanced' - Reflect recent improvements to Destinataer inline editing and CSV import
This commit is contained in:
@@ -480,6 +480,25 @@ def process_destinataere_csv(csv_file, csv_import):
|
||||
total_rows += 1
|
||||
|
||||
try:
|
||||
# Helper function to parse boolean values from CSV
|
||||
def parse_boolean(value, default=False):
|
||||
"""Parse boolean values from CSV with multiple accepted formats"""
|
||||
if not value:
|
||||
return default
|
||||
value_str = str(value).strip().lower()
|
||||
# Accept various true values
|
||||
true_values = ['true', 'ja', 'yes', '1', 'wahr', 'x']
|
||||
# Accept various false values
|
||||
false_values = ['false', 'nein', 'no', '0', 'falsch', '']
|
||||
|
||||
if value_str in true_values:
|
||||
return True
|
||||
elif value_str in false_values:
|
||||
return False
|
||||
else:
|
||||
# If unclear, return default
|
||||
return default
|
||||
|
||||
# Map CSV columns to model fields
|
||||
destinataer_data = {
|
||||
"vorname": row.get("Vorname", "").strip(),
|
||||
@@ -501,12 +520,40 @@ def process_destinataere_csv(csv_file, csv_import):
|
||||
if row.get("Jährliches_Einkommen")
|
||||
else None
|
||||
),
|
||||
"finanzielle_notlage": row.get("Finanzielle_Notlage", "false").lower()
|
||||
== "true",
|
||||
"notizen": row.get("Notizen", "").strip() or None,
|
||||
"aktiv": row.get("Aktiv", "true").lower() == "true",
|
||||
# Boolean fields with improved parsing
|
||||
"finanzielle_notlage": parse_boolean(row.get("Finanzielle_Notlage"), False),
|
||||
"aktiv": parse_boolean(row.get("Aktiv"), True),
|
||||
"ist_abkoemmling": parse_boolean(row.get("Ist_Abkömmling"), False),
|
||||
"unterstuetzung_bestaetigt": parse_boolean(row.get("Unterstützung_bestätigt"), False),
|
||||
"studiennachweis_erforderlich": parse_boolean(row.get("Studiennachweis_erforderlich"), False),
|
||||
}
|
||||
|
||||
# Handle numeric fields
|
||||
if row.get("Haushaltsgröße"):
|
||||
try:
|
||||
destinataer_data["haushaltsgroesse"] = int(row["Haushaltsgröße"])
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if row.get("Monatliche_Bezüge"):
|
||||
try:
|
||||
destinataer_data["monatliche_bezuege"] = float(row["Monatliche_Bezüge"])
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if row.get("Vermögen"):
|
||||
try:
|
||||
destinataer_data["vermoegen"] = float(row["Vermögen"])
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if row.get("Vierteljährlicher_Betrag"):
|
||||
try:
|
||||
destinataer_data["vierteljaehrlicher_betrag"] = float(row["Vierteljährlicher_Betrag"])
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
# Handle date fields
|
||||
if row.get("Geburtsdatum"):
|
||||
try:
|
||||
@@ -521,6 +568,19 @@ def process_destinataere_csv(csv_file, csv_import):
|
||||
except ValueError:
|
||||
destinataer_data["geburtsdatum"] = None
|
||||
|
||||
if row.get("Letzter_Studiennachweis"):
|
||||
try:
|
||||
destinataer_data["letzter_studiennachweis"] = datetime.strptime(
|
||||
row["Letzter_Studiennachweis"], "%d.%m.%Y"
|
||||
).date()
|
||||
except ValueError:
|
||||
try:
|
||||
destinataer_data["letzter_studiennachweis"] = datetime.strptime(
|
||||
row["Letzter_Studiennachweis"], "%Y-%m-%d"
|
||||
).date()
|
||||
except ValueError:
|
||||
destinataer_data["letzter_studiennachweis"] = None
|
||||
|
||||
# Validate required fields
|
||||
if not destinataer_data["vorname"] or not destinataer_data["nachname"]:
|
||||
error_log.append(
|
||||
|
||||
Reference in New Issue
Block a user