From beeb562ac4b23390d2a09a2c92d3e27469199e11 Mon Sep 17 00:00:00 2001 From: AIIrondev Date: Tue, 11 Aug 2026 22:21:28 +0200 Subject: [PATCH] Dubvug changes --- Web/app.py | 69 +++++++++++++++++++++++------------------------------- 1 file changed, 29 insertions(+), 40 deletions(-) diff --git a/Web/app.py b/Web/app.py index 13acc50..9a28061 100755 --- a/Web/app.py +++ b/Web/app.py @@ -6392,12 +6392,10 @@ def item_edit(id): flash('Ungültige Element-ID.', 'error') return redirect(url_for('home_admin')) - db = it.db - items_col = db['items'] # --- GET: Template anzeigen --- if request.method == 'GET': - item = items_col.find_one({'_id': obj_id}) + item = it.get_item(id) if not item: flash('Element nicht gefunden.', 'error') return redirect(url_for('home_admin')) @@ -6416,13 +6414,13 @@ def item_edit(id): # --- POST: Speichern --- redirect_target = request.referrer or url_for('home_admin') - current_item = items_col.find_one({'_id': obj_id}) + current_item = it.get_item(obj_id) if not current_item: flash('Element in der Datenbank nicht gefunden.', 'error') return redirect(redirect_target) - # Formulardaten + # Formulardaten auslesen und bereinigen name = sanitize_form_value(request.form.get('name')) ort = sanitize_form_value(request.form.get('ort')) beschreibung = sanitize_form_value(request.form.get('beschreibung')) @@ -6440,12 +6438,15 @@ def item_edit(id): filter2 = expand_filter_selection(sanitize_form_value(request.form.getlist('filter2')), 2) filter3 = sanitize_form_value(request.form.getlist('filter3')) + # WICHTIG: Den aktuellen Verfügbarkeitsstatus aus der Datenbank übernehmen + verfuegbar = current_item.get('Verfuegbar', True) + # Barcode Prüfen if code_4 and not it.is_code_unique(code_4, exclude_id=str(id)): flash(f'Der Code "{code_4}" wird bereits verwendet.', 'error') return redirect(redirect_target) - # ISBN + # ISBN und Medientyp verarbeiten item_isbn = '' item_type = item_type_input or current_item.get('ItemType', 'general') if cfg.MODULES.is_enabled('library') and isbn_raw: @@ -6454,7 +6455,7 @@ def item_edit(id): flash('Ungültiges ISBN-Format.', 'error') return redirect(redirect_target) - # Bilder verarbeiten + # Bilder verarbeiten (GridFS) images_to_keep = request.form.getlist('existing_images') original_images = current_item.get('Images', []) images = [img for img in original_images if img in images_to_keep] @@ -6505,43 +6506,31 @@ def item_edit(id): if ort and ort not in it.get_predefined_locations(): it.add_predefined_location(ort) - # Datenstruktur für Update - shared_fields = { - 'Name': name, - 'Ort': ort, - 'Beschreibung': beschreibung, - 'Anschaffungsjahr': anschaffungs_jahr, - 'Anschaffungskosten': anschaffungs_kosten, - 'Reservierbar': reservierbar, - 'ISBN': item_isbn, - 'ItemType': item_type, - 'Kategorie': library_category, - 'LastUpdated': datetime.datetime.now() - } + success = it.update_item( + id=str(id), + name=name, + ort=ort, + beschreibung=beschreibung, + images=images, + verfuegbar=verfuegbar, + filter1=filter1, + filter2=filter2, + filter3=filter3, + ansch_jahr=anschaffungs_jahr, + ansch_kost=anschaffungs_kosten, + code_4=code_4, + reservierbar=reservierbar, + isbn=item_isbn, + item_type=item_type + ) - # Gruppen-Update - group_item_ids = it.get_group_item_ids(str(id)) + if success: + flash('Artikel erfolgreich aktualisiert.', 'success') + else: + flash('Fehler beim Aktualisieren des Artikels.', 'error') - if group_item_ids: - group_object_ids = [ObjectId(g_id) for g_id in group_item_ids] - items_col.update_many({'_id': {'$in': group_object_ids}}, {'$set': shared_fields}) - - # Individual-Update - individual_update = { - **shared_fields, - 'Code_4': code_4, - 'Images': images, - 'Filter1': filter1, - 'Filter2': filter2, - 'Filter3': filter3 - } - - items_col.update_one({'_id': obj_id}, {'$set': individual_update}) - - flash('Artikel erfolgreich aktualisiert.', 'success') return redirect(redirect_target) - @app.route('/update_group', methods=['POST']) def update_group():