diff options
Diffstat (limited to 'servo/tasks.py')
-rw-r--r-- | servo/tasks.py | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/servo/tasks.py b/servo/tasks.py index bc5bf77..1d55136 100644 --- a/servo/tasks.py +++ b/servo/tasks.py @@ -1,10 +1,7 @@ # -*- coding: utf-8 -*- - -from __future__ import absolute_import - -from email.parser import Parser - -from celery import shared_task +import email +import logging +from email.parser import BytesParser from django.conf import settings from django.core.cache import cache @@ -32,7 +29,6 @@ def get_rules(): return rules -@shared_task def apply_rules(event): """ Applies configured rules @@ -100,7 +96,6 @@ def apply_rules(event): return '%d/%d rules processed' % (counter, len(rules)) -@shared_task def batch_process(user, data): """ /orders/batch @@ -161,24 +156,26 @@ def batch_process(user, data): return '%d/%d orders processed' % (processed, len(orders)) -@shared_task def check_mail(): - """Checks IMAP box for incoming mail""" + """ + Checks IMAP box for incoming mail + """ uid = Configuration.conf('imap_act') if empty(uid): - raise ConfigurationError('Incoming message user not configured') + err = 'User account for incoming messages not configured' + raise ConfigurationError(err) counter = 0 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]) + msg = BytesParser().parsebytes(data[0][1]) Note.from_email(msg, user) #server.copy(num, 'servo') server.store(num, '+FLAGS', '\\Seen') @@ -188,3 +185,4 @@ def check_mail(): server.logout() return '%d messages processed' % counter + |