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
|
||||
|
||||
# 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 = []
|
||||
|
||||
|
|
@ -369,6 +369,60 @@ def delete_images_by_bildid(bildid):
|
|||
finally:
|
||||
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
|
||||
if not os.path.exists(DATABASE):
|
||||
init_db()
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
[virtualenvs]
|
||||
in-project = true
|
||||
|
||||
[tool.poetry]
|
||||
name = "vocab-backend"
|
||||
version = "0.1.0"
|
||||
|
|
@ -6,7 +9,7 @@ authors = ["Andreas Knuth <andreas.knuth@gmail.com>"]
|
|||
readme = "README.md"
|
||||
|
||||
[tool.poetry.dependencies]
|
||||
python = "^3.10"
|
||||
python = "^3.12"
|
||||
flask = "^2.2.3"
|
||||
paddleocr = "^2.9.1"
|
||||
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