move image, update image
This commit is contained in:
parent
b7c3b58157
commit
e992a38235
|
|
@ -241,7 +241,7 @@ def update_image():
|
||||||
return jsonify({'error': 'Deck not found'}), 404
|
return jsonify({'error': 'Deck not found'}), 404
|
||||||
|
|
||||||
# 1. Lösche alle Einträge für das Deck ohne bildname
|
# 1. Lösche alle Einträge für das Deck ohne bildname
|
||||||
cursor.execute('DELETE FROM Deck WHERE deckname = ? AND bildname IS NULL', (deckname,))
|
cursor.execute('DELETE FROM Deck WHERE deckname = ? AND bildid = ?', (deckname,bildid))
|
||||||
|
|
||||||
inserted_image_ids = []
|
inserted_image_ids = []
|
||||||
|
|
||||||
|
|
@ -369,6 +369,60 @@ def delete_images_by_bildid(bildid):
|
||||||
finally:
|
finally:
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
@deck_bp.route('/api/decks/images/<bildid>/move', methods=['POST'])
|
||||||
|
def move_image(bildid):
|
||||||
|
"""
|
||||||
|
Verschiebt alle Einträge einer bildid von ihrem aktuellen Deck in ein neues Deck.
|
||||||
|
Das übergebene JSON sollte { "targetDeckId": "neuerDeckname" } sein.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
data = request.get_json()
|
||||||
|
if not data or 'targetDeckId' not in data:
|
||||||
|
return jsonify({'error': 'No targetDeckId provided'}), 400
|
||||||
|
|
||||||
|
target_deck_id = data['targetDeckId']
|
||||||
|
|
||||||
|
# Sicherheitsmaßnahme: Nur erlaubte Zeichen im targetDeckId
|
||||||
|
if not all(c.isalnum() or c in ('_', '-') for c in target_deck_id):
|
||||||
|
logger.warning(f"Ungültiger targetDeckId angefordert: {target_deck_id}")
|
||||||
|
return jsonify({'error': 'Invalid targetDeckId'}), 400
|
||||||
|
|
||||||
|
conn = get_db_connection()
|
||||||
|
cursor = conn.cursor()
|
||||||
|
|
||||||
|
# Überprüfen, ob es Einträge mit der gegebenen bildid gibt
|
||||||
|
cursor.execute('SELECT COUNT(*) as count FROM Deck WHERE bildid = ?', (bildid,))
|
||||||
|
result = cursor.fetchone()
|
||||||
|
if result['count'] == 0:
|
||||||
|
conn.close()
|
||||||
|
return jsonify({'error': 'No entries found for the given image ID'}), 404
|
||||||
|
|
||||||
|
# Update deckname für alle Einträge mit der bildid
|
||||||
|
cursor.execute('UPDATE Deck SET deckname = ? WHERE bildid = ?', (target_deck_id, bildid))
|
||||||
|
updated_rows = cursor.rowcount
|
||||||
|
conn.commit()
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
logger.info(f"Bild mit bildid '{bildid}' wurde in das Deck '{target_deck_id}' verschoben. Aktualisierte Einträge: {updated_rows}")
|
||||||
|
|
||||||
|
return jsonify({'status': 'success', 'moved_entries': updated_rows}), 200
|
||||||
|
|
||||||
|
except sqlite3.Error as e:
|
||||||
|
if conn:
|
||||||
|
conn.rollback()
|
||||||
|
logger.error(f"Datenbankfehler beim Verschieben der Image-Einträge für '{bildid}': {e}")
|
||||||
|
return jsonify({'error': 'Database error', 'details': str(e)}), 500
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
if conn:
|
||||||
|
conn.rollback()
|
||||||
|
logger.error(f"Unerwarteter Fehler beim Verschieben der Image-Einträge für '{bildid}': {e}")
|
||||||
|
return jsonify({'error': 'Failed to move image entries', 'details': str(e)}), 500
|
||||||
|
|
||||||
|
finally:
|
||||||
|
if conn:
|
||||||
|
conn.close()
|
||||||
|
|
||||||
# Sicherstellen, dass die Datenbank existiert
|
# Sicherstellen, dass die Datenbank existiert
|
||||||
if not os.path.exists(DATABASE):
|
if not os.path.exists(DATABASE):
|
||||||
init_db()
|
init_db()
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
[virtualenvs]
|
||||||
|
in-project = true
|
||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "vocab-backend"
|
name = "vocab-backend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
@ -6,7 +9,7 @@ authors = ["Andreas Knuth <andreas.knuth@gmail.com>"]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
|
|
||||||
[tool.poetry.dependencies]
|
[tool.poetry.dependencies]
|
||||||
python = "^3.10"
|
python = "^3.12"
|
||||||
flask = "^2.2.3"
|
flask = "^2.2.3"
|
||||||
paddleocr = "^2.9.1"
|
paddleocr = "^2.9.1"
|
||||||
pillow = "^9.4.0"
|
pillow = "^9.4.0"
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
flask==2.2.3
|
||||||
|
paddleocr==2.9.1
|
||||||
|
pillow>=10.0.0
|
||||||
|
numpy>=1.24.4,<2.0.0
|
||||||
|
opencv-python==4.6.0.66
|
||||||
|
paddlepaddle==2.6.2
|
||||||
|
werkzeug<2.3
|
||||||
Loading…
Reference in New Issue