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

Add set_displayname to the module API #14629

Merged
merged 1 commit into from
Jan 11, 2023
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/14629.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Adds a `set_displayname()` method to the module API for setting a user's display name.
27 changes: 27 additions & 0 deletions synapse/module_api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1585,6 +1585,33 @@ async def create_room(

return room_id_and_alias["room_id"], room_id_and_alias.get("room_alias", None)

async def set_displayname(
self,
user_id: UserID,
new_displayname: str,
deactivation: bool = False,
) -> None:
"""Sets a user's display name.

Added in Synapse v1.76.0.

Args:
user_id:
The user whose display name is to be changed.
new_displayname:
The new display name to give the user.
deactivation:
Whether this change was made while deactivating the user.
"""
requester = create_requester(user_id)
await self._hs.get_profile_handler().set_displayname(
target_user=user_id,
requester=requester,
new_displayname=new_displayname,
by_admin=True,
deactivation=deactivation,
)


class PublicRoomListManager:
"""Contains methods for adding to, removing from and querying whether a room
Expand Down
18 changes: 18 additions & 0 deletions tests/module_api/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,24 @@ def test_can_set_admin(self):
self.assertEqual(found_user.user_id.to_string(), user_id)
self.assertIdentical(found_user.is_admin, True)

def test_can_set_displayname(self):
localpart = "alice_wants_a_new_displayname"
user_id = self.register_user(
localpart, "1234", displayname="Alice", admin=False
)
found_userinfo = self.get_success(self.module_api.get_userinfo_by_id(user_id))

self.get_success(
self.module_api.set_displayname(
found_userinfo.user_id, "Bob", deactivation=False
)
)
found_profile = self.get_success(
self.module_api.get_profile_for_user(localpart)
)

self.assertEqual(found_profile.display_name, "Bob")

def test_get_userinfo_by_id(self):
user_id = self.register_user("alice", "1234")
found_user = self.get_success(self.module_api.get_userinfo_by_id(user_id))
Expand Down