Skip to content

Commit 06b240e

Browse files
committed
better gmail labels
1 parent a29e197 commit 06b240e

File tree

3 files changed

+36
-3
lines changed

3 files changed

+36
-3
lines changed

engine/main.py

+12
Original file line numberDiff line numberDiff line change
@@ -1562,6 +1562,18 @@ def update_post_status(user, group_name, post_id, new_status, explanation=None,
15621562

15631563
elif new_status == 'R':
15641564
reason = 'moderator rejected'
1565+
try:
1566+
mail_service = build_services(admin)['mail']
1567+
updated_count = untrash_message(mail_service, p.poster_email, p.subject, rejected=True, tags=tags.split(',') + ['rejected'])
1568+
if updated_count > 0:
1569+
logging.error("untrashed count: %s" % updated_count)
1570+
logging.debug(res)
1571+
return res
1572+
except Exception, e:
1573+
logging.error(e)
1574+
pass
1575+
1576+
15651577

15661578
tags = [t.tag.name for t in TagThread.objects.filter(thread = p.thread)]
15671579

gmail_setup/api.py

+21-3
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,45 @@
55
from http_handler.settings import BASE_URL
66
from schema.models import CredentialsModel
77

8-
def untrash_message(service_mail, sender_addr, subject):
8+
def untrash_message(service_mail, sender_addr, subject, rejected=False, tags=[]):
99

1010
messages = service_mail.users().messages()
1111

12-
query = 'subject:%s from:%s in:trash' % (subject.split(' ')[0], sender_addr)
12+
query = 'subject:%s from:%s in:trash' % (subject, sender_addr)
1313
logging.debug("QUERY:", query)
1414
res1 = messages.list(userId='me', q=query).execute()
1515
logging.debug("res1:", res1)
1616
if res1['resultSizeEstimate'] == 0:
1717
logging.debug("no results")
1818
return 0
1919

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+
2035
updated_count = 0
2136
for m in res1['messages']:
2237
gmail_msg_id = m['id']
2338
# res2 = messages.untrash(userId='me', id=gmail_msg_id).execute()
2439
# updated_count += 1
2540
# logging.debug("res2:", res2)
41+
if 'SPAM' not in labelsToAdd and not rejected:
42+
labelsToAdd.append('INBOX')
43+
2644
new_labels = {
2745
'removeLabelIds' : ['TRASH'],
28-
'addLabelIds' : ['INBOX']
46+
'addLabelIds' : labelsToAdd
2947
}
3048
res3 = messages.modify(userId='me', id=gmail_msg_id, body=new_labels).execute()
3149
updated_count += 1

gmail_setup/views.py

+3
Original file line numberDiff line numberDiff line change
@@ -86,12 +86,15 @@ def auth(request):
8686
d = json.load(json_data)
8787
print "DATA:", d
8888

89+
print "creating flow"
8990
FLOW = flow_from_clientsecrets(
9091
CLIENT_SECRETS,
9192
scope='https://www.googleapis.com/auth/contacts.readonly https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/gmail.settings.basic https://www.googleapis.com/auth/gmail.modify',
9293
redirect_uri=REDIRECT_URI
9394
)
9495

96+
print "got flow"
97+
9598
FLOW.params['access_type'] = 'offline'
9699

97100
user = request.user

0 commit comments

Comments
 (0)