Version 1.0.6: Kombinierte Suche über mehrere Felder
This commit is contained in:
61
app.py
61
app.py
@@ -13,7 +13,7 @@ logging.basicConfig(level=logging.DEBUG)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Version der Anwendung
|
||||
VERSION = "1.0.2"
|
||||
VERSION = "1.0.6"
|
||||
|
||||
# Pfad zur CSV-Datei
|
||||
CSV_FILE = "data/customers.csv"
|
||||
@@ -68,10 +68,12 @@ def search():
|
||||
telefon = request.args.get('telefon', '').strip()
|
||||
query = request.args.get('q', '').strip()
|
||||
|
||||
# Wenn keine spezifischen Suchkriterien angegeben sind, aber eine allgemeine Suche
|
||||
if not any([name, ort, kundennummer, fachrichtung, telefon]) and query:
|
||||
# Suche in allen relevanten Feldern
|
||||
mask = (
|
||||
# Initialisiere die Maske für die Filterung
|
||||
mask = pd.Series(True, index=df.index)
|
||||
|
||||
# Wenn eine allgemeine Suche angegeben ist
|
||||
if query:
|
||||
query_mask = (
|
||||
df['Vorname'].str.contains(query, case=False, na=False) |
|
||||
df['Nachname'].str.contains(query, case=False, na=False) |
|
||||
df['Ort'].str.contains(query, case=False, na=False) |
|
||||
@@ -79,32 +81,31 @@ def search():
|
||||
df['Fachrichtung'].str.contains(query, case=False, na=False) |
|
||||
df['Tel'].astype(str).str.contains(query, case=False, na=False)
|
||||
)
|
||||
else:
|
||||
# Spezifische Suche
|
||||
mask = pd.Series(True, index=df.index)
|
||||
|
||||
if name:
|
||||
name_mask = (
|
||||
df['Vorname'].str.contains(name, case=False, na=False) |
|
||||
df['Nachname'].str.contains(name, case=False, na=False)
|
||||
)
|
||||
mask &= name_mask
|
||||
|
||||
if ort:
|
||||
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
||||
mask &= ort_mask
|
||||
|
||||
if kundennummer:
|
||||
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
||||
mask &= kundennummer_mask
|
||||
|
||||
if fachrichtung:
|
||||
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
||||
mask &= fachrichtung_mask
|
||||
mask &= query_mask
|
||||
|
||||
# Spezifische Suchkriterien anwenden
|
||||
if name:
|
||||
name_mask = (
|
||||
df['Vorname'].str.contains(name, case=False, na=False) |
|
||||
df['Nachname'].str.contains(name, case=False, na=False)
|
||||
)
|
||||
mask &= name_mask
|
||||
|
||||
if ort:
|
||||
ort_mask = df['Ort'].str.contains(ort, case=False, na=False)
|
||||
mask &= ort_mask
|
||||
|
||||
if kundennummer:
|
||||
kundennummer_mask = df['Nummer'].astype(str).str.contains(kundennummer, case=False, na=False)
|
||||
mask &= kundennummer_mask
|
||||
|
||||
if fachrichtung:
|
||||
fachrichtung_mask = df['Fachrichtung'].str.contains(fachrichtung, case=False, na=False)
|
||||
mask &= fachrichtung_mask
|
||||
|
||||
if telefon:
|
||||
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
||||
mask &= telefon_mask
|
||||
if telefon:
|
||||
telefon_mask = df['Tel'].astype(str).str.contains(telefon, case=False, na=False)
|
||||
mask &= telefon_mask
|
||||
|
||||
results = df[mask].to_dict('records')
|
||||
logger.info(f"{len(results)} Ergebnisse gefunden")
|
||||
|
Reference in New Issue
Block a user