Compare commits

...

1 Commits

Author SHA1 Message Date
Aiirondev_dev 5c4ab6f0fc Biblitoheksid is also convertet 2026-11-01 17:08:22 +01:00
2 changed files with 39 additions and 17 deletions
+28 -10
View File
@@ -165,12 +165,32 @@ def _display_username(user_value):
raw_value = str(user_value).strip()
user_doc = us.get_user_by_id(raw_value)
if not user_doc:
user_doc = us.get_user_by_student_card(raw_value)
if user_doc:
return str(user_doc.get('Username') or user_doc.get('username') or raw_value)
return decrypt_text(raw_value)
def _resolve_library_card_id(user_value):
"""Return the card ID for a stored user reference."""
if user_value is None or str(user_value).strip() == '':
return ''
raw_value = str(user_value).strip()
user_doc = us.get_user_by_id(raw_value)
if user_doc:
return str(user_doc.get('StudentCardId') or raw_value).strip().upper()
decrypted_value = decrypt_text(raw_value)
user_doc = us.get_user_by_student_card(decrypted_value)
if user_doc:
return str(user_doc.get('StudentCardId') or decrypted_value).strip().upper()
return str(decrypted_value or raw_value).strip().upper()
def _decrypt_student_card_doc(card_doc):
if not card_doc:
return card_doc
@@ -1660,8 +1680,7 @@ def update_appointment_statuses():
raw_user = str(appt.get('User', '')).strip()
# Entschlüsselung der AusweisId
decrypted_user = _display_username(raw_user)
target_ausweis_id = decrypted_user if decrypted_user else raw_user
target_ausweis_id = _resolve_library_card_id(raw_user)
item_id = appt.get('Item')
if not target_ausweis_id:
@@ -3715,8 +3734,7 @@ def mahnungen_admin():
item_code = item_doc.get('Code_4', '')
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()
ausweis_id = _resolve_library_card_id(raw_user)
student_card = card_map.get(ausweis_id, {})
student_name = student_card.get('SchülerName', ausweis_id if ausweis_id else 'Unbekannt')
@@ -3803,8 +3821,7 @@ def mahnungen_reset(days):
# 3. Schülerausweis ermitteln und entsperren
raw_user = str(record.get('User', ''))
decrypted_user = decrypt_text(raw_user)
ausweis_id = decrypted_user if decrypted_user else raw_user
ausweis_id = _resolve_library_card_id(raw_user)
card = student_cards_col.find_one({'AusweisId': ausweis_id})
if not card and raw_user != ausweis_id:
@@ -3865,8 +3882,7 @@ def mahnungen_send_email():
# Gegenstand und Schülerausweis ermitteln
raw_user = str(record.get('User', ''))
decrypted_user = decrypt_text(raw_user)
ausweis_id = decrypted_user if decrypted_user else raw_user
ausweis_id = _resolve_library_card_id(raw_user)
card = student_cards_col.find_one({'AusweisId': ausweis_id})
student_card = _decrypt_student_card_doc(card) if card and '_decrypt_student_card_doc' in globals() else (
@@ -4218,8 +4234,7 @@ def api_library_return_by_code():
continue
# AusweisId entschlüsseln
decrypted_user = decrypt_text(raw_user) if 'safe_decrypt' in globals() else raw_user
ausweis_id = decrypted_user if decrypted_user else raw_user
ausweis_id = _resolve_library_card_id(raw_user)
# Prüfen, ob der Schüler noch andere eskalierte Ausleihungen hat
# Da die aktuelle Ausleihe oben auf 'completed' gesetzt wurde, wird sie hier nicht mitgezählt!
@@ -11533,6 +11548,7 @@ def my_borrowed_items():
username,
str(current_user.get('_id')) if current_user.get('_id') else '',
str(session.get('user_id') or ''),
str(current_user.get('StudentCardId') or '').strip().upper(),
}
user_ids.discard('')
@@ -11555,6 +11571,7 @@ def my_borrowed_items():
try:
if raw_user:
user_values.add(str(decrypt_text(raw_user)).strip())
user_values.add(_resolve_library_card_id(raw_user))
except Exception:
pass
@@ -11612,6 +11629,7 @@ def my_borrowed_items():
try:
if raw_item_user:
item_user_values.add(str(decrypt_text(raw_item_user)).strip())
item_user_values.add(_resolve_library_card_id(raw_item_user))
except Exception:
pass
+11 -7
View File
@@ -695,13 +695,17 @@ def get_user_by_student_card(student_card_id):
if not normalized:
return None
client = MongoClient(cfg.MONGODB_HOST, cfg.MONGODB_PORT)
db = _get_tenant_db(client)
users = db['student_cards']
found_user = users.find_one({'AusweisId': normalized})
client.close()
# Do not call dp.decrypt_text() here because found_user is a MongoDB dictionary.
return found_user
try:
db = _get_tenant_db(client)
users = db['users']
return users.find_one({
'$or': [
{'StudentCardId': normalized},
{'StudentCardId': student_card_id},
]
})
finally:
client.close()
def get_user_by_student_ident(student_ident):
"""Return user dict by student ident by decrypting all cards and matching."""