Make show filelist/filetree consistent (#304)

show filetree shows all files
show filelist shows owned files

This change makes them both show owned files by default. The anyowner
argument makes either command show all files
This commit is contained in:
Ross Scroggs
2016-10-24 14:33:26 -07:00
committed by Jay Lee
parent fb41698e5f
commit 60a97b3e26

View File

@@ -3813,6 +3813,15 @@ def updateDriveFileACL(users):
result = callGAPI(drive.permissions(), u'patch', fileId=fileId, permissionId=permissionId, transferOwnership=transferOwnership, body=body) result = callGAPI(drive.permissions(), u'patch', fileId=fileId, permissionId=permissionId, transferOwnership=transferOwnership, body=body)
printPermission(result) printPermission(result)
def _stripMeInOwners(query):
if not query:
return query
if query == u"'me' in owners":
return None
if query.startswith(u"'me' in owners and "):
return query[len(u"'me' in owners and "):]
return query
DRIVEFILE_FIELDS_CHOICES_MAP = { DRIVEFILE_FIELDS_CHOICES_MAP = {
u'alternatelink': u'alternateLink', u'alternatelink': u'alternateLink',
u'appdatacontents': u'appDataContents', u'appdatacontents': u'appDataContents',
@@ -3908,14 +3917,14 @@ DRIVEFILE_ORDERBY_CHOICES_MAP = {
} }
def printDriveFileList(users): def printDriveFileList(users):
allfields = todrive = False allfields = anyowner = todrive = False
fieldsList = [] fieldsList = []
fieldsTitles = {} fieldsTitles = {}
labelsList = [] labelsList = []
orderByList = [] orderByList = []
titles = [u'Owner',] titles = [u'Owner',]
csvRows = [] csvRows = []
query = u'"me" in owners' query = u"'me' in owners"
i = 5 i = 5
while i < len(sys.argv): while i < len(sys.argv):
myarg = sys.argv[i].lower().replace(u'_', u'') myarg = sys.argv[i].lower().replace(u'_', u'')
@@ -3946,6 +3955,9 @@ def printDriveFileList(users):
elif myarg == u'fullquery': elif myarg == u'fullquery':
query = sys.argv[i+1] query = sys.argv[i+1]
i += 2 i += 2
elif myarg == u'anyowner':
anyowner = True
i += 1
elif myarg == u'allfields': elif myarg == u'allfields':
fieldsList = [] fieldsList = []
allfields = True allfields = True
@@ -3978,6 +3990,8 @@ def printDriveFileList(users):
orderBy = u','.join(orderByList) orderBy = u','.join(orderByList)
else: else:
orderBy = None orderBy = None
if anyowner:
query = _stripMeInOwners(query)
for user in users: for user in users:
user, drive = buildDriveGAPIObject(user) user, drive = buildDriveGAPIObject(user)
if not drive: if not drive:
@@ -4090,11 +4104,16 @@ def printDriveFolderContents(feed, folderId, indent):
break break
def showDriveFileTree(users): def showDriveFileTree(users):
anyowner = False
orderByList = [] orderByList = []
query = u"'me' in owners"
i = 5 i = 5
while i < len(sys.argv): while i < len(sys.argv):
myarg = sys.argv[i].lower().replace(u'_', u'') myarg = sys.argv[i].lower().replace(u'_', u'')
if myarg == u'orderby': if myarg == u'anyowner':
anyowner = True
i += 1
elif myarg == u'orderby':
fieldName = sys.argv[i+1].lower() fieldName = sys.argv[i+1].lower()
i += 2 i += 2
if fieldName in DRIVEFILE_ORDERBY_CHOICES_MAP: if fieldName in DRIVEFILE_ORDERBY_CHOICES_MAP:
@@ -4119,6 +4138,8 @@ def showDriveFileTree(users):
orderBy = u','.join(orderByList) orderBy = u','.join(orderByList)
else: else:
orderBy = None orderBy = None
if anyowner:
query = _stripMeInOwners(query)
for user in users: for user in users:
user, drive = buildDriveGAPIObject(user) user, drive = buildDriveGAPIObject(user)
if not drive: if not drive:
@@ -4127,7 +4148,7 @@ def showDriveFileTree(users):
sys.stderr.write(u'Getting all files for %s...\n' % user) sys.stderr.write(u'Getting all files for %s...\n' % user)
page_message = u' got %%%%total_items%%%% files for %s...\n' % user page_message = u' got %%%%total_items%%%% files for %s...\n' % user
feed = callGAPIpages(drive.files(), u'list', u'items', page_message=page_message, feed = callGAPIpages(drive.files(), u'list', u'items', page_message=page_message,
orderBy=orderBy, fields=u'items(id,title,parents(id),mimeType),nextPageToken', maxResults=GC_Values[GC_DRIVE_MAX_RESULTS]) q=query, orderBy=orderBy, fields=u'items(id,title,parents(id),mimeType),nextPageToken', maxResults=GC_Values[GC_DRIVE_MAX_RESULTS])
printDriveFolderContents(feed, root_folder, 0) printDriveFolderContents(feed, root_folder, 0)
def deleteEmptyDriveFolders(users): def deleteEmptyDriveFolders(users):