Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 46f79b002b |
+46
-20
@@ -10584,15 +10584,24 @@ def notifications_unread_status():
|
||||
client.close()
|
||||
|
||||
|
||||
@app.route('/admin/damaged_items')
|
||||
@app.route('/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:
|
||||
flash('Administratorrechte erforderlich.', 'error')
|
||||
flash('Anmeldung erforderlich.', 'error')
|
||||
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 bson.objectid import ObjectId
|
||||
|
||||
client = None
|
||||
try:
|
||||
@@ -10601,36 +10610,53 @@ def admin_damaged_items():
|
||||
ausleihungen_col = db['ausleihungen']
|
||||
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:
|
||||
raw_user = record.get('User', '')
|
||||
if raw_user:
|
||||
record['User'] = decrypt_text(raw_user)
|
||||
beschädigte_ausleihungen = []
|
||||
|
||||
for record in alle_ausleihungen:
|
||||
item_id = record.get('Item')
|
||||
if item_id:
|
||||
try:
|
||||
item_doc = items_col.find_one({'_id': ObjectId(item_id)})
|
||||
if item_doc:
|
||||
if not item_id:
|
||||
continue
|
||||
|
||||
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'):
|
||||
item_doc['User'] = decrypt_text(item_doc['User'])
|
||||
|
||||
|
||||
record['ItemDetails'] = item_doc
|
||||
except Exception as e:
|
||||
app.logger.warning(f"Konnte Item {item_id} für Ausleihe {record.get('_id')} nicht laden: {e}")
|
||||
beschädigte_ausleihungen.append(record)
|
||||
|
||||
except Exception as e:
|
||||
app.logger.warning(f"Konnte Item {item_id} für Ausleihe {record.get('_id')} nicht laden: {e}")
|
||||
|
||||
return render_template(
|
||||
'admin_damaged_items.html',
|
||||
ausleihungen=ausleihungen,
|
||||
'admin_damaged_items.html',
|
||||
ausleihungen=beschädigte_ausleihungen,
|
||||
library_module_enabled=cfg.MODULES.is_enabled('library'),
|
||||
student_cards_module_enabled=cfg.MODULES.is_enabled('student_cards'),
|
||||
mail_module_enabled=cfg.MODULES.is_enabled('mail')
|
||||
)
|
||||
|
||||
except Exception as exc:
|
||||
app.logger.error(f"Fehler beim Laden der Ausleihen-Verwaltung: {exc}")
|
||||
flash('Fehler beim Laden der Ausleihen-Übersicht.', 'error')
|
||||
app.logger.error(f"Fehler beim Laden der beschädigten Objekte: {exc}")
|
||||
flash('Fehler beim Laden der Übersicht.', 'error')
|
||||
return redirect(url_for('home_admin'))
|
||||
finally:
|
||||
if client:
|
||||
|
||||
Reference in New Issue
Block a user