gam <UserTypeEntity> untrash message|messages query <Query> [doit] [max_to_untrash <Number>]

This commit is contained in:
Ross Scroggs
2016-03-09 15:41:04 -08:00
parent 3ef433687a
commit 7412236679

View File

@ -4454,10 +4454,12 @@ def doLabel(users):
i += 1
callGAPI(service=gmail.users().labels(), function=u'create', soft_errors=True, userId=user, body=body)
def doDeleteMessages(trashOrDelete, users):
PROCESS_MESSAGE_FUNCTION_TO_ACTION_MAP = {u'delete': u'deleted', u'trash': u'trashed', u'untrash': u'untrashed',}
def doProcessMessages(users, function):
query = None
doIt = False
maxToDelete = 1
maxToProcess = 1
i = 5
while i < len(sys.argv):
if sys.argv[i].lower() == u'query':
@ -4466,15 +4468,16 @@ def doDeleteMessages(trashOrDelete, users):
elif sys.argv[i].lower() == u'doit':
doIt = True
i += 1
elif sys.argv[i].lower().replace(u'_', u'') == u'maxtodelete':
maxToDelete = int(sys.argv[i+1])
elif sys.argv[i].lower().replace(u'_', u'') in [u'maxtodelete', u'maxtotrash', u'maxtomove', u'maxtountrash']:
maxToProcess = int(sys.argv[i+1])
i += 2
else:
print u'ERROR: %s is not a valid argument for "gam <users> delete messages"' % sys.argv[i]
print u'ERROR: %s is not a valid argument for "gam <users> %s messages"' % (sys.argv[i], function)
sys.exit(2)
if not query:
print u'ERROR: No query specified. You must specify some query!'
sys.exit(2)
action = PROCESS_MESSAGE_FUNCTION_TO_ACTION_MAP[function]
for user in users:
print u'Searching messages for %s' % user
gmail = buildGAPIServiceObject(u'gmail', user)
@ -4484,16 +4487,16 @@ def doDeleteMessages(trashOrDelete, users):
userId=u'me', q=query, includeSpamTrash=True, soft_errors=True)
del_count = len(listResult)
if not doIt:
print u'would try to delete %s messages for user %s (max %s)\n' % (del_count, user, maxToDelete)
print u'would try to %s %s messages for user %s (max %s)\n' % (function, del_count, user, maxToProcess)
continue
elif del_count > maxToDelete:
print u'WARNING: refusing to delete ANY messages for %s since max_to_delete is %s and messages to be deleted is %s\n' % (user, maxToDelete, del_count)
elif del_count > maxToProcess:
print u'WARNING: refusing to %s ANY messages for %s since max messages to process is %s and messages to be %s is %s\n' % (function, user, maxToProcess, action, del_count)
continue
i = 0
for del_me in listResult:
i += 1
print u' %s message %s for user %s (%s/%s)' % (trashOrDelete, del_me[u'id'], user, i, del_count)
callGAPI(service=gmail.users().messages(), function=trashOrDelete,
print u' %s message %s for user %s (%s/%s)' % (function, del_me[u'id'], user, i, del_count)
callGAPI(service=gmail.users().messages(), function=function,
id=del_me[u'id'], userId=u'me')
def doDeleteLabel(users):
@ -9478,10 +9481,16 @@ try:
sys.exit(2)
elif command == u'trash':
if sys.argv[4].lower() in [u'message', u'messages']:
doDeleteMessages(trashOrDelete=u'trash', users=users)
doProcessMessages(users, u'trash')
else:
print u'ERROR: %s is not a valid argument for "gam <users> trash"' % sys.argv[4]
sys.exit(2)
elif command == u'untrash':
if sys.argv[4].lower() in [u'message', u'messages']:
doProcessMessages(users, u'untrash')
else:
print u'ERROR: %s is not a valid argument for "gam <users> untrash"' % sys.argv[4]
sys.exit(2)
elif command == u'delete' or command == u'del':
delWhat = sys.argv[4].lower()
if delWhat == u'delegate':
@ -9491,7 +9500,7 @@ try:
elif delWhat == u'label':
doDeleteLabel(users)
elif delWhat in [u'message', u'messages']:
doDeleteMessages(trashOrDelete=u'delete', users=users)
doProcessMessages(users, u'delete')
elif delWhat == u'photo':
deletePhoto(users)
elif delWhat in [u'license', u'licence']: