如何让所有用户都属于我的组织

961
3.
跳到解决方案
06-21-2021 07:02 am
VishApte
通过 Esri贡献者
Esri贡献者

你好,

我有一个简单的需求,列出AGOL订阅中的所有用户。我在我的组织的AGOL订阅中有管理员角色。我的组织有超过1000个用户,我使用UserManager和advance_search来分页。示例代码如下

um = UserManager(self.gis)
Current_user = 0
# TODO:找到只列出组织用户的最佳模式
#当前下面的代码列出了每个AGOL用户
user_search_pattern = "access: org OR access: public OR access: private"
users_searches = um.advanced_search(query=user_search_pattern,start=current_user, max_users=self.MAX_USERS, as_dict=True, return_count=False)
While (len(users_searches ['results']) > 0):
Current_user += len(users_searching ['results'])
对于users_searches ['results']中的用户:
用户名= user[' Username ']
User_details = self.get_user_details(用户名)
#待办事项:不确定这是正确的逻辑,以确定用户是否是本地AGOL组织用户
#现在,使用这个逻辑
如果user_details中的'orgId':
self.org_users[username] = user_details['orgId']
#获取下一页用户
users_searches = um.advanced_search(query=user_search_pattern,开始= current_user max_users = self.MAX_USERS)

print("已找到的#{}组织用户总数。".format(len(self.org_users))))

上面的代码非常慢。我正在努力寻找正确的答案查询我应该使用的参数。我已经尝试了所有不同的组合,他们都要么给空结果或列出每个AGOL用户,包括那些不属于我的组织。如果我在浏览器中打开我的AGOL的组织页面,我有1309个用户。浏览器的开发工具告诉我,它运行url参数“q=(*)”和分页参数。我如何得到相同的结果使用ArcGIS API的Python脚本?

欢呼,

Vish

标签(2)
0荣誉
1解决方案

接受的解决方案
DavidPike
通过 常规赛MVP
常规赛MVP
从arcgis。gis import gis import arcgis gis = gis ('https://www.arcgis.com', ", ") user_list = gis.users。查询(query = '*', max_users = 10000)

在原帖子中查看解决方案

3回复
DavidPike
通过 常规赛MVP
常规赛MVP
从arcgis。gis import gis import arcgis gis = gis ('https://www.arcgis.com', ", ") user_list = gis.users。查询(query = '*', max_users = 10000)
MichaelVolz
通过
尊敬的贡献者

这段代码需要用户名和密码吗?

用户是否需要是门户的管理员才能运行脚本?

0荣誉
VishApte
通过 Esri贡献者
Esri贡献者

谢谢@DavidPike就这么简单,这让我很尴尬。

这个脚本为用户报告了很多属性和使用模式。我觉得有必要使用UserManager。Advanced_search支持分页。UserManager.advanced_search(query="*",....)不会产生与UserManager.search(query="*")相同的结果。

vishapte_0 - 1624328674898. - png

欢呼,

Vish

0荣誉