0

Every time I run this code with a wild card (max_users = '*') or >140 I get this error JSONDecodeError: Expecting value: line 1 column 1 (char 0). But are <140 value it works fine not just all the user are returned.

What am I doing wrong?

 def datetime_of_last_login(user) -> dt.datetime:
    timestamp_of_last_login = int(user.lastLogin / 1000)
    last_login = dt.datetime.fromtimestamp(timestamp_of_last_login)
    return last_login

def num_days_since_last_login(user) -> int:
        last_login = datetime_of_last_login(user)
        now = dt.datetime.now()
        return (now - last_login).days
       
users = gis.users.search(query='*', max_users=140)

for user in users:
    cd = dt.datetime.fromtimestamp(user.created / 1000).strftime('%Y-%m-%d %H:%M:%S')
    last_login_datetime = datetime_of_last_login(user)
    days_since_last_login = num_days_since_last_login(user)
    print("_____________________________________________________________")
    print(f"User: {user.username}")
    print(f"Role: {user.role}")
    print(f"Email: {user.email}")
    print("Creation Date:", cd)
    print("Last Login:", last_login_datetime)
    print("Days Since Last Login:", days_since_last_login)
    
    if days_since_last_login > 90:
        print (f"User:{user.username}")

1 Answer 1

0

The solution was pagination. The user list is large thus there is need to pull in bit using this code

start = 0
lenght_searchresult = 100
while lenght_searchresult == 100:
    source_users = source.users.advanced_search(query='!esri_ & !portaladmin', start = start, max_users = 100)
    list_users = source_users.get('results')
    lenght_searchresult = len(list_users)
    start = start + 100
    for user in list_users:
        print(user.username)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.