Create Team Drives, show permissions and info

This commit is contained in:
Jay Lee
2017-03-15 16:07:40 -04:00
parent 6e9413eada
commit f396b2f476

View File

@ -612,7 +612,7 @@ def callGAPI(service, function,
except TypeError as e: except TypeError as e:
systemErrorExit(4, e) systemErrorExit(4, e)
def callGAPIpages(service, function, items, def callGAPIpages(service, function, items=u'items',
page_message=None, message_attribute=None, page_message=None, message_attribute=None,
soft_errors=False, throw_reasons=None, retry_reasons=None, soft_errors=False, throw_reasons=None, retry_reasons=None,
**kwargs): **kwargs):
@ -810,6 +810,10 @@ def buildDriveGAPIObject(user):
userEmail = convertUserUIDtoEmailAddress(user) userEmail = convertUserUIDtoEmailAddress(user)
return (userEmail, buildGAPIServiceObject(u'drive', userEmail)) return (userEmail, buildGAPIServiceObject(u'drive', userEmail))
def buildDrive3GAPIObject(user):
userEmail = convertUserUIDtoEmailAddress(user)
return (userEmail, buildGAPIServiceObject(u'drive3', userEmail))
def buildGmailGAPIObject(user): def buildGmailGAPIObject(user):
userEmail = convertUserUIDtoEmailAddress(user) userEmail = convertUserUIDtoEmailAddress(user)
return (userEmail, buildGAPIServiceObject(u'gmail', userEmail)) return (userEmail, buildGAPIServiceObject(u'gmail', userEmail))
@ -3455,11 +3459,11 @@ def printPermission(permission):
def showDriveFileACL(users): def showDriveFileACL(users):
fileId = sys.argv[5] fileId = sys.argv[5]
for user in users: for user in users:
user, drive = buildDriveGAPIObject(user) user, drive = buildDrive3GAPIObject(user)
if not drive: if not drive:
continue continue
feed = callGAPI(drive.permissions(), u'list', fileId=fileId) feed = callGAPIpages(drive.permissions(), u'list', items=u'permissions', fileId=fileId, fields=u'*', supportsTeamDrives=True)
for permission in feed[u'items']: for permission in feed:
printPermission(permission) printPermission(permission)
print u'' print u''
@ -4160,7 +4164,7 @@ def showDriveFileInfo(users):
user, drive = buildDriveGAPIObject(user) user, drive = buildDriveGAPIObject(user)
if not drive: if not drive:
continue continue
feed = callGAPI(drive.files(), u'get', fileId=fileId, fields=fields) feed = callGAPI(drive.files(), u'get', fileId=fileId, fields=fields, supportsTeamDrives=True)
print_json(None, feed) print_json(None, feed)
def showDriveFileRevisions(users): def showDriveFileRevisions(users):
@ -6632,6 +6636,15 @@ and accept the Terms of Service (ToS). As soon as you've accepted the ToS popup,
raw_input(u'Press Enter when done...') raw_input(u'Press Enter when done...')
print u'That\'s it! Your GAM Project is created and ready to use.' print u'That\'s it! Your GAM Project is created and ready to use.'
def doCreateTeamDrive(users):
import uuid
body = {u'name': sys.argv[5]}
for user in users:
drive = buildGAPIServiceObject(u'drive3', user)
requestId = unicode(uuid.uuid4())
result = callGAPI(drive.teamdrives(), u'create', requestId=requestId, body=body, fields=u'id')
print u'Created Team Drive %s with id %s' % (body[u'name'], result[u'id'])
def doCreateUser(): def doCreateUser():
cd = buildGAPIObject(u'directory') cd = buildGAPIObject(u'directory')
body, admin_body = getUserAttributes(3, cd, updateCmd=False) body, admin_body = getUserAttributes(3, cd, updateCmd=False)
@ -10718,6 +10731,8 @@ def ProcessGAMCommand(args):
addUpdateSendAs(users, 5, True) addUpdateSendAs(users, 5, True)
elif addWhat == u'smime': elif addWhat == u'smime':
addSmime(users) addSmime(users)
elif addWhat == u'teamdrive':
doCreateTeamDrive(users)
else: else:
print u'ERROR: %s is not a valid argument for "gam <users> add"' % addWhat print u'ERROR: %s is not a valid argument for "gam <users> add"' % addWhat
sys.exit(2) sys.exit(2)