From daa4b57af185637a8f12091814574228df9d16d9 Mon Sep 17 00:00:00 2001 From: Ross Scroggs Date: Fri, 24 Mar 2017 12:25:25 -0700 Subject: [PATCH] Drive v3 related changes (#456) * Update print drive settings to reflect change to Drive v3 * removeExpiration not passed to API * Update documentation * organizer is valid role on update drivefileacl --- src/GamCommands.txt | 6 +++--- src/gam.py | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/GamCommands.txt b/src/GamCommands.txt index 49fab259..e8b902f6 100644 --- a/src/GamCommands.txt +++ b/src/GamCommands.txt @@ -84,7 +84,7 @@ Named items ::= |(query:) ::= ::= - :: =commenter|editor|owner|reader|writer + :: =commenter|editor|organizer|owner|reader|writer ::= :: = https://docs.google.com/a//document/d// ::= | @@ -784,9 +784,9 @@ gam delete|del emptydrivefolders gam empty drivetrash gam add drivefileacl anyone|(user )|(group )|(domain ) - (role ) [withlink] [sendemail] [emailmessage ] + (role ) [withlink|discoverable] [sendemail] [emailmessage ] gam update drivefileacl - (role ) [withlink] [transferownership ] + (role ) [withlink|discoverable] [removeexpiration] gam delete|del drivefileacl gam show drivefileacl diff --git a/src/gam.py b/src/gam.py index 2ae7ab54..b536f26a 100755 --- a/src/gam.py +++ b/src/gam.py @@ -155,7 +155,7 @@ def getString(i, item, emptyOK=False, optional=False): return u'' print u'ERROR: expected a Non-empty <{0}>'.format(item) sys.exit(2) - elif optional: + elif optional: return u'' print u'ERROR: expected a <{0}>'.format(item) sys.exit(2) @@ -3443,7 +3443,7 @@ def printDriveSettings(users): else: print u'ERROR: %s is not a valid argument for "gam show drivesettings"' % sys.argv[i] sys.exit(2) - dont_show = [u'kind', u'selfLink', u'exportFormats', u'importFormats', u'maxUploadSizes', u'additionalRoleInfo', u'etag', u'features', u'user', u'isCurrentAppInstalled'] + dont_show = [u'kind', u'exportFormats', u'importFormats', u'maxUploadSize', u'maxImportSizes', u'user', u'appInstalled'] csvRows = [] titles = [u'email',] i = 0 @@ -3461,13 +3461,11 @@ def printDriveSettings(users): for setting in feed: if setting in dont_show: continue - if setting == u'quotaBytesByService': - for subsetting in feed[setting]: - my_name = subsetting[u'serviceName'] - my_bytes = int(subsetting[u'bytesUsed']) - row[my_name] = u'%smb' % (my_bytes / 1024 / 1024) - if my_name not in titles: - titles.append(my_name) + if setting == u'storageQuota': + for subsetting, value in feed[setting].iteritems(): + row[subsetting] = u'%smb' % (int(value) / 1024 / 1024) + if subsetting not in titles: + titles.append(subsetting) continue row[setting] = feed[setting] if setting not in titles: @@ -3639,10 +3637,12 @@ def updateDriveFileACL(users): i += 1 elif sys.argv[i].lower() == u'role': body[u'role'] = sys.argv[i+1] - if body[u'role'] not in [u'reader', u'commenter', u'writer', u'owner']: - print u'ERROR: role must be reader, commenter, writer or owner; got %s' % body[u'role'] + if body[u'role'] not in [u'reader', u'commenter', u'writer', u'owner', u'organizer', u'editor']: + print u'ERROR: role must be reader, commenter, writer, organizer, or owner; got %s' % body[u'role'] sys.exit(2) - if body[u'role'] == u'owner': + if body[u'role'] == u'editor': + body[u'role'] = u'writer' + elif body[u'role'] == u'owner': transferOwnership = True i += 2 else: @@ -3654,7 +3654,7 @@ def updateDriveFileACL(users): continue print u'updating permissions for %s to file %s' % (permissionId, fileId) result = callGAPI(drive.permissions(), u'update', fields=u'*', - fileId=fileId, permissionId=permissionId, + fileId=fileId, permissionId=permissionId, removeExpiration=removeExpiration, transferOwnership=transferOwnership, body=body, supportsTeamDrives=True) printPermission(result)