Minor cleanups (#636)

* Minor cleanups

In print users allow actual field names isenforcedin2sv and isenrolledin2sv

In print users, add delimiter and sortheaders options

In print groups, add sortheaders option

* Fixed bug in gam oauth create where entering `e` to exit without changes didn't exit.
This commit is contained in:
Ross Scroggs
2017-12-06 16:09:21 -08:00
committed by Jay Lee
parent 48fa6b755e
commit eb4b8479f3
2 changed files with 24 additions and 11 deletions

View File

@@ -422,8 +422,8 @@ Named items
ipwhitelisted|
isdelegatedadmin|admin|isadmin|
ismailboxsetup|
is2svenforced|
is2svenrolled|
isenforcedin2sv|is2svenforced|
isenrolledin2sv|is2svenrolled|
lastlogintime|
locations|location|
noneditablealiases|aliases|nicknames|
@@ -468,6 +468,7 @@ Items, separated by spaces, with spaces or commas in the items themselves: "'it
<GroupList> ::= "<GroupItem>(,<GroupItem>)*"
<GuardianStateList> ::= "<GuardianState>(,<GuardianState>)*"
<LabelNameList> ::= "<LabelName>(,<LabelName)*"
<LanguageList> ::= "<Language>(,<Language)*"
<MatterItemList> ::= "<MatterItem>(,<MatterItem>)*"
<MembersFieldNameList> ::= "<MembersFieldName>(,<MembersFieldName>)*"
<MobileList> ::= "<MobileId>(,<MobileId>)*"
@@ -802,8 +803,9 @@ gam delete group <GroupItem>
gam info group <GroupItem> [nousers] [noaliases] [groups]
gam print groups [todrive] ([domain <DomainName>] [member <UserItem>])
[maxresults <Number>] [allfields|([settings] <GroupFieldName>* [fields <GroupFieldNameList>])] [delimiter <Character>]
[maxresults <Number>] [allfields|([settings] <GroupFieldName>* [fields <GroupFieldNameList>])]
[members|memberscount] [managers|managerscount] [owners|ownerscount]
[delimiter <Character>] [sortheaders]
gam print group-members|groups-members [todrive] ([domain <DomainName>] [member <UserItem>])|[group <GroupItem>]
[membernames] [fields <MembersFieldNameList>]
@@ -837,6 +839,7 @@ gam print users [todrive] ([domain <DomainName>] [query <QueryUser>] [deleted_on
[groups] [license|licenses|licence|licences] [emailpart|emailparts|username]
[orderby <UserOrderByFieldName> [ascending|descending]] [userview]
[allfields|basic|full | ((<UserFieldName>* | fields <UserFieldNameList>) [schemas|custom all|<SchemaNameList>])]
[delimiter <Character>] [sortheaders]
gam <UserTypeEntity> print
Summary of printing:

View File

@@ -9918,6 +9918,8 @@ USER_ARGUMENT_TO_PROPERTY_MAP = {
u'ipwhitelisted': [u'ipWhitelisted',],
u'isadmin': [u'isAdmin', u'isDelegatedAdmin',],
u'isdelegatedadmin': [u'isAdmin', u'isDelegatedAdmin',],
u'isenforcedin2sv': [u'isEnforcedIn2Sv',],
u'isenrolledin2sv': [u'isEnrolledIn2Sv',],
u'is2svenforced': [u'isEnforcedIn2Sv',],
u'is2svenrolled': [u'isEnrolledIn2Sv',],
u'ismailboxsetup': [u'isMailboxSetup',],
@@ -9971,6 +9973,8 @@ def doPrintUsers():
customFieldMask = None
sortHeaders = getGroupFeed = getLicenseFeed = email_parts = False
viewType = deleted_only = orderBy = sortOrder = None
groupDelimiter = u' '
licenseDelimiter = u','
i = 3
while i < len(sys.argv):
myarg = sys.argv[i].lower().replace(u'_', u'')
@@ -9984,6 +9988,12 @@ def doPrintUsers():
sortHeaders = True
fieldsList = []
i += 1
elif myarg == u'delimiter':
groupDelimiter = licenseDelimiter = sys.argv[i+1]
i += 2
elif myarg == u'sortheaders':
sortHeaders = True
i += 1
elif myarg in [u'custom', u'schemas']:
fieldsList.append(u'customSchemas')
if sys.argv[i+1].lower() == u'all':
@@ -10079,12 +10089,7 @@ def doPrintUsers():
user_email = user[u'primaryEmail']
sys.stderr.write(u"Getting Group Membership for %s (%s/%s)\r\n" % (user_email, user_count, total_users))
groups = callGAPIpages(cd.groups(), u'list', u'groups', userKey=user_email)
grouplist = u''
for groupname in groups:
grouplist += groupname[u'email']+u' '
if grouplist[-1:] == u' ':
grouplist = grouplist[:-1]
user.update(Groups=grouplist)
user[u'Groups'] = groupDelimiter.join([groupname[u'email'] for groupname in groups])
user_count += 1
if getLicenseFeed:
titles.append(u'Licenses')
@@ -10093,7 +10098,7 @@ def doPrintUsers():
for user in csvRows:
u_licenses = licenses.get(user[u'primaryEmail'].lower())
if u_licenses:
user[u'Licenses'] = u','.join([_skuIdToDisplayName(skuId) for skuId in u_licenses])
user[u'Licenses'] = licenseDelimiter.join([_skuIdToDisplayName(skuId) for skuId in u_licenses])
writeCSVfile(csvRows, titles, u'Users', todrive)
GROUP_ARGUMENT_TO_PROPERTY_TITLE_MAP = {
@@ -10188,6 +10193,9 @@ def doPrintGroups():
for field in GROUP_ARGUMENT_TO_PROPERTY_TITLE_MAP:
addFieldTitleToCSVfile(field, GROUP_ARGUMENT_TO_PROPERTY_TITLE_MAP, cdfieldsList, fieldsTitles, titles)
i += 1
elif myarg == u'sortheaders':
sortHeaders = True
i += 1
elif myarg == u'fields':
fieldNameList = sys.argv[i+1]
for field in fieldNameList.lower().replace(u',', u' ').split():
@@ -11331,6 +11339,8 @@ def doRequestOAuth(login_hint=None):
http = httplib2.Http(disable_ssl_certificate_validation=GC_Values[GC_NO_VERIFY_SSL])
flags = cmd_flags(noLocalWebserver=GC_Values[GC_NO_BROWSER])
scopes = getScopesFromUser()
if scopes is None:
return
client_id, client_secret = getOAuthClientIDAndSecret()
login_hint = getValidateLoginHint(login_hint)
flow = oauth2client.client.OAuth2WebServerFlow(client_id=client_id,
@@ -11551,7 +11561,7 @@ def getScopesFromUser():
for i in range(num_scopes):
selected_scopes[i] = u' '
elif selection == u'e':
return
return None
break
sys.stdout.write(u'{0}Invalid input "{1}"\n'.format(ERROR_PREFIX, choice))
if selection == u'c':