mirror of
https://github.com/GAM-team/GAM.git
synced 2026-07-03 20:31:35 +00:00
Handle duplicate error on pending membership status
This commit is contained in:
15
src/gam.py
15
src/gam.py
@@ -7962,13 +7962,26 @@ def doUpdateGroup():
|
|||||||
items.append(['gam', 'update', 'group', group, 'add', role, user_email])
|
items.append(['gam', 'update', 'group', group, 'add', role, user_email])
|
||||||
else:
|
else:
|
||||||
body = {u'role': role, u'email': users_email[0]}
|
body = {u'role': role, u'email': users_email[0]}
|
||||||
|
for i in range(2):
|
||||||
try:
|
try:
|
||||||
callGAPI(cd.members(), u'insert',
|
callGAPI(cd.members(), u'insert',
|
||||||
throw_reasons=[GAPI_DUPLICATE, GAPI_MEMBER_NOT_FOUND, GAPI_RESOURCE_NOT_FOUND, GAPI_INVALID_MEMBER, GAPI_CYCLIC_MEMBERSHIPS_NOT_ALLOWED],
|
throw_reasons=[GAPI_DUPLICATE, GAPI_MEMBER_NOT_FOUND, GAPI_RESOURCE_NOT_FOUND, GAPI_INVALID_MEMBER, GAPI_CYCLIC_MEMBERSHIPS_NOT_ALLOWED],
|
||||||
groupKey=group, body=body)
|
groupKey=group, body=body)
|
||||||
print u' Group: {0}, {1} Added as {2}'.format(group, users_email[0], role)
|
print u' Group: {0}, {1} Added as {2}'.format(group, users_email[0], role)
|
||||||
except (GAPI_duplicate, GAPI_memberNotFound, GAPI_resourceNotFound, GAPI_invalidMember, GAPI_cyclicMembershipsNotAllowed) as e:
|
break
|
||||||
|
except GAPI_duplicate, e:
|
||||||
|
# check if user is a full member, not pending
|
||||||
|
try:
|
||||||
|
callGAPI(cd.members(), u'get', memberKey=users_email[0], groupKey=group, throw_reasons=[GAPI_MEMBER_NOT_FOUND])
|
||||||
|
raise e # if get succeeds, user is a full member and we throw duplicate error
|
||||||
|
except GAPI_memberNotFound:
|
||||||
|
# insert fails on duplicate and get fails on not found, user is pending
|
||||||
|
print u' Group: {0}, {1} member is pending, deleting and re-adding to solve...'.format(group, users_email[0])
|
||||||
|
callGAPI(cd.members(), u'delete', memberKey=users_email[0], groupKey=group)
|
||||||
|
continue # 2nd insert should succeed now that pending is clear
|
||||||
|
except (GAPI_memberNotFound, GAPI_resourceNotFound, GAPI_invalidMember, GAPI_cyclicMembershipsNotAllowed) as e:
|
||||||
print u' Group: {0}, {1} Add as {2} Failed: {3}'.format(group, users_email[0], role, str(e))
|
print u' Group: {0}, {1} Add as {2} Failed: {3}'.format(group, users_email[0], role, str(e))
|
||||||
|
break
|
||||||
elif myarg == u'sync':
|
elif myarg == u'sync':
|
||||||
syncMembersSet = set()
|
syncMembersSet = set()
|
||||||
syncMembersMap = {}
|
syncMembersMap = {}
|
||||||
|
|||||||
Reference in New Issue
Block a user