Compare commits

..

2 Commits

+20 -18
View File
@@ -8620,30 +8620,32 @@ def admin_create_invoice(borrow_id):
flash('Für diese Ausleihe existiert bereits eine Rechnung. Bitte Korrekturbuchung verwenden.', 'warning') flash('Für diese Ausleihe existiert bereits eine Rechnung. Bitte Korrekturbuchung verwenden.', 'warning')
return redirect(url_for('admin_borrowings')) return redirect(url_for('admin_borrowings'))
client = MongoClient(cfg.MONGODB_HOST, cfg.MONGODB_PORT)
db = client[cfg.MONGODB_DB]
student_cards = db['student_cards'] student_cards = db['student_cards']
student_id = borrow_doc.get('AusweisId') student_id = borrow_doc.get('AusweisId')
borrower = "Unbekannt"
if not student_id: # 1. Prüfen: Gibt es eine AusweisId?
client.close() if student_id:
flash('Dieser Ausleihe ist kein Schülerausweis zugeordnet.', 'error') try:
return redirect(url_for('admin_borrowings')) card = student_cards.find_one({'_id': ObjectId(student_id)})
except Exception:
card = student_cards.find_one({'_id': student_id})
# 2. Mit der korrekten ID in student_cards suchen if not card:
card = student_cards.find_one({'_id': ObjectId(student_id)}) flash('Der zugehörige Schülerausweis wurde in der Datenbank nicht gefunden.', 'error')
return redirect(url_for('admin_borrowings'))
if not card: card = _decrypt_student_card_doc(card)
client.close() borrower = card.get('SchülerName', 'Unbekannt')
flash('Der zugehörige Schülerausweis wurde in der Datenbank nicht gefunden.', 'error')
return redirect(url_for('admin_borrowings'))
card = _decrypt_student_card_doc(card) # 2. Fallback: Wenn keine AusweisId da ist, schauen wir, ob ein Name unter 'User' gespeichert wurde
client.close() else:
fallback_user = borrow_doc.get('User')
# 3. Sicherer Zugriff mit .get() als zusätzliche Schutzmaßnahme if fallback_user:
borrower = card.get('SchülerName', 'Unbekannt') borrower = str(fallback_user)
else:
flash('Dieser Ausleihe ist weder eine AusweisId noch ein Benutzername zugeordnet.', 'error')
return redirect(url_for('admin_borrowings'))
invoice_number = existing_invoice.get('invoice_number') or _build_invoice_number(borrow_doc['_id'], now) invoice_number = existing_invoice.get('invoice_number') or _build_invoice_number(borrow_doc['_id'], now)
item_name = item_doc.get('Name', '') item_name = item_doc.get('Name', '')