publish-shout-fix
Some checks failed
Deploy on push / deploy (push) Failing after 32s

This commit is contained in:
2025-08-21 12:16:30 +03:00
parent 343c60f608
commit 1b25738714
10 changed files with 246 additions and 195 deletions

View File

@@ -58,7 +58,6 @@ def create_shout_from_draft(session: Session | None, draft: Draft, author_id: in
seo=draft.seo,
created_by=author_id,
community=draft.community,
draft=draft.id,
deleted_at=None,
)
@@ -431,29 +430,30 @@ async def publish_draft(_: None, info: GraphQLResolveInfo, draft_id: int) -> dic
# Проверяем, есть ли уже публикация для этого черновика
shout = None
if hasattr(draft, "publication") and draft.publication:
shout = draft.publication
# Обновляем существующую публикацию
if hasattr(draft, "body"):
shout.body = draft.body
if hasattr(draft, "title"):
shout.title = draft.title
if hasattr(draft, "subtitle"):
shout.subtitle = draft.subtitle
if hasattr(draft, "lead"):
shout.lead = draft.lead
if hasattr(draft, "cover"):
shout.cover = draft.cover
if hasattr(draft, "cover_caption"):
shout.cover_caption = draft.cover_caption
if hasattr(draft, "media"):
shout.media = draft.media
if hasattr(draft, "lang"):
shout.lang = draft.lang
if hasattr(draft, "seo"):
shout.seo = draft.seo
shout.updated_at = int(time.time())
shout.updated_by = author_id
if draft.shout:
shout = session.query(Shout).where(Shout.id == draft.shout).first()
if shout:
# Обновляем существующую публикацию
if hasattr(draft, "body"):
shout.body = draft.body
if hasattr(draft, "title"):
shout.title = draft.title
if hasattr(draft, "subtitle"):
shout.subtitle = draft.subtitle
if hasattr(draft, "lead"):
shout.lead = draft.lead
if hasattr(draft, "cover"):
shout.cover = draft.cover
if hasattr(draft, "cover_caption"):
shout.cover_caption = draft.cover_caption
if hasattr(draft, "media"):
shout.media = draft.media
if hasattr(draft, "lang"):
shout.lang = draft.lang
if hasattr(draft, "seo"):
shout.seo = draft.seo
shout.updated_at = int(time.time())
shout.updated_by = author_id
else:
# Создаем новую публикацию
shout = create_shout_from_draft(session, draft, author_id)
@@ -477,6 +477,9 @@ async def publish_draft(_: None, info: GraphQLResolveInfo, draft_id: int) -> dic
st = ShoutTopic(topic=topic.id, shout=shout.id, main=topic.main if hasattr(topic, "main") else False)
session.add(st)
# Обновляем черновик ссылкой на опубликованную публикацию
draft.shout = shout.id
session.commit()
# Инвалидируем кеш
@@ -535,16 +538,22 @@ async def unpublish_draft(_: None, info: GraphQLResolveInfo, draft_id: int) -> d
# Проверяем, есть ли публикация
shout = None
if hasattr(draft, "publication") and draft.publication:
shout = draft.publication
if draft.shout:
shout = session.query(Shout).where(Shout.id == draft.shout).first()
else:
return {"error": "This draft is not published yet"}
if not shout:
return {"error": "Published shout not found"}
# Снимаем с публикации
shout.published_at = None
shout.updated_at = int(time.time())
shout.updated_by = author_id
# Очищаем ссылку на публикацию в черновике
draft.shout = None
session.commit()
# Инвалидируем кэш
@@ -555,7 +564,7 @@ async def unpublish_draft(_: None, info: GraphQLResolveInfo, draft_id: int) -> d
# Формируем результат
draft_dict = draft.dict()
# Добавляем информацию о публикации
draft_dict["publication"] = {"id": shout.id, "slug": shout.slug, "published_at": None}
draft_dict["shout"] = {"id": shout.id, "slug": shout.slug, "published_at": None}
logger.info(f"Successfully unpublished shout #{shout.id} for draft #{draft_id}")