|
5 | 5 | from http_handler.settings import BASE_URL
|
6 | 6 | from schema.models import CredentialsModel
|
7 | 7 |
|
8 |
| -def untrash_message(service_mail, sender_addr, subject): |
| 8 | +def untrash_message(service_mail, sender_addr, subject, rejected=False, tags=[]): |
9 | 9 |
|
10 | 10 | messages = service_mail.users().messages()
|
11 | 11 |
|
12 |
| - query = 'subject:%s from:%s in:trash' % (subject.split(' ')[0], sender_addr) |
| 12 | + query = 'subject:%s from:%s in:trash' % (subject, sender_addr) |
13 | 13 | logging.debug("QUERY:", query)
|
14 | 14 | res1 = messages.list(userId='me', q=query).execute()
|
15 | 15 | logging.debug("res1:", res1)
|
16 | 16 | if res1['resultSizeEstimate'] == 0:
|
17 | 17 | logging.debug("no results")
|
18 | 18 | return 0
|
19 | 19 |
|
| 20 | + |
| 21 | + labelsToAdd = [] |
| 22 | + labelService = service_mail.users().labels() |
| 23 | + userLabels = labelService.list(userId='me').execute() |
| 24 | + allLabels = list(userLabels['labels']) |
| 25 | + |
| 26 | + for tag in tags: |
| 27 | + match = list(filter(lambda label: label["name"].lower() == tag.lower(), allLabels)) |
| 28 | + if len(match) == 0: |
| 29 | + label = {'name': tag} |
| 30 | + response = labelService.create(userId='me', body=label).execute() |
| 31 | + labelsToAdd.append(response['id']) |
| 32 | + else: |
| 33 | + labelsToAdd.append(match[0]['id']) |
| 34 | + |
20 | 35 | updated_count = 0
|
21 | 36 | for m in res1['messages']:
|
22 | 37 | gmail_msg_id = m['id']
|
23 | 38 | # res2 = messages.untrash(userId='me', id=gmail_msg_id).execute()
|
24 | 39 | # updated_count += 1
|
25 | 40 | # logging.debug("res2:", res2)
|
| 41 | + if 'SPAM' not in labelsToAdd and not rejected: |
| 42 | + labelsToAdd.append('INBOX') |
| 43 | + |
26 | 44 | new_labels = {
|
27 | 45 | 'removeLabelIds' : ['TRASH'],
|
28 |
| - 'addLabelIds' : ['INBOX'] |
| 46 | + 'addLabelIds' : labelsToAdd |
29 | 47 | }
|
30 | 48 | res3 = messages.modify(userId='me', id=gmail_msg_id, body=new_labels).execute()
|
31 | 49 | updated_count += 1
|
|
0 commit comments