Users Info (Python)

Users Info (Python)
 1ot = impact.gui.output_toolbox
 2db = impact.active_database
 3
 4def DescribeValues(values):
 5    for i in range(1, values.field_count + 1):
 6        ot.add("Column: " + values.field_name(i) + " Value:'" + values.load(values.field_name(i)) + "'")
 7
 8def DescribeUser(user):
 9    if user.isNone():
10        return
11
12    ot.add("LoginID: " + user.login_id)
13    ot.add("Name: " + user.full_name)
14    ot.add("Formatted Name: " + user.formatted_name)
15    ot.add("User Type: " + user.user_type)
16    ot.add("Key: " + str(user.key))
17    ot.add("Guid: " + user.GUID)
18    ot.add("User Group: " + user.user_group)
19    ot.add("Email: " + user.email)
20    ot.add("Administrator: " + str(user.administrator))
21    ot.add("Disabled: " + str(user.disabled))
22    ot.add("LDAPEnabled: " + str(user.ldap_enabled))
23    ot.add("Connected: " + str(user.connected))
24
25    if not user.manager.isNone():
26        ot.add("Manager: " + user.manager.formatted_name)
27
28    if user.connected:
29        ot.add("Connected From: " + user.connected_from)
30        ot.add("Connection Time: " + str(user.connection_date_time))
31    addresses = user.addresses
32
33    if addresses.count:
34        ot.add("Address Count: " + str(addresses.count))
35
36        for address in addresses:
37            DescribeValues(address.values)
38
39    DescribeValues(user.values)
40
41ot.clear()
42ot.add("**** All Users ****")
43ot.add("User Count: " + str(db.users.count))
44for i in range(1, db.users.count + 1):
45    DescribeUser(db.users.item(i))
46# Alternative Syntax
47# for each user in db.users
48# DescribeUser user
49# next
50
51ot.add("**** All Administrators ****")
52admins = db.users.get_administrators()
53ot.add("User Count: " + str(len(admins) - 1 + 1))
54for user in admins:
55    DescribeUser(user)
56ot.add("**** Users of group 'Admins' ****")
57admins = db.users.get_users_for_group("Administrator Users")
58ot.add("User Count: " + str(len(admins) - 1 + 1))
59for user in admins:
60    DescribeUser(user)
61ot.add("**** All connected users ****")
62connected = db.users.get_connected_primary_users()
63ot.add("User Count: " + str(len(connected) - 1 + 1))
64for user in connected:
65    DescribeUser(user)
66ot.add("**** Find By LoginID ****")
67DescribeUser(db.users.item("ADMIN"))