Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9a4d10def7 | |||
| 10ae98245c | |||
| 359a8f8ab1 | |||
| 3171455f55 | |||
| a35bb3e048 | |||
| a0409a03dc | |||
| 627b1b76c4 |
+19
-20
@@ -1516,6 +1516,7 @@ def update_appointment_statuses():
|
||||
student_card = _decrypt_student_card_doc(card) if '_decrypt_student_card_doc' in globals() else card
|
||||
student_name = student_card.get('SchülerName', target_ausweis_id)
|
||||
student_class = student_card.get('Klasse', '—')
|
||||
student_ausleih_dauer = student_card.get('StandardAusleihdauer', 14)
|
||||
|
||||
# Gegenstandsdetails laden
|
||||
item_name = "Unbekannter Artikel"
|
||||
@@ -1530,8 +1531,8 @@ def update_appointment_statuses():
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# STUFE 2: >= 28 Tage überfällig -> Ausweis sperren, Stufe 2 setzen & Admins benachrichtigen
|
||||
if days_overdue >= 28 and mahnstufe < 2:
|
||||
# STUFE 2: >= 2 * student_ausleih_dauer Tage überfällig -> Ausweis sperren, Stufe 2 setzen & Admins benachrichtigen
|
||||
if days_overdue >= (int(student_ausleih_dauer) * 2) and mahnstufe < 2:
|
||||
ausleihungen.update_one(
|
||||
{'_id': appt['_id']},
|
||||
{'$set': {'Mahnstufe': 2, 'LastUpdated': current_time}}
|
||||
@@ -1573,7 +1574,7 @@ def update_appointment_statuses():
|
||||
app.logger.warning(f"Mahnstufe 2 & Ausweis-Sperre für Schülerausweis '{student_name}' ({target_ausweis_id}) gesetzt.")
|
||||
|
||||
# STUFE 1: >= 14 Tage überfällig -> Stufe 1 setzen & Admins benachrichtigen
|
||||
elif days_overdue >= 14 and mahnstufe == 0:
|
||||
elif days_overdue >= int(student_ausleih_dauer) and mahnstufe == 0:
|
||||
ausleihungen.update_one(
|
||||
{'_id': appt['_id']},
|
||||
{'$set': {'Mahnstufe': 1, 'LastUpdated': current_time}}
|
||||
@@ -3628,13 +3629,13 @@ def generate_test_ausleihen():
|
||||
|
||||
# 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"
|
||||
user_val_1 = encrypt_text("TEST-AUSWEIS-01")
|
||||
user_val_2 = encrypt_text("TEST-AUSWEIS-02")
|
||||
user_val_3 = encrypt_text("TEST-AUSWEIS-03")
|
||||
|
||||
test_ausleihungen = [
|
||||
{
|
||||
"User": encrypt_text(user_val_1),
|
||||
"User": user_val_1,
|
||||
"Item": str(item1_res.inserted_id),
|
||||
"Status": "active",
|
||||
"DueDate": due_date_stufe1,
|
||||
@@ -3642,7 +3643,7 @@ def generate_test_ausleihen():
|
||||
"LastUpdated": current_time
|
||||
},
|
||||
{
|
||||
"User": encrypt_text(user_val_2),
|
||||
"User": user_val_2,
|
||||
"Item": str(item2_res.inserted_id),
|
||||
"Status": "active",
|
||||
"DueDate": due_date_stufe2,
|
||||
@@ -3650,11 +3651,11 @@ def generate_test_ausleihen():
|
||||
"LastUpdated": due_date_stufe2
|
||||
},
|
||||
{
|
||||
"User": encrypt_text(user_val_3),
|
||||
"User": user_val_3,
|
||||
"Item": str(item3_res.inserted_id),
|
||||
"Status": "active",
|
||||
"DueDate": due_date_frisch,
|
||||
"Mahnstufe": 0,
|
||||
"Mahnstufe": 2,
|
||||
"LastUpdated": current_time
|
||||
}
|
||||
]
|
||||
@@ -3751,8 +3752,6 @@ def mahnungen_admin():
|
||||
item_name = item_doc.get('Name', item_id)
|
||||
item_code = item_doc.get('Code_4', '')
|
||||
|
||||
# ENTFERNT: item_name = f"{item_name} ({item_code})" - Wir übergeben es separat ans Frontend
|
||||
|
||||
raw_user = str(record.get('User') or '')
|
||||
decrypted_user = decrypt_text(raw_user)
|
||||
ausweis_id = (decrypted_user if decrypted_user else raw_user).strip().upper()
|
||||
@@ -3783,14 +3782,6 @@ def mahnungen_admin():
|
||||
'is_blocked': is_blocked
|
||||
})
|
||||
|
||||
|
||||
return render_template(
|
||||
'mahnungen_admin.html',
|
||||
overdue_items=overdue_list,
|
||||
# KORRIGIERT: 'overdue_items' statt 'overdue_list', damit es zum HTML passt
|
||||
library_module_enabled=cfg.MODULES.is_enabled('library'),
|
||||
student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'),
|
||||
)
|
||||
except Exception as e:
|
||||
app.logger.error(f"Fehler beim Laden der Mahnungsverwaltung: {e}")
|
||||
flash('Fehler beim Laden der Mahnungsverwaltung.', 'error')
|
||||
@@ -3799,6 +3790,14 @@ def mahnungen_admin():
|
||||
if client:
|
||||
client.close()
|
||||
|
||||
return render_template(
|
||||
'mahnungen_admin.html',
|
||||
overdue_items=overdue_list,
|
||||
library_module_enabled=cfg.MODULES.is_enabled('library'),
|
||||
student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'),
|
||||
email_service_enabled=cfg.EMAIL_ENABLED
|
||||
)
|
||||
|
||||
@app.route('/mahnungen_reset', methods=['POST'])
|
||||
def mahnungen_reset():
|
||||
"""Setzt die Mahnstufe einer Ausleihe zurück, verlängert die Frist und entsperrt den Schülerausweis."""
|
||||
|
||||
@@ -179,10 +179,12 @@
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<div class="btn-group" role="group">
|
||||
{% if mail_service_enabled %}
|
||||
<button type="button" class="btn btn-sm btn-outline-primary"
|
||||
onclick="openEmailModal('{{ item.id }}', '{{ item.schueler_name }}', '{{ item.email }}')">
|
||||
<i class="bi bi-envelope"></i> E-Mail
|
||||
</button>
|
||||
{% endif %}
|
||||
<button type="button" class="btn btn-sm btn-outline-warning text-dark"
|
||||
onclick="resetMahnung('{{ item.id }}', '{{ item.schueler_name }}')">
|
||||
<i class="bi bi-arrow-counterclockwise"></i> Zurücksetzen
|
||||
|
||||
Reference in New Issue
Block a user