diff options
author | Matthew Hodgson <matthew@arasphere.net> | 2017-12-05 11:09:47 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-05 11:09:47 +0000 |
commit | 33cb7ef0b7f0c8e31abf580ba3ffa33c255f0a55 (patch) | |
tree | 196666de4e0fe2263544c8db3f74dbc48798e64a /synapse/storage/profile.py | |
parent | Fix error when deleting devices (diff) | |
parent | fix StoreError syntax (diff) | |
download | synapse-33cb7ef0b7f0c8e31abf580ba3ffa33c255f0a55.tar.xz |
Merge pull request #2723 from matrix-org/matthew/search-all-local-users
Add all local users to the user_directory and optionally search them
Diffstat (limited to 'synapse/storage/profile.py')
-rw-r--r-- | synapse/storage/profile.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/synapse/storage/profile.py b/synapse/storage/profile.py index beea3102fc..ec02e73bc2 100644 --- a/synapse/storage/profile.py +++ b/synapse/storage/profile.py @@ -15,6 +15,9 @@ from twisted.internet import defer +from synapse.storage.roommember import ProfileInfo +from synapse.api.errors import StoreError + from ._base import SQLBaseStore @@ -26,6 +29,30 @@ class ProfileStore(SQLBaseStore): desc="create_profile", ) + @defer.inlineCallbacks + def get_profileinfo(self, user_localpart): + try: + profile = yield self._simple_select_one( + table="profiles", + keyvalues={"user_id": user_localpart}, + retcols=("displayname", "avatar_url"), + desc="get_profileinfo", + ) + except StoreError as e: + if e.code == 404: + # no match + defer.returnValue(ProfileInfo(None, None)) + return + else: + raise + + defer.returnValue( + ProfileInfo( + avatar_url=profile['avatar_url'], + display_name=profile['displayname'], + ) + ) + def get_profile_displayname(self, user_localpart): return self._simple_select_one_onecol( table="profiles", |