I am using PortalPy to search for and return users. I am getting the following error:
'NoneType' object has no attribute 'get'
I get the error whether I use 'search_users' or 'get_org_users'
The error only occurs when I attempt to return all users. If I search for a specific user or set of users they return fine. My code is:
portal = portalpy.Portal(portalUrl, portalAdminUser, portalAdminPassword)
users = portal.search_users('')
print(users)
Any thought as to what the cause is? There are no obvious problems with our portal users that would make them None objects. The same code worked previously.
Also possibly related is this new message when the script is run "No handlers could be found for logger "portalpy""
Solved! Go to Solution.
I have embarrassingly solved my own problem. The problem was that the portal password was incorrect. This doesn't explain the error messages though, nor does it explain how I was able to access some of the portal users details despite having an invalid login.
Thanks for your help to those who replied.
in python that means None was returned
arguments but 1 was given
>>> a = None
>>> type(a)
<class 'NoneType'>
any function the 'gets' something or is designed just to run, required parameters or no parameters.
You specified portal.search_users('') .... have you tried portal.search_users() ... ie empty braces to see if the defaults will be used if nothing is specified? Or perhaps it requires some other wildcard. Your request uses double single-quotes as the default parameter, something that I doubt it requires.
Hi Dan, I think portalpy uses 'get' when accessing the users within portal. It is failing during its own search. But if I place a specific search funtion it works (but only returns a sub-set of the users). portal.search_users('') is used as a query term is required for search_users and the wildcards '*' and '?' do not work. portal.search_users() is invalid as there is no query.
Ok ... just checking, I am suprised that there is no 'all' or 'any', like '*' use in arcpy
The documentation around what to place as the query is very poor. Although I don't think this is the problem. I have an identical script pointing to a different portal and it works fine.
Given that this works on other Portals, it seems the issue is more with the Portal than the query?
But just in case,
maybe this will help (from: https://github.com/Esri/portalpy/blob/master/portalpy.py) :
Def search_users(self, q, sort_field='username', sort_order='asc', max_users=1000, add_org=True):
""" Searches portal users.
This gives you a list of users and some basic information
about those users. To get more detailed information (such as role), you
may need to call get_user on each user.
.. note::
A few things that will be helpful to know.
1. The query syntax has quite a few features that can't
be adequately described here. The query syntax is
available in ArcGIS help. A short version of that URL
is http://bitly.com/1fJ8q31.
2. Most of the time when searching groups you want to
search within your organization in ArcGIS Online
or within your Portal. As a convenience, the method
automatically appends your organization id to the query by
default. If you don't want the API to append to your query
set add_org to false. If you use this feature with an
OR clause such as field=x or field=y you should put this
into parenthesis when using add_org.
================ ========================================================
*Argument* *Description*
Yes I'm thinking that the issue is with the portal. But there are no problems anywhere else with the users (searching for specific users works fine). Previously ESRI has added users to the portal (esri_nav for example), i'm wondering if they've done something similar again that portalpy can't handle.
I have embarrassingly solved my own problem. The problem was that the portal password was incorrect. This doesn't explain the error messages though, nor does it explain how I was able to access some of the portal users details despite having an invalid login.
Thanks for your help to those who replied.
Thanks for posting that back Greg.
That is some “interesting” stuff.
Makes no sense that you could obtain any info without a proper password.
I’m assuming all the users you did get responses for were “named users?”
Yes, so i've just tested it again. With an incorrect password you can get responses for named users. But you cannot get responses for "all" named users (using '' as your query). But if you put in a search query such as 'greg' it will return all named users found.