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