<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Script tp read users last login in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354834#M69313</link>
    <description>&lt;P&gt;I have been using this script for quite some time ... It reads out AGOL account and creates a csv file for those users that have not logged in from 80-90 days.&lt;/P&gt;&lt;P&gt;But recently started getting an error on line 10 below&amp;nbsp; &amp;nbsp;lastLogintime = user.lastLogin/1000&lt;/P&gt;&lt;P&gt;I am assume this is from the recent AGOL Update?&lt;/P&gt;&lt;P&gt;did it change from&amp;nbsp; &lt;FONT size="4"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp; user.lastLogin&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;ERROR&lt;/P&gt;&lt;LI-CODE lang="c"&gt;Traceback (most recent call last):
  File "K:\GIS Share\GIS_AGOLProcessing\UsersAboutToExpire.py", line 84, in &amp;lt;module&amp;gt;
    main()
  File "K:\GIS Share\GIS_AGOLProcessing\UsersAboutToExpire.py", line 48, in main
    lastLogintime = user.lastLogin/1000
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py", line 8920, in __getattr__
    "'%s' object has no attribute '%s'" % (type(self).__name__, name)
AttributeError: 'User' object has no attribute 'lastLogin'&lt;/LI-CODE&gt;&lt;P&gt;CODE&lt;/P&gt;&lt;LI-CODE lang="c"&gt;def main():
    #log_obj.info("-- Starting to Process AGOL Users...".format())
    with open(output_csv, 'w', encoding='utf-8') as file:
         csvfile = csv.writer(file, delimiter=',', lineterminator='\n')
         csvfile.writerow(["username", "email", "roleID",
                           "level", "disabled", "role",
                           "licenseType", "lastLogin", "daysSince"])
         counter = 0   
         for user in user_list:
            lastLogintime = user.lastLogin/1000
            lastLoginTimeConvert = (datetime.utcfromtimestamp(lastLogintime).strftime('%Y-%m-%d %H:%M:%S'))
            format = '%Y-%m-%d %H:%M:%S'
            lastLoginDate = datetime.strptime(lastLoginTimeConvert, format)
            lastLoginDATE = datetime.now() - lastLoginDate
            lastLoginDAYS = lastLoginDATE.days
            varDisabvled = user.disabled

            #if lastLoginDAYS &amp;gt; 80:
            if lastLoginDAYS in range(80,90):
                if varDisabvled == False:             
                    try:
                        varusername = user.username  
                        varemail = user.email
                        varRoleID = rol_ids[user.roleId]
                        varlevel = user.level
                        vardisabledValue = user.disabled
                        varrole = user.role
                        varlicenceType = user.userLicenseTypeId
                        varLastLogin = lastLoginDate
                        varLastLoginDays = lastLoginDAYS

                        z = (varusername if isinstance(varusername, list) else [varusername]) + [varemail] + [varRoleID] + [varlevel] + [vardisabledValue] +  [varrole] + [varlicenceType] + [varLastLogin] + [varLastLoginDays]
                        output.append(z)

                        counter += 1
                        
                        csvfile.writerow([varusername, varemail, varRoleID,
                                    varlevel, vardisabledValue, varrole,
                                    varlicenceType, varLastLogin, varLastLoginDays      
                                    ])
                    except KeyError as e:
                        print(user.username, e)
            print(counter)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 29 Nov 2023 20:00:03 GMT</pubDate>
    <dc:creator>kapalczynski</dc:creator>
    <dc:date>2023-11-29T20:00:03Z</dc:date>
    <item>
      <title>Script tp read users last login</title>
      <link>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354834#M69313</link>
      <description>&lt;P&gt;I have been using this script for quite some time ... It reads out AGOL account and creates a csv file for those users that have not logged in from 80-90 days.&lt;/P&gt;&lt;P&gt;But recently started getting an error on line 10 below&amp;nbsp; &amp;nbsp;lastLogintime = user.lastLogin/1000&lt;/P&gt;&lt;P&gt;I am assume this is from the recent AGOL Update?&lt;/P&gt;&lt;P&gt;did it change from&amp;nbsp; &lt;FONT size="4"&gt;&lt;EM&gt;&lt;STRONG&gt;&amp;nbsp; user.lastLogin&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;ERROR&lt;/P&gt;&lt;LI-CODE lang="c"&gt;Traceback (most recent call last):
  File "K:\GIS Share\GIS_AGOLProcessing\UsersAboutToExpire.py", line 84, in &amp;lt;module&amp;gt;
    main()
  File "K:\GIS Share\GIS_AGOLProcessing\UsersAboutToExpire.py", line 48, in main
    lastLogintime = user.lastLogin/1000
  File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py", line 8920, in __getattr__
    "'%s' object has no attribute '%s'" % (type(self).__name__, name)
