This commit is contained in:
@@ -2,8 +2,9 @@
|
||||
Админ-резолверы - тонкие GraphQL обёртки над AdminService
|
||||
"""
|
||||
|
||||
import json
|
||||
import time
|
||||
from typing import Any, Optional
|
||||
from typing import Any
|
||||
|
||||
from graphql import GraphQLError, GraphQLResolveInfo
|
||||
from sqlalchemy import and_, case, func, or_
|
||||
@@ -21,6 +22,7 @@ from resolvers.topic import invalidate_topic_followers_cache, invalidate_topics_
|
||||
from services.admin import AdminService
|
||||
from services.common_result import handle_error
|
||||
from services.db import local_session
|
||||
from services.rbac import update_all_communities_permissions
|
||||
from services.redis import redis
|
||||
from services.schema import mutation, query
|
||||
from utils.logger import root_logger as logger
|
||||
@@ -66,7 +68,7 @@ async def admin_get_shouts(
|
||||
offset: int = 0,
|
||||
search: str = "",
|
||||
status: str = "all",
|
||||
community: Optional[int] = None,
|
||||
community: int | None = None,
|
||||
) -> dict[str, Any]:
|
||||
"""Получает список публикаций"""
|
||||
try:
|
||||
@@ -85,7 +87,8 @@ async def admin_update_shout(_: None, info: GraphQLResolveInfo, shout: dict[str,
|
||||
return {"success": False, "error": "ID публикации не указан"}
|
||||
|
||||
shout_input = {k: v for k, v in shout.items() if k != "id"}
|
||||
result = await update_shout(None, info, shout_id, shout_input)
|
||||
title = shout_input.get("title")
|
||||
result = await update_shout(None, info, shout_id, title)
|
||||
|
||||
if result.error:
|
||||
return {"success": False, "error": result.error}
|
||||
@@ -464,8 +467,6 @@ async def admin_get_roles(_: None, _info: GraphQLResolveInfo, community: int | N
|
||||
|
||||
# Если указано сообщество, добавляем кастомные роли из Redis
|
||||
if community:
|
||||
import json
|
||||
|
||||
custom_roles_data = await redis.execute("HGETALL", f"community:custom_roles:{community}")
|
||||
|
||||
for role_id, role_json in custom_roles_data.items():
|
||||
@@ -841,8 +842,6 @@ async def admin_create_custom_role(_: None, _info: GraphQLResolveInfo, role: dic
|
||||
}
|
||||
|
||||
# Сохраняем роль в Redis
|
||||
import json
|
||||
|
||||
await redis.execute("HSET", f"community:custom_roles:{community_id}", role_id, json.dumps(role_data))
|
||||
|
||||
logger.info(f"Создана новая роль {role_id} для сообщества {community_id}")
|
||||
@@ -887,8 +886,6 @@ async def admin_delete_custom_role(
|
||||
async def admin_update_permissions(_: None, _info: GraphQLResolveInfo) -> dict[str, Any]:
|
||||
"""Обновляет права для всех сообществ с новыми дефолтными настройками"""
|
||||
try:
|
||||
from services.rbac import update_all_communities_permissions
|
||||
|
||||
await update_all_communities_permissions()
|
||||
|
||||
logger.info("Права для всех сообществ обновлены")
|
||||
|
||||
Reference in New Issue
Block a user