changes to the testdataset used to test the system
Release Inventarsystem / release-docker (push) Successful in 2m17s
Release Inventarsystem / release-docker (push) Successful in 2m17s
This commit is contained in:
+70
-32
@@ -3534,7 +3534,7 @@ def library_loans_admin():
|
|||||||
def generate_test_ausleihen():
|
def generate_test_ausleihen():
|
||||||
"""
|
"""
|
||||||
Generiert Testdaten für die Überprüfung der Mahnungs- und Sperrlogik.
|
Generiert Testdaten für die Überprüfung der Mahnungs- und Sperrlogik.
|
||||||
Erstellt Dummy-Nutzer, Dummy-Items und Ausleihungen mit manipulierten Daten (DueDate).
|
Erstellt Dummy-Schülerausweise, Bibliotheks-Items und Ausleihungen mit manipulierten Daten (DueDate).
|
||||||
"""
|
"""
|
||||||
current_time = datetime.datetime.now(ZoneInfo("Europe/Berlin"))
|
current_time = datetime.datetime.now(ZoneInfo("Europe/Berlin"))
|
||||||
|
|
||||||
@@ -3542,43 +3542,83 @@ def generate_test_ausleihen():
|
|||||||
client = MongoClient(MONGODB_HOST, MONGODB_PORT)
|
client = MongoClient(MONGODB_HOST, MONGODB_PORT)
|
||||||
db = client[MONGODB_DB]
|
db = client[MONGODB_DB]
|
||||||
ausleihungen = db['ausleihungen']
|
ausleihungen = db['ausleihungen']
|
||||||
users_col = db['users']
|
student_cards_col = db['student_cards']
|
||||||
items_col = db['items']
|
items_col = db['items']
|
||||||
|
|
||||||
print("Generiere Testdaten...")
|
print("Generiere Testdaten für das Mahnungssystem...")
|
||||||
|
|
||||||
# 1. Test-Nutzer erstellen oder aktualisieren (upsert)
|
# 1. Test-Schülerausweise erstellen oder aktualisieren (upsert)
|
||||||
test_users = [
|
# Wir nutzen AusweisIds, die im System als Identifikation dienen
|
||||||
{"username": "test_user_stufe1", "email": "stufe1@test.local", "is_blocked": False},
|
test_students = [
|
||||||
{"username": "test_user_stufe2", "email": "stufe2@test.local", "is_blocked": False},
|
{
|
||||||
{"username": "test_user_frisch", "email": "frisch@test.local", "is_blocked": False}
|
"AusweisId": "TEST-AUSWEIS-01",
|
||||||
|
"SchülerName": "Max Mustermann (Stufe 1 Test)",
|
||||||
|
"Klasse": "9a",
|
||||||
|
"is_blocked": False
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AusweisId": "TEST-AUSWEIS-02",
|
||||||
|
"SchülerName": "Erika Musterfrau (Stufe 2 Test)",
|
||||||
|
"Klasse": "10b",
|
||||||
|
"is_blocked": False
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AusweisId": "TEST-AUSWEIS-03",
|
||||||
|
"SchülerName": "Tom Frisch (Keine Mahnung Test)",
|
||||||
|
"Klasse": "8c",
|
||||||
|
"is_blocked": False
|
||||||
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
for u in test_users:
|
for s in test_students:
|
||||||
users_col.update_one(
|
student_cards_col.update_one(
|
||||||
{'username': u['username']},
|
{'AusweisId': s['AusweisId']},
|
||||||
{'$set': u},
|
{'$set': s},
|
||||||
upsert=True
|
upsert=True
|
||||||
)
|
)
|
||||||
|
|
||||||
# 2. Test-Items (Gegenstände) erstellen
|
# 2. Test-Items als Bibliotheksartikel erstellen (ItemType wird gesetzt, damit it.is_library_itemgreift)
|
||||||
item1_res = items_col.insert_one({"Name": "Biologie Buch (Test Stufe 1)"})
|
# Passe LIBRARY_ITEM_TYPES an deine verwendeten Typen an (hier beispielhaft 'Buch' / 'Medien')
|
||||||
item2_res = items_col.insert_one({"Name": "iPad Pro (Test Stufe 2)"})
|
item_type = LIBRARY_ITEM_TYPES[0] if 'LIBRARY_ITEM_TYPES' in globals() and LIBRARY_ITEM_TYPES else 'Buch'
|
||||||
item3_res = items_col.insert_one({"Name": "Taschenrechner (Test Frisch)"})
|
|
||||||
|
item1_res = items_col.insert_one({
|
||||||
|
"Name": "Biologie Buch (Test Stufe 1)",
|
||||||
|
"ItemType": item_type,
|
||||||
|
"Verfuegbar": False,
|
||||||
|
"Exemplare": 1
|
||||||
|
})
|
||||||
|
item2_res = items_col.insert_one({
|
||||||
|
"Name": "iPad Pro (Test Stufe 2)",
|
||||||
|
"ItemType": item_type,
|
||||||
|
"Verfuegbar": False,
|
||||||
|
"Exemplare": 1
|
||||||
|
})
|
||||||
|
item3_res = items_col.insert_one({
|
||||||
|
"Name": "Taschenrechner (Test Frisch)",
|
||||||
|
"ItemType": item_type,
|
||||||
|
"Verfuegbar": False,
|
||||||
|
"Exemplare": 1
|
||||||
|
})
|
||||||
|
|
||||||
# 3. Test-Ausleihungen generieren
|
# 3. Test-Ausleihungen generieren
|
||||||
# Fall 1: 20 Tage drüber, Mahnstufe 0 -> Sollte Stufe 1 triggern
|
# Fall 1: 15 Tage drüber, Mahnstufe 0 -> Sollte Stufe 1 triggern (>= 14 Tage)
|
||||||
due_date_stufe1 = current_time - datetime.timedelta(days=20)
|
due_date_stufe1 = current_time - datetime.timedelta(days=15)
|
||||||
|
|
||||||
# Fall 2: 30 Tage drüber, Mahnstufe 1 -> Sollte Stufe 2 triggern & Nutzer sperren
|
# Fall 2: 29 Tage drüber, Mahnstufe 1 -> Sollte Stufe 2 triggern & Ausweis sperren (>= 28 Tage)
|
||||||
due_date_stufe2 = current_time - datetime.timedelta(days=30)
|
due_date_stufe2 = current_time - datetime.timedelta(days=29)
|
||||||
|
|
||||||
# Fall 3: 5 Tage drüber, Mahnstufe 0 -> Sollte NICHTS tun (da < 14 Tage)
|
# Fall 3: 5 Tage drüber, Mahnstufe 0 -> Sollte NICHTS tun (da < 14 Tage)
|
||||||
due_date_frisch = current_time - datetime.timedelta(days=5)
|
due_date_frisch = current_time - datetime.timedelta(days=5)
|
||||||
|
|
||||||
|
# Je nachdem, ob dein System die User-Felder in Ausleihungen verschlüsselt speichert:
|
||||||
|
# Hier wird encrypt_text verwendet, falls die Funktion im Scope liegt.
|
||||||
|
user_val_1 = encrypt_text("TEST-AUSWEIS-01") if 'encrypt_text' in globals() else "TEST-AUSWEIS-01"
|
||||||
|
user_val_2 = encrypt_text("TEST-AUSWEIS-02") if 'encrypt_text' in globals() else "TEST-AUSWEIS-02"
|
||||||
|
user_val_3 = encrypt_text("TEST-AUSWEIS-03") if 'encrypt_text' in globals() else "TEST-AUSWEIS-03"
|
||||||
|
|
||||||
test_ausleihungen = [
|
test_ausleihungen = [
|
||||||
{
|
{
|
||||||
"User": encrypt_text("test_user_stufe1"),
|
"User": user_val_1,
|
||||||
"Item": str(item1_res.inserted_id),
|
"Item": str(item1_res.inserted_id),
|
||||||
"Status": "active",
|
"Status": "active",
|
||||||
"DueDate": due_date_stufe1,
|
"DueDate": due_date_stufe1,
|
||||||
@@ -3586,15 +3626,15 @@ def generate_test_ausleihen():
|
|||||||
"LastUpdated": current_time
|
"LastUpdated": current_time
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"User": "test_user_stufe2",
|
"User": user_val_2,
|
||||||
"Item": str(item2_res.inserted_id),
|
"Item": str(item2_res.inserted_id),
|
||||||
"Status": "active",
|
"Status": "active",
|
||||||
"DueDate": due_date_stufe2,
|
"DueDate": due_date_stufe2,
|
||||||
"Mahnstufe": 1, # Hat bereits Stufe 1
|
"Mahnstufe": 1, # Hat bereits Stufe 1, wartet auf Eskalation zu Stufe 2
|
||||||
"LastUpdated": due_date_stufe2 # Wurde in der Vergangenheit gemahnt
|
"LastUpdated": due_date_stufe2
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"User": "test_user_frisch",
|
"User": user_val_3,
|
||||||
"Item": str(item3_res.inserted_id),
|
"Item": str(item3_res.inserted_id),
|
||||||
"Status": "active",
|
"Status": "active",
|
||||||
"DueDate": due_date_frisch,
|
"DueDate": due_date_frisch,
|
||||||
@@ -3606,17 +3646,15 @@ def generate_test_ausleihen():
|
|||||||
# In die Datenbank einfügen
|
# In die Datenbank einfügen
|
||||||
ausleihungen.insert_many(test_ausleihungen)
|
ausleihungen.insert_many(test_ausleihungen)
|
||||||
|
|
||||||
print("Erfolgreich! Folgende Testdaten wurden in die DB geschrieben:")
|
print("Erfolgreich! Folgende Testdaten wurden für das Mahnungssystem in die DB geschrieben:")
|
||||||
print(
|
print(f"- Fall 1 (Mahnstufe 1 Trigger): Ausweis 'TEST-AUSWEIS-01', fällig war am {due_date_stufe1.strftime('%Y-%m-%d')} (15 Tage überfällig)")
|
||||||
f"- Fall 1 (Mahnstufe 1 Trigger): Nutzer 'test_user_stufe1', fällig war am {due_date_stufe1.strftime('%Y-%m-%d')}")
|
print(f"- Fall 2 (Mahnstufe 2 & Sperre): Ausweis 'TEST-AUSWEIS-02', fällig war am {due_date_stufe2.strftime('%Y-%m-%d')} (29 Tage überfällig)")
|
||||||
print(
|
print(f"- Fall 3 (Zu früh / Ignorieren): Ausweis 'TEST-AUSWEIS-03', fällig war am {due_date_frisch.strftime('%Y-%m-%d')} (5 Tage überfällig)")
|
||||||
f"- Fall 2 (Mahnstufe 2 & Sperre Trigger): Nutzer 'test_user_stufe2', fällig war am {due_date_stufe2.strftime('%Y-%m-%d')}")
|
|
||||||
print(
|
|
||||||
f"- Fall 3 (Ignorieren - zu früh): Nutzer 'test_user_frisch', fällig war am {due_date_frisch.strftime('%Y-%m-%d')}")
|
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Fehler beim Erstellen der Testdaten: {e}")
|
print(f"Fehler beim Erstellen der Testdaten: {e}")
|
||||||
finally:
|
finally:
|
||||||
|
if client:
|
||||||
client.close()
|
client.close()
|
||||||
|
|
||||||
@app.route('/test_mahnungen')
|
@app.route('/test_mahnungen')
|
||||||
|
|||||||
Reference in New Issue
Block a user