mirror of
https://github.com/GAM-team/GAM.git
synced 2025-07-08 21:53:36 +00:00
gam <UserTypeEntity> untrash message|messages query <Query> [doit] [max_to_untrash <Number>]
This commit is contained in:
33
src/gam.py
33
src/gam.py
@ -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']:
|
||||
|
Reference in New Issue
Block a user