mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 20:31:35 +00:00
Updated gam <UserTypeEntity> print|show groups` to show totals
Some checks failed
Build and test GAM / build (Win64, build, 8, VC-WIN64A, windows-2022) (push) Has been cancelled
Build and test GAM / build (aarch64, build, 2, linux-aarch64, [self-hosted linux arm64]) (push) Has been cancelled
Build and test GAM / build (aarch64, build, 4, linux-aarch64, [self-hosted linux arm64], yes) (push) Has been cancelled
Build and test GAM / build (aarch64, build, 6, darwin64-arm64, macos-14) (push) Has been cancelled
Build and test GAM / build (universal2, build, 7, darwin64-arm64 darwin64-x86_64, macos-14) (push) Has been cancelled
Build and test GAM / build (x86_64, build, 1, linux-x86_64, ubuntu-20.04) (push) Has been cancelled
Build and test GAM / build (x86_64, build, 3, linux-x86_64, ubuntu-20.04, yes) (push) Has been cancelled
Build and test GAM / build (x86_64, build, 5, darwin64-x86_64, macos-12) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 10, ubuntu-22.04, 3.9) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 11, ubuntu-22.04, 3.10) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 12, ubuntu-22.04, 3.11) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 9, ubuntu-22.04, 3.8) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
Some checks failed
Build and test GAM / build (Win64, build, 8, VC-WIN64A, windows-2022) (push) Has been cancelled
Build and test GAM / build (aarch64, build, 2, linux-aarch64, [self-hosted linux arm64]) (push) Has been cancelled
Build and test GAM / build (aarch64, build, 4, linux-aarch64, [self-hosted linux arm64], yes) (push) Has been cancelled
Build and test GAM / build (aarch64, build, 6, darwin64-arm64, macos-14) (push) Has been cancelled
Build and test GAM / build (universal2, build, 7, darwin64-arm64 darwin64-x86_64, macos-14) (push) Has been cancelled
Build and test GAM / build (x86_64, build, 1, linux-x86_64, ubuntu-20.04) (push) Has been cancelled
Build and test GAM / build (x86_64, build, 3, linux-x86_64, ubuntu-20.04, yes) (push) Has been cancelled
Build and test GAM / build (x86_64, build, 5, darwin64-x86_64, macos-12) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 10, ubuntu-22.04, 3.9) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 11, ubuntu-22.04, 3.10) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 12, ubuntu-22.04, 3.11) (push) Has been cancelled
Build and test GAM / build (x86_64, test, 9, ubuntu-22.04, 3.8) (push) Has been cancelled
CodeQL / Analyze (python) (push) Has been cancelled
Check for Google Root CA Updates / check-apis (push) Has been cancelled
Build and test GAM / merge (push) Has been cancelled
Build and test GAM / publish (push) Has been cancelled
This commit is contained in:
@@ -10,6 +10,14 @@ Add the `-s` option to the end of the above commands to suppress creating the `g
|
|||||||
|
|
||||||
See [Downloads-Installs](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
See [Downloads-Installs](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads-Installs) for Windows or other options, including manual installation
|
||||||
|
|
||||||
|
### 6.79.07
|
||||||
|
|
||||||
|
Added option `totalonly` to `gam <UserTypeEntity> print|show groups` that displays
|
||||||
|
the user email address and the total number of groups to which it belongs. This is in
|
||||||
|
contrast to `countsonly` that has to make an additional API call per group per user to get the user's role.
|
||||||
|
When `countsonly` is specified, an additional column `Total` is displayed that is the sum
|
||||||
|
of the role counts.
|
||||||
|
|
||||||
### 6.79.06
|
### 6.79.06
|
||||||
|
|
||||||
Fixed bug in `gam calendars <CalendarEntity> update event ... removeattendee <EmailAddress>` that caused a trap
|
Fixed bug in `gam calendars <CalendarEntity> update event ... removeattendee <EmailAddress>` that caused a trap
|
||||||
|
|||||||
@@ -251,7 +251,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
admin@server:/Users/admin$ rm -f /Users/admin/GAMConfig/oauth2.txt
|
||||||
admin@server:/Users/admin$ gam version
|
admin@server:/Users/admin$ gam version
|
||||||
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found
|
||||||
GAMADV-XTD3 6.79.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.79.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.4 64-bit final
|
Python 3.12.4 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -923,7 +923,7 @@ writes the credentials into the file oauth2.txt.
|
|||||||
C:\>del C:\GAMConfig\oauth2.txt
|
C:\>del C:\GAMConfig\oauth2.txt
|
||||||
C:\>gam version
|
C:\>gam version
|
||||||
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found
|
||||||
GAMADV-XTD3 6.79.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.79.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.4 64-bit final
|
Python 3.12.4 64-bit final
|
||||||
Windows-10-10.0.17134 AMD64
|
Windows-10-10.0.17134 AMD64
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
- [Display group details in CSV format](#display-group-details-in-csv-format)
|
- [Display group details in CSV format](#display-group-details-in-csv-format)
|
||||||
- [Display group counts as an indented list](#display-group-counts-as-an-indented-list)
|
- [Display group counts as an indented list](#display-group-counts-as-an-indented-list)
|
||||||
- [Display group counts in CSV format](#display-group-counts-in-csv-format)
|
- [Display group counts in CSV format](#display-group-counts-in-csv-format)
|
||||||
|
- [Display total group counts as an indented list](#display-total-group-counts-as-an-indented-list)
|
||||||
|
- [Display total group counts in CSV format](#display-total-group-counts-in-csv-format)
|
||||||
- [Display group addresses in CSV format](#display-group-addresses-in-csv-format)
|
- [Display group addresses in CSV format](#display-group-addresses-in-csv-format)
|
||||||
- [Display groups and their parents](#display-groups-and-their-parents)
|
- [Display groups and their parents](#display-groups-and-their-parents)
|
||||||
- [Add a target user to the same groups as a source user](#add-a-target-user-to-the-same-groups-as-a-source-user)
|
- [Add a target user to the same groups as a source user](#add-a-target-user-to-the-same-groups-as-a-source-user)
|
||||||
@@ -461,6 +463,10 @@ gam <UserTypeEntity> show groups
|
|||||||
[(domain <DomainName>)|(customerid <CustomerID>)]
|
[(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
[roles <GroupRoleList>] countsonly
|
[roles <GroupRoleList>] countsonly
|
||||||
```
|
```
|
||||||
|
By default, all groups to which a member belongs are displayed, these options allow selection of subsets of groups:
|
||||||
|
* `domain <DomainName>` - Limit display to groups in the domain `<DomainName>` of which they are a member
|
||||||
|
* `customerid <CustomerID>` - For resellers, display all groups in a resold workspace of which they are a member
|
||||||
|
* `roles <GroupRoleList>` - Limit display to those groups for which the user has a specific role
|
||||||
|
|
||||||
### Display group counts in CSV format
|
### Display group counts in CSV format
|
||||||
There is one row per user displaying the number of groups, by role, to which a user belongs.
|
There is one row per user displaying the number of groups, by role, to which a user belongs.
|
||||||
@@ -476,6 +482,33 @@ By default, all groups to which a member belongs are displayed, these options al
|
|||||||
* `customerid <CustomerID>` - For resellers, display all groups in a resold workspace of which they are a member
|
* `customerid <CustomerID>` - For resellers, display all groups in a resold workspace of which they are a member
|
||||||
* `roles <GroupRoleList>` - Limit display to those groups for which the user has a specific role
|
* `roles <GroupRoleList>` - Limit display to those groups for which the user has a specific role
|
||||||
|
|
||||||
|
### Display total group counts as an indented list
|
||||||
|
There is one row per user displaying the number of groups to which a user belongs.
|
||||||
|
|
||||||
|
There is one API call per user to get the total group count.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> show groups
|
||||||
|
[(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
|
totalonly
|
||||||
|
```
|
||||||
|
By default, all groups to which a member belongs are displayed, these options allow selection of subsets of groups:
|
||||||
|
* `domain <DomainName>` - Limit display to groups in the domain `<DomainName>` of which they are a member
|
||||||
|
* `customerid <CustomerID>` - For resellers, display all groups in a resold workspace of which they are a member
|
||||||
|
|
||||||
|
|
||||||
|
### Display total group counts in CSV format
|
||||||
|
There is one row per user displaying the total number of groups to which a user belongs.
|
||||||
|
|
||||||
|
There is one API call per user to get the total group count.
|
||||||
|
```
|
||||||
|
gam <UserTypeEntity> print groups [todrive <ToDriveAttribute>*]
|
||||||
|
[(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
|
totalonly
|
||||||
|
```
|
||||||
|
By default, all groups to which a member belongs are displayed, these options allow selection of subsets of groups:
|
||||||
|
* `domain <DomainName>` - Limit display to groups in the domain `<DomainName>` of which they are a member
|
||||||
|
* `customerid <CustomerID>` - For resellers, display all groups in a resold workspace of which they are a member
|
||||||
|
|
||||||
### Display group addresses in CSV format
|
### Display group addresses in CSV format
|
||||||
There is one row per user showing the number and list of groups to which a user directly belongs.
|
There is one row per user showing the number and list of groups to which a user directly belongs.
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Print the current version of Gam with details
|
Print the current version of Gam with details
|
||||||
```
|
```
|
||||||
gam version
|
gam version
|
||||||
GAMADV-XTD3 6.79.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.79.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.4 64-bit final
|
Python 3.12.4 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00
|
|||||||
Print the current version of Gam with details and time offset information
|
Print the current version of Gam with details and time offset information
|
||||||
```
|
```
|
||||||
gam version timeoffset
|
gam version timeoffset
|
||||||
GAMADV-XTD3 6.79.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.79.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.4 64-bit final
|
Python 3.12.4 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second
|
|||||||
Print the current version of Gam with extended details and SSL information
|
Print the current version of Gam with extended details and SSL information
|
||||||
```
|
```
|
||||||
gam version extended
|
gam version extended
|
||||||
GAMADV-XTD3 6.79.06 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
GAMADV-XTD3 6.79.07 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.4 64-bit final
|
Python 3.12.4 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
@@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64
|
|||||||
Path: /Users/Admin/bin/gamadv-xtd3
|
Path: /Users/Admin/bin/gamadv-xtd3
|
||||||
Version Check:
|
Version Check:
|
||||||
Current: 5.35.08
|
Current: 5.35.08
|
||||||
Latest: 6.79.06
|
Latest: 6.79.07
|
||||||
echo $?
|
echo $?
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@@ -72,7 +72,7 @@ echo $?
|
|||||||
Print the current version number without details
|
Print the current version number without details
|
||||||
```
|
```
|
||||||
gam version simple
|
gam version simple
|
||||||
6.79.06
|
6.79.07
|
||||||
```
|
```
|
||||||
In Linux/MacOS you can do:
|
In Linux/MacOS you can do:
|
||||||
```
|
```
|
||||||
@@ -82,7 +82,7 @@ echo $VER
|
|||||||
Print the current version of Gam and address of this Wiki
|
Print the current version of Gam and address of this Wiki
|
||||||
```
|
```
|
||||||
gam help
|
gam help
|
||||||
GAM 6.79.06 - https://github.com/taers232c/GAMADV-XTD3
|
GAM 6.79.07 - https://github.com/taers232c/GAMADV-XTD3
|
||||||
Ross Scroggs <ross.scroggs@gmail.com>
|
Ross Scroggs <ross.scroggs@gmail.com>
|
||||||
Python 3.12.4 64-bit final
|
Python 3.12.4 64-bit final
|
||||||
MacOS Sonoma 14.5 x86_64
|
MacOS Sonoma 14.5 x86_64
|
||||||
|
|||||||
@@ -1994,6 +1994,7 @@ gam revoke browsertoken <BrowserTokenPermanentID>
|
|||||||
org|
|
org|
|
||||||
orgunit|
|
orgunit|
|
||||||
orgunitpath|
|
orgunitpath|
|
||||||
|
ou|
|
||||||
revoketime|
|
revoketime|
|
||||||
revokerid|
|
revokerid|
|
||||||
state|
|
state|
|
||||||
@@ -5356,7 +5357,7 @@ gam download storagefile <StorageBucketObjectName>
|
|||||||
(note clear|([text_html|text_plain] <String>|
|
(note clear|([text_html|text_plain] <String>|
|
||||||
(file|htmlfile <FileName> [charset <Charset>])|
|
(file|htmlfile <FileName> [charset <Charset>])|
|
||||||
(gdoc|ghtml <UserGoogleDoc>)))|
|
(gdoc|ghtml <UserGoogleDoc>)))|
|
||||||
(org|ou|orgunitpath <OrgUnitPath>|<OrgUnitID>)
|
(ou|org|orgunitpath <OrgUnitPath>|<OrgUnitID>)
|
||||||
(password (random [<Integer>])|(uniquerandom [<Integer>])|blocklogin|<Password>)|
|
(password (random [<Integer>])|(uniquerandom [<Integer>])|blocklogin|<Password>)|
|
||||||
(recoveryemail <EmailAddress>)|
|
(recoveryemail <EmailAddress>)|
|
||||||
(recoveryphone <string>)|
|
(recoveryphone <string>)|
|
||||||
@@ -7603,10 +7604,10 @@ gam <UserTypeEntity> check group|groups
|
|||||||
[roles <GroupRoleList>] [includederivedmembership] [csv] <GroupEntity>
|
[roles <GroupRoleList>] [includederivedmembership] [csv] <GroupEntity>
|
||||||
gam <UserTypeEntity> print groups [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print groups [todrive <ToDriveAttribute>*]
|
||||||
[(domain <DomainName>)|(customerid <CustomerID>)]
|
[(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
[roles <GroupRoleList>] [countsonly|nodetails]
|
[roles <GroupRoleList>] [countsonly|totalonly|nodetails]
|
||||||
gam <UserTypeEntity> show groups
|
gam <UserTypeEntity> show groups
|
||||||
[(domain <DomainName>)|(customerid <CustomerID>)]
|
[(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
[roles <GroupRoleList>] [countsonly|nodetails]
|
[roles <GroupRoleList>] [countsonly|totalonly|nodetails]
|
||||||
gam <UserTypeEntity> print grouptree [todrive <ToDriveAttribute>*]
|
gam <UserTypeEntity> print grouptree [todrive <ToDriveAttribute>*]
|
||||||
[(domain <DomainName>)|(customerid <CustomerID>)]
|
[(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
[roles <GroupRoleList>]
|
[roles <GroupRoleList>]
|
||||||
|
|||||||
@@ -2,6 +2,14 @@
|
|||||||
|
|
||||||
Merged GAM-Team version
|
Merged GAM-Team version
|
||||||
|
|
||||||
|
6.79.07
|
||||||
|
|
||||||
|
Added option `totalonly` to `gam <UserTypeEntity> print|show groups` that displays
|
||||||
|
the user email address and the total number of groups to which it belongs. This is in
|
||||||
|
contrast to `countsonly` that has to make an additional API call per group per user to get the user's role.
|
||||||
|
When `countsonly` is specified, an additional column `Total` is displayed that is the sum
|
||||||
|
of the role counts.
|
||||||
|
|
||||||
6.79.06
|
6.79.06
|
||||||
|
|
||||||
Fixed bug in `gam calendars <CalendarEntity> update event ... removeattendee <EmailAddress>` that caused a trap
|
Fixed bug in `gam calendars <CalendarEntity> update event ... removeattendee <EmailAddress>` that caused a trap
|
||||||
|
|||||||
@@ -63546,7 +63546,7 @@ def createSharedDrive(users, useDomainAdminAccess=False):
|
|||||||
waitingForCreationToComplete(updateInitialDelay)
|
waitingForCreationToComplete(updateInitialDelay)
|
||||||
created = False
|
created = False
|
||||||
retry = 0
|
retry = 0
|
||||||
while True:
|
while not created:
|
||||||
try:
|
try:
|
||||||
callGAPI(drive.drives(), 'get',
|
callGAPI(drive.drives(), 'get',
|
||||||
throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.NOT_FOUND],
|
throwReasons=GAPI.DRIVE_USER_THROW_REASONS+[GAPI.NOT_FOUND],
|
||||||
@@ -65275,16 +65275,16 @@ def checkUserInGroups(users):
|
|||||||
|
|
||||||
# gam <UserTypeEntity> print groups [todrive <ToDriveAttribute>*]
|
# gam <UserTypeEntity> print groups [todrive <ToDriveAttribute>*]
|
||||||
# [(domain <DomainName>)|(customerid <CustomerID>)]
|
# [(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
# [roles <GroupRoleList>] [countsonly|nodetails]
|
# [roles <GroupRoleList>] [countsonly|totalonly|nodetails]
|
||||||
# gam <UserTypeEntity> show groups
|
# gam <UserTypeEntity> show groups
|
||||||
# [(domain <DomainName>)|(customerid <CustomerID>)]
|
# [(domain <DomainName>)|(customerid <CustomerID>)]
|
||||||
# [roles <GroupRoleList>] [countsonly|nodetails]
|
# [roles <GroupRoleList>] [countsonly|totalonly|nodetails]
|
||||||
def printShowUserGroups(users):
|
def printShowUserGroups(users):
|
||||||
cd = buildGAPIObject(API.DIRECTORY)
|
cd = buildGAPIObject(API.DIRECTORY)
|
||||||
kwargs = {'customer': GC.Values[GC.CUSTOMER_ID]}
|
kwargs = {'customer': GC.Values[GC.CUSTOMER_ID]}
|
||||||
csvPF = CSVPrintFile(['User', 'Group', 'Role', 'Status', 'Delivery'], 'sortall') if Act.csvFormat() else None
|
csvPF = CSVPrintFile(['User', 'Group', 'Role', 'Status', 'Delivery'], 'sortall') if Act.csvFormat() else None
|
||||||
rolesSet = set()
|
rolesSet = set()
|
||||||
countsOnly = noDetails = False
|
countsOnly = noDetails = totalOnly = False
|
||||||
while Cmd.ArgumentsRemaining():
|
while Cmd.ArgumentsRemaining():
|
||||||
myarg = getArgument()
|
myarg = getArgument()
|
||||||
if csvPF and myarg == 'todrive':
|
if csvPF and myarg == 'todrive':
|
||||||
@@ -65299,6 +65299,8 @@ def printShowUserGroups(users):
|
|||||||
invalidChoiceExit(role, GROUP_ROLES_MAP, True)
|
invalidChoiceExit(role, GROUP_ROLES_MAP, True)
|
||||||
elif myarg == 'countsonly':
|
elif myarg == 'countsonly':
|
||||||
countsOnly = True
|
countsOnly = True
|
||||||
|
elif myarg == 'totalonly':
|
||||||
|
countsOnly = totalOnly = True
|
||||||
elif myarg == 'nodetails':
|
elif myarg == 'nodetails':
|
||||||
noDetails = True
|
noDetails = True
|
||||||
else:
|
else:
|
||||||
@@ -65312,12 +65314,14 @@ def printShowUserGroups(users):
|
|||||||
csvPF.SetTitles(titles)
|
csvPF.SetTitles(titles)
|
||||||
csvPF.SetSortTitles([])
|
csvPF.SetSortTitles([])
|
||||||
elif countsOnly:
|
elif countsOnly:
|
||||||
zeroCounts = {'User': None}
|
zeroCounts = {'User': None, 'Total': 0}
|
||||||
|
if not totalOnly:
|
||||||
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
||||||
if role in rolesSet:
|
if role in rolesSet:
|
||||||
zeroCounts[role] = 0
|
zeroCounts[role] = 0
|
||||||
if csvPF:
|
if csvPF:
|
||||||
titles = ['User']
|
titles = ['User', 'Total']
|
||||||
|
if not totalOnly:
|
||||||
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
||||||
if role in rolesSet:
|
if role in rolesSet:
|
||||||
titles.append(role)
|
titles.append(role)
|
||||||
@@ -65348,6 +65352,12 @@ def printShowUserGroups(users):
|
|||||||
return
|
return
|
||||||
accessErrorExit(cd)
|
accessErrorExit(cd)
|
||||||
jcount = len(entityList)
|
jcount = len(entityList)
|
||||||
|
if totalOnly:
|
||||||
|
if not csvPF:
|
||||||
|
printEntityKVList([Ent.USER, user], ['Total', jcount])
|
||||||
|
else:
|
||||||
|
csvPF.WriteRow({'User': user, 'Total': jcount})
|
||||||
|
continue
|
||||||
if not csvPF:
|
if not csvPF:
|
||||||
if allRoles:
|
if allRoles:
|
||||||
entityPerformActionNumItems([Ent.USER, user], jcount, Ent.GROUP, i, count)
|
entityPerformActionNumItems([Ent.USER, user], jcount, Ent.GROUP, i, count)
|
||||||
@@ -65393,8 +65403,11 @@ def printShowUserGroups(users):
|
|||||||
except (GAPI.memberNotFound, GAPI.invalidMember, GAPI.conditionNotMet, GAPI.serviceNotAvailable) as e:
|
except (GAPI.memberNotFound, GAPI.invalidMember, GAPI.conditionNotMet, GAPI.serviceNotAvailable) as e:
|
||||||
entityActionFailedWarning([Ent.USER, user, Ent.GROUP, groupEmail], str(e), j, jcount)
|
entityActionFailedWarning([Ent.USER, user, Ent.GROUP, groupEmail], str(e), j, jcount)
|
||||||
if countsOnly:
|
if countsOnly:
|
||||||
|
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
||||||
|
if role in rolesSet:
|
||||||
|
userCounts['Total'] += userCounts[role]
|
||||||
if not csvPF:
|
if not csvPF:
|
||||||
kvList = []
|
kvList = ['Total', userCounts['Total']]
|
||||||
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
for role in [Ent.ROLE_MEMBER, Ent.ROLE_MANAGER, Ent.ROLE_OWNER]:
|
||||||
if role in rolesSet:
|
if role in rolesSet:
|
||||||
kvList.extend([role, userCounts[role]])
|
kvList.extend([role, userCounts[role]])
|
||||||
|
|||||||
Reference in New Issue
Block a user