fix(playlists): the move's conflict fallback says why it is silent

The house guard requires a silent handler to carry a silent-ok note; the
savepoint fallback added in e74986cc did not, and the gate's pytest lane
caught it.
This commit is contained in:
2026-09-19 07:10:43 +02:00
parent c60359bfed
commit 6f9ba428d5
+3 -1
View File
@@ -587,8 +587,10 @@ def move_item(
item.position = _next_item_position(db, dst.id)
db.flush()
dst_changed = True
# silent-ok: the conflict IS the answer — the target already holds the video, which is the
# idempotent outcome; the savepoint put the row back in the source list, dropped below.
except IntegrityError:
pass # the savepoint put the row back in the source list; drop it below
pass
if not dst_changed:
db.delete(item)
# The source always changed; the target only when the row landed in it. `_touch` on a target