Erste Version mit spezifischen Suchfeldern und Teilen-Funktion
This commit is contained in:
55
app.py
55
app.py
@@ -1,10 +1,10 @@
|
||||
from flask import Flask, render_template, request, jsonify
|
||||
from flask import Flask, render_template, request, jsonify, url_for
|
||||
import pandas as pd
|
||||
import os
|
||||
import logging
|
||||
import numpy as np
|
||||
|
||||
app = Flask(__name__)
|
||||
app = Flask(__name__, static_folder='static')
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -35,21 +35,54 @@ def index():
|
||||
@app.route('/search')
|
||||
def search():
|
||||
try:
|
||||
# Spezifische Suchparameter
|
||||
name = request.args.get('name', '').lower()
|
||||
ort = request.args.get('ort', '').lower()
|
||||
kundennummer = request.args.get('kundennummer', '').lower()
|
||||
fachrichtung = request.args.get('fachrichtung', '').lower()
|
||||
|
||||
# Allgemeine Suche (für die alte Funktionalität)
|
||||
query = request.args.get('q', '').lower()
|
||||
logger.info(f"Suche nach: {query}")
|
||||
|
||||
logger.info(f"Suche nach - Name: {name}, Ort: {ort}, Kundennummer: {kundennummer}, Fachrichtung: {fachrichtung}, Query: {query}")
|
||||
|
||||
df = load_data()
|
||||
if df is None:
|
||||
return jsonify({"error": "Datenbank konnte nicht geladen werden"}), 500
|
||||
|
||||
# Suche über verschiedene Felder
|
||||
mask = (
|
||||
df['Vorname'].str.lower().str.contains(query, na=False) |
|
||||
df['Nachname'].str.lower().str.contains(query, na=False) |
|
||||
df['Fachrichtung'].str.lower().str.contains(query, na=False) |
|
||||
df['Ort'].str.lower().str.contains(query, na=False) |
|
||||
df['Nummer'].astype(str).str.contains(query, na=False) # Suche nach Kundennummer
|
||||
)
|
||||
# Basis-Mask (immer True)
|
||||
mask = pd.Series(True, index=df.index)
|
||||
|
||||
# Spezifische Suchkriterien anwenden
|
||||
if name:
|
||||
name_mask = (
|
||||
df['Vorname'].str.lower().str.contains(name, na=False) |
|
||||
df['Nachname'].str.lower().str.contains(name, na=False)
|
||||
)
|
||||
mask &= name_mask
|
||||
|
||||
if ort:
|
||||
ort_mask = df['Ort'].str.lower().str.contains(ort, na=False)
|
||||
mask &= ort_mask
|
||||
|
||||
if kundennummer:
|
||||
kunden_mask = df['Nummer'].astype(str).str.contains(kundennummer, na=False)
|
||||
mask &= kunden_mask
|
||||
|
||||
if fachrichtung:
|
||||
fach_mask = df['Fachrichtung'].str.lower().str.contains(fachrichtung, na=False)
|
||||
mask &= fach_mask
|
||||
|
||||
# Wenn eine allgemeine Suche vorhanden ist, diese zusätzlich anwenden
|
||||
if query:
|
||||
query_mask = (
|
||||
df['Vorname'].str.lower().str.contains(query, na=False) |
|
||||
df['Nachname'].str.lower().str.contains(query, na=False) |
|
||||
df['Fachrichtung'].str.lower().str.contains(query, na=False) |
|
||||
df['Ort'].str.lower().str.contains(query, na=False) |
|
||||
df['Nummer'].astype(str).str.contains(query, na=False)
|
||||
)
|
||||
mask &= query_mask
|
||||
|
||||
results = df[mask].to_dict('records')
|
||||
logger.info(f"{len(results)} Ergebnisse gefunden")
|
||||
|
Reference in New Issue
Block a user