Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e4b27c2d62 | |||
| bf85d406ac | |||
| 06e0c6dfb7 | |||
| fc25c2cd90 | |||
| c672ffcb12 | |||
| 2bafc55e00 |
+43
-18
@@ -8832,25 +8832,25 @@ def admin_mark_invoice_paid(borrow_id):
|
||||
)
|
||||
|
||||
flash('Rechnung wurde als bezahlt markiert.', 'success')
|
||||
return redirect(url_for('admin_borrowings'))
|
||||
return redirect(url_for('library_loans_admin'))
|
||||
except Exception as e:
|
||||
app.logger.error(f"Error marking invoice paid for borrow {borrow_id}: {e}")
|
||||
flash('Fehler beim Markieren als bezahlt.', 'error')
|
||||
return redirect(url_for('admin_borrowings'))
|
||||
return redirect(url_for('library_loans_admin'))
|
||||
finally:
|
||||
if client:
|
||||
client.close()
|
||||
|
||||
|
||||
@app.route('/admin/borrowings/<borrow_id>/invoice/pay', methods=['POST'])
|
||||
def admin_pay_invoice_extended(borrow_id): # <--- HIER GEÄNDERT (Eindeutiger Funktionsname)
|
||||
def admin_pay_invoice_extended(borrow_id):
|
||||
"""Mark invoice as paid and complete borrowing if active."""
|
||||
if 'username' not in session:
|
||||
flash('Ihnen ist es nicht gestattet, versuchen sie es erneut nach Anmeldung!', 'error')
|
||||
return redirect(url_for('login'))
|
||||
|
||||
current_permissions = us.get_effective_permissions(session['username'])
|
||||
if not current_permissions['pages'].get('admin_borrowings', False):
|
||||
if not current_permissions['pages'].get('library_loans_admin', False):
|
||||
flash('Ihnen fehlen die nötigen Berechtigungen.', 'error')
|
||||
return redirect(request.referrer or url_for('home_admin'))
|
||||
|
||||
@@ -8863,12 +8863,12 @@ def admin_pay_invoice_extended(borrow_id): # <--- HIER GEÄNDERT (Eindeutiger F
|
||||
borrow_doc = ausleihungen.find_one({'_id': ObjectId(borrow_id)})
|
||||
if not borrow_doc:
|
||||
flash('Ausleihung nicht gefunden.', 'error')
|
||||
return redirect(request.referrer or url_for('admin_borrowings'))
|
||||
return redirect(request.referrer or url_for('library_loans_admin'))
|
||||
|
||||
invoice_data = borrow_doc.get('InvoiceData') or {}
|
||||
if not invoice_data:
|
||||
flash('Für diese Ausleihung existiert keine Rechnung.', 'warning')
|
||||
return redirect(request.referrer or url_for('admin_borrowings'))
|
||||
return redirect(request.referrer or url_for('library_loans_admin'))
|
||||
|
||||
now = datetime.datetime.now()
|
||||
update_fields = {'LastUpdated': now}
|
||||
@@ -9120,8 +9120,32 @@ def admin_add_invoice_correction(borrow_id):
|
||||
if client:
|
||||
client.close()
|
||||
|
||||
@app.route('/admin/items/<item_id>/resolve_repair', methods=['POST'])
|
||||
def admin_resolve_repair(item_id):
|
||||
"""Flask-Route für die Reparatur-Aktionen (repair, replace, delete)."""
|
||||
if 'username' not in session:
|
||||
flash('Bitte melden Sie sich an, um fortzufahren.', 'error')
|
||||
return redirect(url_for('login'))
|
||||
|
||||
def resolve_repaired_item(item_id, action, new_code_4="", current_user="admin"):
|
||||
current_permissions = us.get_effective_permissions(session['username'])
|
||||
if not current_permissions['pages'].get('library_loans_admin', False):
|
||||
flash('Ihnen fehlen die nötigen Berechtigungen für diese Aktion.', 'error')
|
||||
return redirect(url_for('home_admin'))
|
||||
|
||||
action = request.form.get('action', 'repair')
|
||||
new_code_4 = request.form.get('new_code_4', '')
|
||||
current_user = session.get('username', 'admin')
|
||||
|
||||
success, message = resolve_repaired_item_funct(item_id, action, new_code_4, current_user)
|
||||
|
||||
if success:
|
||||
flash(message, 'success')
|
||||
else:
|
||||
flash(message, 'error')
|
||||
|
||||
return redirect(url_for('library_loans_admin'))
|
||||
|
||||
def resolve_repaired_item_funct(item_id, action, new_code_4="", current_user="admin"):
|
||||
"""
|
||||
Verarbeitet Items aus der Reparatur und aktualisiert die Serien-Counts
|
||||
sowie Parent/Child-Abhängigkeiten beim Löschen korrekt.
|
||||
@@ -9154,7 +9178,6 @@ def resolve_repaired_item(item_id, action, new_code_4="", current_user="admin"):
|
||||
if sibling:
|
||||
new_parent_id_str = str(sibling['_id'])
|
||||
|
||||
# 1. Mache das Geschwister-Item zum neuen Parent
|
||||
items.update_one(
|
||||
{'_id': sibling['_id']},
|
||||
{'$set': {
|
||||
@@ -9163,7 +9186,6 @@ def resolve_repaired_item(item_id, action, new_code_4="", current_user="admin"):
|
||||
}}
|
||||
)
|
||||
|
||||
# 2. Leite alle anderen verbleibenden Sub-Items auf den neuen Parent um
|
||||
items.update_many(
|
||||
{
|
||||
'SeriesGroupId': series_group_id,
|
||||
@@ -9172,17 +9194,8 @@ def resolve_repaired_item(item_id, action, new_code_4="", current_user="admin"):
|
||||
{'$set': {'ParentItemId': new_parent_id_str}}
|
||||
)
|
||||
|
||||
# Physisch aus der Datenbank löschen (Hard Delete)
|
||||
items.delete_one({'_id': ObjectId(item_id)})
|
||||
|
||||
# ALTERNATIVE (Soft Delete have to see if it makes sense):
|
||||
# now = datetime.datetime.now()
|
||||
# items.update_one(
|
||||
# {'_id': ObjectId(item_id)},
|
||||
# {'$set': {'Deleted': True, 'DeletedAt': now, 'DeletedBy': current_user}}
|
||||
# )
|
||||
|
||||
# SeriesCount bei ALLEN verbleibenden Items dieser Serie um 1 reduzieren
|
||||
if series_group_id:
|
||||
items.update_many(
|
||||
{'SeriesGroupId': series_group_id},
|
||||
@@ -9198,6 +9211,12 @@ def resolve_repaired_item(item_id, action, new_code_4="", current_user="admin"):
|
||||
{'$set': {
|
||||
'Code_4': str(new_code_4).strip(),
|
||||
'Verfuegbar': True,
|
||||
'HasDamage': False,
|
||||
'has_damage': False,
|
||||
'DamageCount': 0,
|
||||
'damage_count': 0,
|
||||
'DamageText': '',
|
||||
'damage_text': '',
|
||||
'LastUpdated': datetime.datetime.now()
|
||||
}}
|
||||
)
|
||||
@@ -9209,6 +9228,12 @@ def resolve_repaired_item(item_id, action, new_code_4="", current_user="admin"):
|
||||
{'_id': ObjectId(item_id)},
|
||||
{'$set': {
|
||||
'Verfuegbar': True,
|
||||
'HasDamage': False,
|
||||
'has_damage': False,
|
||||
'DamageCount': 0,
|
||||
'damage_count': 0,
|
||||
'DamageText': '',
|
||||
'damage_text': '',
|
||||
'LastUpdated': datetime.datetime.now()
|
||||
}}
|
||||
)
|
||||
|
||||
@@ -730,11 +730,11 @@ def get_user_by_student_ident(student_ident):
|
||||
return user_doc
|
||||
|
||||
except Exception as e:
|
||||
app.logger.error(f"Entschlüsselungsfehler bei ID {user_doc.get('_id')}: {e}")
|
||||
logger.error(f"Entschlüsselungsfehler bei ID {user_doc.get('_id')}: {e}")
|
||||
continue
|
||||
|
||||
except Exception as exc:
|
||||
app.logger.error(f"Datenbankfehler in get_user_by_student_ident: {exc}")
|
||||
logger.error(f"Datenbankfehler in get_user_by_student_ident: {exc}")
|
||||
finally:
|
||||
client.close()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user