Changes to the admin_damaged_items

This commit is contained in:
2026-07-31 21:40:20 +02:00
parent dcc8aae650
commit 46f79b002b
+43 -17
View File
@@ -10586,13 +10586,22 @@ def notifications_unread_status():
@app.route('/admin/damaged_items') @app.route('/admin/damaged_items')
def admin_damaged_items(): def admin_damaged_items():
"""Admin-Übersicht aller aktiven und vergangenen Ausleihen.""" """Admin-Übersicht aller Ausleihen von beschädigten Objekten."""
if 'username' not in session: if 'username' not in session:
flash('Administratorrechte erforderlich.', 'error') flash('Anmeldung erforderlich.', 'error')
return redirect(url_for('login')) return redirect(url_for('login'))
# SICHERHEIT: Berechtigungsprüfung (wie in admin_borrowings)
# Entferne die Kommentare, falls du `us` in dieser Datei importiert hast
"""
current_permissions = us.get_effective_permissions(session['username'])
if not current_permissions['pages'].get('admin_damaged_items', False):
flash('Ihnen fehlen die nötigen Berechtigungen, um diese Aktion auszuführen.', 'error')
return redirect(url_for('home_admin'))
"""
# Import sicherstellen
from modules.inventarsystem.data_protection import decrypt_text from modules.inventarsystem.data_protection import decrypt_text
from bson.objectid import ObjectId
client = None client = None
try: try:
@@ -10601,36 +10610,53 @@ def admin_damaged_items():
ausleihungen_col = db['ausleihungen'] ausleihungen_col = db['ausleihungen']
items_col = db['items'] items_col = db['items']
ausleihungen = list(ausleihungen_col.find().sort('Start', -1)) alle_ausleihungen = list(ausleihungen_col.find().sort('Start', -1))
for record in ausleihungen: beschädigte_ausleihungen = []
raw_user = record.get('User', '')
if raw_user:
record['User'] = decrypt_text(raw_user)
for record in alle_ausleihungen:
item_id = record.get('Item') item_id = record.get('Item')
if item_id: if not item_id:
try: continue
item_doc = items_col.find_one({'_id': ObjectId(item_id)})
if item_doc: try:
if isinstance(item_id, str):
query_id = ObjectId(item_id)
else:
query_id = item_id
item_doc = items_col.find_one({'_id': query_id})
if item_doc:
condition_value = str(item_doc.get('Condition', '')).strip().lower()
has_damage = bool(item_doc.get('HasDamage')) or condition_value == 'destroyed' or bool(
item_doc.get('DamageReports'))
if has_damage:
raw_user = record.get('User', '')
if raw_user:
record['User'] = decrypt_text(raw_user)
if item_doc.get('User'): if item_doc.get('User'):
item_doc['User'] = decrypt_text(item_doc['User']) item_doc['User'] = decrypt_text(item_doc['User'])
record['ItemDetails'] = item_doc record['ItemDetails'] = item_doc
except Exception as e: beschädigte_ausleihungen.append(record)
app.logger.warning(f"Konnte Item {item_id} für Ausleihe {record.get('_id')} nicht laden: {e}")
except Exception as e:
app.logger.warning(f"Konnte Item {item_id} für Ausleihe {record.get('_id')} nicht laden: {e}")
return render_template( return render_template(
'admin_damaged_items.html', 'admin_damaged_items.html',
ausleihungen=ausleihungen, ausleihungen=beschädigte_ausleihungen,
library_module_enabled=cfg.MODULES.is_enabled('library'), library_module_enabled=cfg.MODULES.is_enabled('library'),
student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'), student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'),
mail_module_enabled=cfg.MODULES.is_enabled('mail') mail_module_enabled=cfg.MODULES.is_enabled('mail')
) )
except Exception as exc: except Exception as exc:
app.logger.error(f"Fehler beim Laden der Ausleihen-Verwaltung: {exc}") app.logger.error(f"Fehler beim Laden der beschädigten Objekte: {exc}")
flash('Fehler beim Laden der Ausleihen-Übersicht.', 'error') flash('Fehler beim Laden der Übersicht.', 'error')
return redirect(url_for('home_admin')) return redirect(url_for('home_admin'))
finally: finally:
if client: if client: