mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-08 21:53:36 +00:00
Add gam update group <Group> clear [member] [manager] [owner]
This commit is contained in:
34
src/gam.py
34
src/gam.py
@ -6181,12 +6181,13 @@ def doRemoveUsersGroups(users):
|
||||
def doUpdateGroup():
|
||||
cd = buildGAPIObject(u'directory')
|
||||
group = sys.argv[3]
|
||||
if sys.argv[4].lower() in [u'add', u'update', u'sync', u'remove']:
|
||||
myarg = sys.argv[4].lower()
|
||||
if myarg in [u'add', u'update', u'sync', u'remove', u'clear']:
|
||||
if group[0:3].lower() == u'uid:':
|
||||
group = group[4:]
|
||||
elif group.find(u'@') == -1:
|
||||
group = u'%s@%s' % (group, GC_Values[GC_DOMAIN])
|
||||
if sys.argv[4].lower() in [u'add', u'update']:
|
||||
if myarg in [u'add', u'update']:
|
||||
role = sys.argv[5].upper()
|
||||
i = 6
|
||||
if role not in [u'OWNER', u'MANAGER', u'MEMBER']:
|
||||
@ -6200,16 +6201,16 @@ def doUpdateGroup():
|
||||
for user_email in users_email:
|
||||
if user_email != u'*' and user_email.find(u'@') == -1:
|
||||
user_email = u'%s@%s' % (user_email, GC_Values[GC_DOMAIN])
|
||||
sys.stderr.write(u' %sing %s %s...\n' % (sys.argv[4].lower(), role.lower(), user_email))
|
||||
sys.stderr.write(u' %sing %s %s...\n' % (myarg, role.lower(), user_email))
|
||||
try:
|
||||
if sys.argv[4].lower() == u'add':
|
||||
if myarg == u'add':
|
||||
body = {u'role': role, u'email': user_email}
|
||||
callGAPI(cd.members(), u'insert', soft_errors=True, groupKey=group, body=body)
|
||||
elif sys.argv[4].lower() == u'update':
|
||||
else:
|
||||
callGAPI(cd.members(), u'update', soft_errors=True, groupKey=group, memberKey=user_email, body=body)
|
||||
except googleapiclient.errors.HttpError:
|
||||
pass
|
||||
elif sys.argv[4].lower() == u'sync':
|
||||
elif myarg == u'sync':
|
||||
role = sys.argv[5].upper()
|
||||
i = 6
|
||||
if role not in [u'OWNER', u'MANAGER', u'MEMBER']:
|
||||
@ -6228,7 +6229,7 @@ def doUpdateGroup():
|
||||
for user_email in to_remove:
|
||||
items.append([u'update', u'group', group, u'remove', user_email])
|
||||
run_batch(items)
|
||||
elif sys.argv[4].lower() == u'remove':
|
||||
elif myarg == u'remove':
|
||||
i = 5
|
||||
if sys.argv[i].lower() in [u'member', u'manager', u'owner']:
|
||||
i += 1
|
||||
@ -6243,6 +6244,25 @@ def doUpdateGroup():
|
||||
user_email = u'%s@%s' % (user_email, GC_Values[GC_DOMAIN])
|
||||
sys.stderr.write(u' removing %s\n' % user_email)
|
||||
callGAPI(cd.members(), u'delete', soft_errors=True, groupKey=group, memberKey=user_email)
|
||||
else: # clear
|
||||
roles = []
|
||||
i = 5
|
||||
while i < len(sys.argv):
|
||||
role = sys.argv[i].upper()
|
||||
if role in [u'OWNER', u'MANAGER', u'MEMBER']:
|
||||
roles.append(role)
|
||||
i += 1
|
||||
else:
|
||||
print u'ERROR: %s is not a valid argument for "gam update group clear"' % sys.argv[i]
|
||||
sys.exit(2)
|
||||
if roles:
|
||||
roles = u','.join(sorted(set(roles)))
|
||||
else:
|
||||
roles = u'MEMBER'
|
||||
user_emails = getUsersToModify(entity_type=u'group', entity=group, member_type=roles)
|
||||
for user_email in user_emails:
|
||||
sys.stderr.write(u' removing %s\n' % user_email)
|
||||
callGAPI(cd.members(), u'delete', soft_errors=True, groupKey=group, memberKey=user_email)
|
||||
else:
|
||||
i = 4
|
||||
use_cd_api = False
|
||||
|
Reference in New Issue
Block a user