Skip to content

Commit

Permalink
Merge pull request plone#1460 from plone/fix-users-endpoint-for-membr…
Browse files Browse the repository at this point in the history
…ane-users

Fix of users endpoint for Membrane users.
  • Loading branch information
mauritsvanrees authored Aug 1, 2022
2 parents ac0907b + 37568f4 commit 311d009
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 9 deletions.
2 changes: 1 addition & 1 deletion docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
# built documents.
# TODO: There must be a way to import this from `setup.py` so we don't have to
# update it manually for each release.
version = "8.21.3.dev0"
version = "8.24.1.dev0"
release = version

# -- General configuration ----------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions news/1459.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix of users endpoint for Membrane users. [ksuess]
19 changes: 12 additions & 7 deletions src/plone/restapi/services/users/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ def _principal_search_results(

return principals

def _get_users(self):
results = {user["userid"] for user in self.acl_users.searchUsers()}
def _get_users(self, **kw):
results = {user["userid"] for user in self.acl_users.searchUsers(**kw)}
users = [self.portal_membership.getMemberById(userid) for userid in results]
return self._sort_users(users)

Expand Down Expand Up @@ -103,14 +103,19 @@ def _get_filtered_users(self, query, groups_filter, search_term, limit):
if search_term:
users = self._user_search_results()
else:
results = self.acl_users.searchUsers(id=query, max_results=limit)
users = [
self.portal_membership.getMemberById(user["userid"]) for user in results
]
kw = {}
if query:
kw["id"] = query
# No max_results if groups_filter
if limit:
kw["max_results"] = limit
users = self._get_users(**kw)

if groups_filter:
users = [
user for user in users if set(user.getGroups()) & set(groups_filter)
]
users = limit and users[:limit] or users
return self._sort_users(users)

def has_permission_to_query(self):
Expand All @@ -131,7 +136,7 @@ def reply(self):
if len(self.query) > 0 and len(self.params) == 0:
query = self.query.get("query", "")
groups_filter = self.query.get("groups-filter:list", [])
limit = self.query.get("limit", [DEFAULT_SEARCH_RESULTS_LIMIT])[0]
limit = int(self.query.get("limit", [DEFAULT_SEARCH_RESULTS_LIMIT])[0])
if query or groups_filter or self.search_term or limit:
if self.has_permission_to_query():
users = self._get_filtered_users(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Content-Type: application/json
"newVersion": "0006",
"required": false
},
"version": "8.23.1.dev0"
"version": "8.24.1.dev0"
},
{
"@id": "http://localhost:55001/plone/@addons/plone.session",
Expand Down

0 comments on commit 311d009

Please sign in to comment.