AttributeError: 'User' object has no attribute 'lastLogin'&lt;/LI-CODE&gt;&lt;P&gt;CODE&lt;/P&gt;&lt;LI-CODE lang="c"&gt;def main():
    #log_obj.info("-- Starting to Process AGOL Users...".format())
    with open(output_csv, 'w', encoding='utf-8') as file:
         csvfile = csv.writer(file, delimiter=',', lineterminator='\n')
         csvfile.writerow(["username", "email", "roleID",
                           "level", "disabled", "role",
                           "licenseType", "lastLogin", "daysSince"])
         counter = 0   
         for user in user_list:
            lastLogintime = user.lastLogin/1000
            lastLoginTimeConvert = (datetime.utcfromtimestamp(lastLogintime).strftime('%Y-%m-%d %H:%M:%S'))
            format = '%Y-%m-%d %H:%M:%S'
            lastLoginDate = datetime.strptime(lastLoginTimeConvert, format)
            lastLoginDATE = datetime.now() - lastLoginDate
            lastLoginDAYS = lastLoginDATE.days
            varDisabvled = user.disabled

            #if lastLoginDAYS &amp;gt; 80:
            if lastLoginDAYS in range(80,90):
                if varDisabvled == False:             
                    try:
                        varusername = user.username  
                        varemail = user.email
                        varRoleID = rol_ids[user.roleId]
                        varlevel = user.level
                        vardisabledValue = user.disabled
                        varrole = user.role
                        varlicenceType = user.userLicenseTypeId
                        varLastLogin = lastLoginDate
                        varLastLoginDays = lastLoginDAYS

                        z = (varusername if isinstance(varusername, list) else [varusername]) + [varemail] + [varRoleID] + [varlevel] + [vardisabledValue] +  [varrole] + [varlicenceType] + [varLastLogin] + [varLastLoginDays]
                        output.append(z)

                        counter += 1
                        
                        csvfile.writerow([varusername, varemail, varRoleID,
                                    varlevel, vardisabledValue, varrole,
                                    varlicenceType, varLastLogin, varLastLoginDays      
                                    ])
                    except KeyError as e:
                        print(user.username, e)
            print(counter)&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Nov 2023 20:00:03 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354834#M69313</guid>
      <dc:creator>kapalczynski</dc:creator>
      <dc:date>2023-11-29T20:00:03Z</dc:date>
    </item>
    <item>
      <title>Re: Script tp read users last login</title>
      <link>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354854#M69315</link>
      <description>&lt;P&gt;Make sure your AGOL account you're running the script from is still an AGOL Admin in your org.&lt;BR /&gt;&lt;BR /&gt;If not (like before I was made an Admin in my Org) I could only view my own user details via Python but now I can see others lastLogin.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I just verified this using a test account in AGOL and I get the following error (which I don't get via my Admin login).&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;AttributeError: 'User' object has no attribute 'lastLogin'&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Nov 2023 20:28:24 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354854#M69315</guid>
      <dc:creator>Tom_Laue</dc:creator>
      <dc:date>2023-11-29T20:28:24Z</dc:date>
    </item>
    <item>
      <title>Re: Script tp read users last login</title>
      <link>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354857#M69316</link>
      <description>&lt;P&gt;I simplified it working from this example and same error&lt;/P&gt;&lt;P&gt;&lt;A href="https://support.esri.com/en-us/knowledge-base/how-to-determine-the-last-login-in-arcgis-enterprise-po-000022604" target="_blank" rel="noopener"&gt;https://support.esri.com/en-us/knowledge-base/how-to-determine-the-last-login-in-arcgis-enterprise-po-000022604&lt;/A&gt;&lt;/P&gt;&lt;LI-CODE lang="c"&gt;import arcgis
import time
from arcgis.gis import GIS

#For ArcGIS Online
gis = GIS('https://xxxx.maps.arcgis.com', username="username", password="password")

print("connected")

a_users = gis.users.search(query='', max_users=20)
a_users

for a_user in a_users:
    if a_user. lastLogin != -1:
        last_accessed = time.localtime(a_user. lastLogin/1000)
        print(str(a_user. fullName) + " was last active on: {}/{}/{}\n".format(last_accessed[0], last_accessed[1], last_accessed[2]))

    else:
      print(str(a_user. fullName) + " has never logged in.\n")&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ERROR:&lt;/P&gt;&lt;P&gt;connected&lt;BR /&gt;Traceback (most recent call last):&lt;BR /&gt;File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py", line 8917, in __getattr__&lt;BR /&gt;return dict.__getitem__(self, name)&lt;BR /&gt;KeyError: 'lastLogin'&lt;/P&gt;&lt;P&gt;During handling of the above exception, another exception occurred:&lt;/P&gt;&lt;P&gt;Traceback (most recent call last):&lt;BR /&gt;File "K:\GIS Share\GIS_AGOLProcessing\test.py", line 18, in &amp;lt;module&amp;gt;&lt;BR /&gt;if a_user. lastLogin != -1:&lt;BR /&gt;File "C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\site-packages\arcgis\gis\__init__.py", line 8920, in __getattr__&lt;BR /&gt;"'%s' object has no attribute '%s'" % (type(self).__name__, name)&lt;BR /&gt;AttributeError: 'User' object has no attribute 'lastLogin'&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Nov 2023 20:34:00 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354857#M69316</guid>
      <dc:creator>kapalczynski</dc:creator>
      <dc:date>2023-11-29T20:34:00Z</dc:date>
    </item>
    <item>
      <title>Re: Script tp read users last login</title>
      <link>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354878#M69319</link>
      <description>&lt;P&gt;Fantastic that was it.... we had reset this user account and for some reason it was removed from admin level.&amp;nbsp; Pointed to new account and its working...&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;THANKS&amp;nbsp;&lt;a href="https://community.esri.com/t5/user/viewprofilepage/user-id/299157"&gt;@Tom_Laue&lt;/a&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Nov 2023 21:01:27 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/script-tp-read-users-last-login/m-p/1354878#M69319</guid>
      <dc:creator>kapalczynski</dc:creator>
      <dc:date>2023-11-29T21:01:27Z</dc:date>
    </item>
  </channel>
</rss>

