diff options
author | Filipp Lepalaan <filipp@mac.com> | 2015-10-26 15:50:32 +0200 |
---|---|---|
committer | Filipp Lepalaan <filipp@mac.com> | 2015-10-26 15:50:32 +0200 |
commit | 052f2a44c8b1d809060c1d9501d31f71e8ef79e8 (patch) | |
tree | 0521d6842f5d2e22d5894ceaf8e4029e25981416 /servo/tasks.py | |
parent | b6a1e83259204d0c321391ffddb0f3fd6c2f207d (diff) | |
download | Servo-052f2a44c8b1d809060c1d9501d31f71e8ef79e8.tar.gz Servo-052f2a44c8b1d809060c1d9501d31f71e8ef79e8.tar.bz2 Servo-052f2a44c8b1d809060c1d9501d31f71e8ef79e8.zip |
Added check_mail task
Diffstat (limited to 'servo/tasks.py')
-rw-r--r-- | servo/tasks.py | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/servo/tasks.py b/servo/tasks.py index 0bc8d00..9520db8 100644 --- a/servo/tasks.py +++ b/servo/tasks.py @@ -2,12 +2,15 @@ from __future__ import absolute_import +from email.parser import Parser + from celery import shared_task from django.conf import settings from django.core.cache import cache -from servo.models import Order, Note, Template +from servo.lib.utils import empty +from servo.models import Configuration, User, Order, Note, Template def get_rules(): @@ -137,3 +140,29 @@ def batch_process(user, data): return '%d/%d orders processed' % (processed, len(orders)) + +@shared_task +def check_mail(): + """ + Checks IMAP box for incoming mail + """ + uid = Configuration.conf('imap_act') + + if empty(uid): + raise ValueError('Incoming message user not configured') + + user = User.objects.get(pk=uid) + server = Configuration.get_imap_server() + typ, data = server.search(None, "UnSeen") + + for num in data[0].split(): + #logging.debug("** Processing message %s" % num) + typ, data = server.fetch(num, "(RFC822)") + # parsestr() seems to return an email.message? + msg = Parser().parsestr(data[0][1]) + Note.from_email(msg, user) + #server.copy(num, 'servo') + server.store(num, '+FLAGS', '\\Seen') + + server.close() + server.logout() |