add pydantic model + comment

This commit is contained in:
H. Shay 2024-06-06 11:50:25 -07:00
parent 7975a81e12
commit 4b4180bba5
2 changed files with 15 additions and 3 deletions

View file

@ -27,11 +27,13 @@ from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union
import attr import attr
from synapse._pydantic_compat import HAS_PYDANTIC_V2
from synapse.api.constants import Direction, UserTypes from synapse.api.constants import Direction, UserTypes
from synapse.api.errors import Codes, NotFoundError, SynapseError from synapse.api.errors import Codes, NotFoundError, SynapseError
from synapse.http.servlet import ( from synapse.http.servlet import (
RestServlet, RestServlet,
assert_params_in_dict, assert_params_in_dict,
parse_and_validate_json_object_from_request,
parse_boolean, parse_boolean,
parse_enum, parse_enum,
parse_integer, parse_integer,
@ -46,6 +48,7 @@ from synapse.rest.admin._base import (
assert_user_is_admin, assert_user_is_admin,
) )
from synapse.rest.client._base import client_patterns from synapse.rest.client._base import client_patterns
from synapse.rest.models import RequestBodyModel
from synapse.storage.databases.main.registration import ExternalIDReuseException from synapse.storage.databases.main.registration import ExternalIDReuseException
from synapse.storage.databases.main.stats import UserSortOrder from synapse.storage.databases.main.stats import UserSortOrder
from synapse.types import JsonDict, JsonMapping, UserID from synapse.types import JsonDict, JsonMapping, UserID
@ -53,6 +56,12 @@ from synapse.types import JsonDict, JsonMapping, UserID
if TYPE_CHECKING: if TYPE_CHECKING:
from synapse.server import HomeServer from synapse.server import HomeServer
if TYPE_CHECKING or HAS_PYDANTIC_V2:
from pydantic.v1 import StrictBool
else:
from pydantic import StrictBool
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -740,6 +749,9 @@ class SuspendAccountRestServlet(RestServlet):
self.is_mine = hs.is_mine self.is_mine = hs.is_mine
self.store = hs.get_datastores().main self.store = hs.get_datastores().main
class PutBody(RequestBodyModel):
suspend: StrictBool
async def on_PUT( async def on_PUT(
self, request: SynapseRequest, target_user_id: str self, request: SynapseRequest, target_user_id: str
) -> Tuple[int, JsonDict]: ) -> Tuple[int, JsonDict]:
@ -752,8 +764,8 @@ class SuspendAccountRestServlet(RestServlet):
if not await self.store.get_user_by_id(target_user_id): if not await self.store.get_user_by_id(target_user_id):
raise NotFoundError("User not found") raise NotFoundError("User not found")
body = parse_json_object_from_request(request, allow_empty_body=True) body = parse_and_validate_json_object_from_request(request, self.PutBody)
suspend = body.get("suspend", False) suspend = body.suspend
await self.store.set_user_suspended_status(target_user_id, suspend) await self.store.set_user_suspended_status(target_user_id, suspend)
return HTTPStatus.OK, {f"user_{target_user_id}_suspended": suspend} return HTTPStatus.OK, {f"user_{target_user_id}_suspended": suspend}

View file

@ -1119,7 +1119,7 @@ class RoomRedactEventRestServlet(TransactionRestServlet):
if event.sender != requester.user.to_string(): if event.sender != requester.user.to_string():
raise SynapseError( raise SynapseError(
403, 403,
"Only events created by the requester may be redacted while account is suspended.", "You can only redact your own events while account is suspended.",
Codes.USER_ACCOUNT_SUSPENDED, Codes.USER_ACCOUNT_SUSPENDED,
) )