This commit is contained in:
@@ -35,7 +35,7 @@ async def cache_by_id(entity, entity_id: int, cache_method):
|
||||
@query.field("get_my_shout")
|
||||
@login_required
|
||||
async def get_my_shout(_, info, shout_id: int):
|
||||
logger.debug(info)
|
||||
# logger.debug(info)
|
||||
user_id = info.context.get("user_id", "")
|
||||
author_dict = info.context.get("author", {})
|
||||
author_id = author_dict.get("id")
|
||||
@@ -54,7 +54,7 @@ async def get_my_shout(_, info, shout_id: int):
|
||||
if not shout:
|
||||
return {"error": "no shout found", "shout": None}
|
||||
|
||||
logger.debug(f"got shout authors: {shout.authors} created by {shout.created_by}")
|
||||
logger.debug(f"got {len(shout.authors)} shout authors, created by {shout.created_by}")
|
||||
is_editor = "editor" in roles
|
||||
logger.debug(f'viewer is{'' if is_editor else ' not'} editor')
|
||||
is_creator = author_id == shout.created_by
|
||||
|
@@ -27,12 +27,13 @@ from services.viewed import ViewedStorage
|
||||
from utils.logger import root_logger as logger
|
||||
|
||||
|
||||
def query_shouts(slug=None):
|
||||
def query_shouts(slug=None, shout_id=None):
|
||||
"""
|
||||
Базовый запрос для получения публикаций с подзапросами статистики, авторов и тем,
|
||||
с агрегацией в строку.
|
||||
|
||||
:param slug: Опциональный параметр для фильтрации по slug.
|
||||
:param shout_id: Опциональный параметр для фильтрации по shout_id.
|
||||
:return: Запрос для получения публикаций, aliased_reaction:
|
||||
"""
|
||||
aliased_reaction = aliased(Reaction)
|
||||
@@ -143,6 +144,8 @@ def query_shouts(slug=None):
|
||||
|
||||
if slug:
|
||||
q = q.where(Shout.slug == slug)
|
||||
elif shout_id:
|
||||
q = q.where(Shout.id == shout_id)
|
||||
|
||||
return q, aliased_reaction
|
||||
|
||||
@@ -311,7 +314,7 @@ def apply_filters(q, filters, author_id=None):
|
||||
|
||||
|
||||
@query.field("get_shout")
|
||||
async def get_shout(_, info, slug: str):
|
||||
async def get_shout(_, info, slug: str, shout_id: int):
|
||||
"""
|
||||
Получение публикации по slug.
|
||||
|
||||
@@ -324,7 +327,7 @@ async def get_shout(_, info, slug: str):
|
||||
with local_session() as session:
|
||||
# Отключение автосохранения
|
||||
with session.no_autoflush:
|
||||
q, aliased_reaction = query_shouts(slug)
|
||||
q, _ = query_shouts(slug)
|
||||
results = session.execute(q).first()
|
||||
if results:
|
||||
[
|
||||
|
Reference in New Issue
Block a user