mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-04 03:33:44 +00:00
Simply and generalize print group-members so that fields like the new status are automatically included as Google updates API
This commit is contained in:
69
src/gam.py
69
src/gam.py
@ -9262,17 +9262,17 @@ def doPrintAliases():
|
|||||||
continue
|
continue
|
||||||
writeCSVfile(csvRows, titles, u'Aliases', todrive)
|
writeCSVfile(csvRows, titles, u'Aliases', todrive)
|
||||||
|
|
||||||
MEMBERS_FIELD_NAMES = [u'group', u'id', u'email', u'role', u'type', u'name',]
|
|
||||||
|
|
||||||
def doPrintGroupMembers():
|
def doPrintGroupMembers():
|
||||||
cd = buildGAPIObject(u'directory')
|
cd = buildGAPIObject(u'directory')
|
||||||
todrive = groupname = membernames = False
|
todrive = False
|
||||||
|
membernames = False
|
||||||
customer = GC_Values[GC_CUSTOMER_ID]
|
customer = GC_Values[GC_CUSTOMER_ID]
|
||||||
usedomain = usemember = None
|
usedomain = None
|
||||||
fieldsList = []
|
usemember = None
|
||||||
titles = []
|
fields = None
|
||||||
|
titles = [u'group']
|
||||||
csvRows = []
|
csvRows = []
|
||||||
all_groups = []
|
groups_to_get = []
|
||||||
i = 3
|
i = 3
|
||||||
while i < len(sys.argv):
|
while i < len(sys.argv):
|
||||||
if sys.argv[i].lower() == u'domain':
|
if sys.argv[i].lower() == u'domain':
|
||||||
@ -9287,57 +9287,42 @@ def doPrintGroupMembers():
|
|||||||
customer = None
|
customer = None
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() == u'fields':
|
elif sys.argv[i].lower() == u'fields':
|
||||||
fieldNameList = sys.argv[i+1].lower()
|
memberFieldsList = sys.argv[i+1].replace(u',', u' ').lower().split()
|
||||||
for field in fieldNameList.lower().replace(u',', u' ').split():
|
fields = u'nextPageToken,members(%s)' % (','.join(memberFieldsList))
|
||||||
if field in MEMBERS_FIELD_NAMES:
|
|
||||||
fieldsList.append(field)
|
|
||||||
titles.append(field)
|
|
||||||
else:
|
|
||||||
print u'ERROR: field name must be one of %s; got %s' % (u', '.join(MEMBERS_FIELD_NAMES), field)
|
|
||||||
sys.exit(2)
|
|
||||||
i += 2
|
i += 2
|
||||||
elif sys.argv[i].lower() == u'membernames':
|
elif sys.argv[i].lower() == u'membernames':
|
||||||
membernames = True
|
membernames = True
|
||||||
|
titles.append(u'name')
|
||||||
i += 1
|
i += 1
|
||||||
elif sys.argv[i].lower() == u'group':
|
elif sys.argv[i].lower() == u'group':
|
||||||
group_email = sys.argv[i+1].lower()
|
group_email = sys.argv[i+1].lower()
|
||||||
if group_email.find(u'@') == -1:
|
if group_email.find(u'@') == -1:
|
||||||
group_email = u'%s@%s' % (group_email, GC_Values[GC_DOMAIN])
|
group_email = u'%s@%s' % (group_email, GC_Values[GC_DOMAIN])
|
||||||
all_groups = [{u'email': group_email}]
|
groups_to_get = [{u'email': group_email}]
|
||||||
i += 2
|
i += 2
|
||||||
else:
|
else:
|
||||||
print u'ERROR: %s is not a valid argument for "gam print group-members"' % sys.argv[i]
|
print u'ERROR: %s is not a valid argument for "gam print group-members"' % sys.argv[i]
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
if not fieldsList:
|
if not groups_to_get:
|
||||||
for field in [u'id', u'role', u'group', u'email', u'type']:
|
grous_to_get = callGAPIpages(cd.groups(), u'list', u'groups', message_attribute=u'email',
|
||||||
fieldsList.append(field)
|
|
||||||
titles.append(field)
|
|
||||||
if membernames:
|
|
||||||
titles.append(u'name')
|
|
||||||
else:
|
|
||||||
if u'name'in fieldsList:
|
|
||||||
membernames = True
|
|
||||||
fieldsList.remove(u'name')
|
|
||||||
if u'group' in fieldsList:
|
|
||||||
groupname = True
|
|
||||||
fieldsList.remove(u'group')
|
|
||||||
if not all_groups:
|
|
||||||
all_groups = callGAPIpages(cd.groups(), u'list', u'groups', message_attribute=u'email',
|
|
||||||
customer=customer, domain=usedomain, userKey=usemember, fields=u'nextPageToken,groups(email)')
|
customer=customer, domain=usedomain, userKey=usemember, fields=u'nextPageToken,groups(email)')
|
||||||
i = 0
|
i = 0
|
||||||
count = len(all_groups)
|
count = len(groups_to_get)
|
||||||
for group in all_groups:
|
for group in groups_to_get:
|
||||||
i += 1
|
i += 1
|
||||||
group_email = group[u'email']
|
group_email = group[u'email']
|
||||||
sys.stderr.write(u'Getting members for %s (%s/%s)\n' % (group_email, i, count))
|
sys.stderr.write(u'Getting members for %s (%s/%s)\n' % (group_email, i, count))
|
||||||
group_members = callGAPIpages(cd.members(), u'list', u'members', message_attribute=u'email', groupKey=group_email)
|
group_members = callGAPIpages(cd.members(), u'list', u'members',
|
||||||
|
message_attribute=u'email', groupKey=group_email, fields=fields)
|
||||||
for member in group_members:
|
for member in group_members:
|
||||||
member_attr = {}
|
for unwanted_item in [u'kind', u'etag']:
|
||||||
if groupname:
|
if unwanted_item in member:
|
||||||
member_attr[u'group'] = group_email
|
del(member[unwanted_item])
|
||||||
for title in fieldsList:
|
for title in member:
|
||||||
member_attr[title] = member[title]
|
if title not in titles:
|
||||||
if membernames:
|
titles.append(title)
|
||||||
|
member[u'group'] = group_email
|
||||||
|
if membernames and u'type' in member and u'id' in member:
|
||||||
if member[u'type'] == u'USER':
|
if member[u'type'] == u'USER':
|
||||||
try:
|
try:
|
||||||
mbinfo = callGAPI(cd.users(), u'get',
|
mbinfo = callGAPI(cd.users(), u'get',
|
||||||
@ -9356,8 +9341,8 @@ def doPrintGroupMembers():
|
|||||||
memberName = u'Unknown'
|
memberName = u'Unknown'
|
||||||
else:
|
else:
|
||||||
memberName = u'Unknown'
|
memberName = u'Unknown'
|
||||||
member_attr[u'name'] = memberName
|
member[u'name'] = memberName
|
||||||
csvRows.append(member_attr)
|
csvRows.append(member)
|
||||||
writeCSVfile(csvRows, titles, u'Group Members', todrive)
|
writeCSVfile(csvRows, titles, u'Group Members', todrive)
|
||||||
|
|
||||||
def doPrintMobileDevices():
|
def doPrintMobileDevices():
|
||||||
|
Reference in New Issue
Block a user