fix: delete VK product immediately when allow_to_sell becomes false

Previously only the create path checked allow_to_sell. The update path
kept syncing disabled products indefinitely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
mguschin
2026-05-12 23:20:18 +03:00
parent 72194131c7
commit 5c2b501749

View File

@@ -164,6 +164,25 @@ def _sync_product(
now = _now()
if product.vk_product_id:
# Delete from VK if product is no longer for sale
if not product.allow_to_sell:
resp = _vk_post("market.delete", {
"owner_id": owner_id,
"item_id": product.vk_product_id,
}, token, user_id=user_id)
if "error" not in resp:
from web.models.connections import VkCachedProduct
vk_p = db.query(VkCachedProduct).filter_by(
user_id=user_id, vk_group_id=vk_group_id, vk_product_id=product.vk_product_id,
).first()
if vk_p:
db.delete(vk_p)
product.vk_product_id = None
logger.info("user=%s deleted VK product '%s' (disabled)", user_id, name)
else:
logger.warning("market.delete error for disabled product %s: %s", product.evotor_id, resp["error"])
return
# Check if update needed
changed = False
# Re-read current VK state from cache