unpublish-fixing

This commit is contained in:
2025-08-23 19:35:44 +03:00
parent 394fadfbd1
commit b1370d1eeb

View File

@@ -679,13 +679,28 @@ async def unpublish_shout(_: None, info: GraphQLResolveInfo, shout_id: int) -> C
if not shout: if not shout:
return CommonResult(error="Shout not found", shout=None) return CommonResult(error="Shout not found", shout=None)
# Проверяем права доступа # 🔍 Проверяем права доступа - добавляем логгирование для диагностики
can_edit = any(author.id == author_id for author in shout.authors) or "editor" in roles is_creator = shout.created_by == author_id
is_author = any(author.id == author_id for author in shout.authors)
is_editor = "editor" in roles
logger.info(f"Unpublish check for user {author_id}: is_creator={is_creator}, is_author={is_author}, is_editor={is_editor}, roles={roles}")
can_edit = is_creator or is_author or is_editor
if can_edit: if can_edit:
shout.published_at = None # type: ignore[assignment] shout.published_at = None # type: ignore[assignment]
shout.updated_at = int(time.time()) # type: ignore[assignment] shout.updated_at = int(time.time()) # type: ignore[assignment]
session.add(shout) session.add(shout)
# 🔍 Обновляем связанный черновик - убираем ссылку на публикацию
from orm.draft import Draft
related_draft = session.query(Draft).where(Draft.shout == shout_id).first()
if related_draft:
related_draft.shout = None
session.add(related_draft)
logger.info(f"Updated related draft {related_draft.id} - removed shout reference")
session.commit() session.commit()
# Инвалидация кэша # Инвалидация кэша