feat: pool set_mask + route

Write a per-slot grayscale mask sidecar (img_XXXX.mask.png) and record
it on the slot. Add the multipart /grid_pool/set_mask route.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-21 14:01:26 +02:00
parent cd0b8783dc
commit 6feb2c6e63
4 changed files with 48 additions and 0 deletions
+15
View File
@@ -45,6 +45,21 @@ async def _label(request):
return web.json_response(handlers.handle_label(_base(), body["pool_id"], int(body["index"]), body["label"]))
@routes.post("/grid_pool/set_mask")
async def _set_mask(request):
reader = await request.multipart()
pool_id, index, data = "default", 0, None
async for part in reader:
if part.name == "pool_id":
pool_id = (await part.text())
elif part.name == "index":
index = int(await part.text())
elif part.name == "mask":
data = await part.read(decode=False)
m = handlers.handle_set_mask(_base(), pool_id, index, data)
return web.json_response(m)
@routes.get("/grid_pool/list")
async def _list(request):
pool_id = request.query.get("pool_id", "default")