Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Remove unnecessary abstractions in admin handler #6751

Merged
merged 2 commits into from
Jan 22, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/6751.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Remove some unnecessary admin handler abstraction methods.
62 changes: 0 additions & 62 deletions synapse/handlers/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,68 +62,6 @@ async def get_user(self, user):
ret["avatar_url"] = profile.avatar_url
return ret

async def get_users(self):
"""Function to retrieve a list of users in users table.

Args:
Returns:
defer.Deferred: resolves to list[dict[str, Any]]
"""
ret = await self.store.get_users()

return ret

async def get_users_paginate(self, start, limit, name, guests, deactivated):
"""Function to retrieve a paginated list of users from
users list. This will return a json list of users.

Args:
start (int): start number to begin the query from
limit (int): number of rows to retrieve
name (string): filter for user names
guests (bool): whether to in include guest users
deactivated (bool): whether to include deactivated users
Returns:
defer.Deferred: resolves to json list[dict[str, Any]]
"""
ret = await self.store.get_users_paginate(
start, limit, name, guests, deactivated
)

return ret

async def search_users(self, term):
"""Function to search users list for one or more users with
the matched term.

Args:
term (str): search term
Returns:
defer.Deferred: resolves to list[dict[str, Any]]
"""
ret = await self.store.search_users(term)

return ret

def get_user_server_admin(self, user):
"""
Get the admin bit on a user.

Args:
user_id (UserID): the (necessarily local) user to manipulate
"""
return self.store.is_server_admin(user)

def set_user_server_admin(self, user, admin):
"""
Set the admin bit on a user.

Args:
user_id (UserID): the (necessarily local) user to manipulate
admin (bool): whether or not the user should be an admin of this server
"""
return self.store.set_server_admin(user, admin)

async def export_user_data(self, user_id, writer):
"""Write all data we have on the user to the given writer.

Expand Down
19 changes: 9 additions & 10 deletions synapse/rest/admin/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ class UsersRestServlet(RestServlet):

def __init__(self, hs):
self.hs = hs
self.store = hs.get_datastore()
self.auth = hs.get_auth()
self.admin_handler = hs.get_handlers().admin_handler

Expand All @@ -55,7 +56,7 @@ async def on_GET(self, request, user_id):
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Can only users a local user")

ret = await self.admin_handler.get_users()
ret = await self.store.get_users()

return 200, ret

Expand All @@ -80,6 +81,7 @@ class UsersRestServletV2(RestServlet):

def __init__(self, hs):
self.hs = hs
self.store = hs.get_datastore()
self.auth = hs.get_auth()
self.admin_handler = hs.get_handlers().admin_handler

Expand All @@ -92,7 +94,7 @@ async def on_GET(self, request):
guests = parse_boolean(request, "guests", default=True)
deactivated = parse_boolean(request, "deactivated", default=False)

users = await self.admin_handler.get_users_paginate(
users = await self.store.get_users_paginate(
start, limit, user_id, guests, deactivated
)
ret = {"users": users}
Expand Down Expand Up @@ -515,8 +517,8 @@ class SearchUsersRestServlet(RestServlet):
PATTERNS = historical_admin_path_patterns("/search_users/(?P<target_user_id>[^/]*)")

def __init__(self, hs):
self.store = hs.get_datastore()
self.hs = hs
self.store = hs.get_datastore()
self.auth = hs.get_auth()
self.handlers = hs.get_handlers()

Expand All @@ -539,7 +541,7 @@ async def on_GET(self, request, target_user_id):
term = parse_string(request, "term", required=True)
logger.info("term: %s ", term)

ret = await self.handlers.admin_handler.search_users(term)
ret = await self.handlers.store.search_users(term)
return 200, ret


Expand Down Expand Up @@ -573,8 +575,8 @@ class UserAdminServlet(RestServlet):

def __init__(self, hs):
self.hs = hs
self.store = hs.get_datastore()
self.auth = hs.get_auth()
self.handlers = hs.get_handlers()

async def on_GET(self, request, user_id):
await assert_requester_is_admin(self.auth, request)
Expand All @@ -584,8 +586,7 @@ async def on_GET(self, request, user_id):
if not self.hs.is_mine(target_user):
raise SynapseError(400, "Only local users can be admins of this homeserver")

is_admin = await self.handlers.admin_handler.get_user_server_admin(target_user)
is_admin = bool(is_admin)
is_admin = await self.store.is_server_admin(target_user)

return 200, {"admin": is_admin}

Expand All @@ -608,8 +609,6 @@ async def on_PUT(self, request, user_id):
if target_user == auth_user and not set_admin_to:
raise SynapseError(400, "You may not demote yourself.")

await self.handlers.admin_handler.set_user_server_admin(
target_user, set_admin_to
)
await self.store.set_user_server_admin(target_user, set_admin_to)

return 200, {}
2 changes: 1 addition & 1 deletion synapse/storage/data_stores/main/registration.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ def is_server_admin(self, user):
desc="is_server_admin",
)

return res if res else False
return bool(res) if res else False

def set_server_admin(self, user, admin):
"""Sets whether a user is an admin of this homeserver.
Expand Down