aboutsummaryrefslogtreecommitdiffstats
path: root/servo/tasks.py
diff options
context:
space:
mode:
authorFilipp Lepalaan <filipp@mac.com>2015-10-26 15:50:32 +0200
committerFilipp Lepalaan <filipp@mac.com>2015-10-26 15:50:32 +0200
commit052f2a44c8b1d809060c1d9501d31f71e8ef79e8 (patch)
tree0521d6842f5d2e22d5894ceaf8e4029e25981416 /servo/tasks.py
parentb6a1e83259204d0c321391ffddb0f3fd6c2f207d (diff)
downloadServo-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.py31
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()