add date__on to query and some other improvments
This commit is contained in:
@@ -56,6 +56,9 @@ Usage
|
||||
# Messages received after specific date
|
||||
messages_from = imbox.messages(date__gt=datetime.date(2013, 7, 30))
|
||||
|
||||
# Messages received on a specific date
|
||||
messages_from = imbox.messages(date__on=datetime.date(2013, 7, 30))
|
||||
|
||||
# Messages from a specific folder
|
||||
messages_folder = imbox.messages(folder='Social')
|
||||
|
||||
|
||||
@@ -4,13 +4,12 @@ import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
IMAP_MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
|
||||
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
|
||||
|
||||
|
||||
def format_date(date):
|
||||
|
||||
return "%s-%s-%s" % (date.day, IMAP_MONTHS[date.month - 1], date.year)
|
||||
if isinstance(date, datetime.date):
|
||||
return date.strftime('%d-%b-%Y')
|
||||
else:
|
||||
return date
|
||||
|
||||
|
||||
def build_search_query(**kwargs):
|
||||
@@ -22,11 +21,8 @@ def build_search_query(**kwargs):
|
||||
sent_from = kwargs.get('sent_from', False)
|
||||
sent_to = kwargs.get('sent_to', False)
|
||||
date__gt = kwargs.get('date__gt', False)
|
||||
if type(date__gt) is datetime.date:
|
||||
date__gt = format_date(date__gt)
|
||||
date__lt = kwargs.get('date__lt', False)
|
||||
if type(date__lt) is datetime.date:
|
||||
date__lt = format_date(date__lt)
|
||||
date__on = kwargs.get('date__on', False)
|
||||
subject = kwargs.get('subject')
|
||||
|
||||
query = []
|
||||
@@ -47,10 +43,13 @@ def build_search_query(**kwargs):
|
||||
query.append('(TO "%s")' % sent_to)
|
||||
|
||||
if date__gt:
|
||||
query.append('(SINCE "%s")' % date__gt)
|
||||
query.append('(SINCE "%s")' % format_date(date__gt))
|
||||
|
||||
if date__lt:
|
||||
query.append('(BEFORE "%s")' % date__lt)
|
||||
query.append('(BEFORE "%s")' % format_date(date__lt))
|
||||
|
||||
if date__on:
|
||||
query.append('(ON "%s")' % format_date(date__on))
|
||||
|
||||
if subject is not None:
|
||||
query.append('(SUBJECT "%s")' % subject)
|
||||
|
||||
@@ -28,19 +28,23 @@ class TestQuery(unittest.TestCase):
|
||||
def test_sent_from(self):
|
||||
|
||||
res = build_search_query(sent_from='test@example.com')
|
||||
self.assertEqual(res, "(FROM \"test@example.com\")")
|
||||
self.assertEqual(res, '(FROM "test@example.com")')
|
||||
|
||||
def test_sent_to(self):
|
||||
|
||||
res = build_search_query(sent_to='test@example.com')
|
||||
self.assertEqual(res, "(TO \"test@example.com\")")
|
||||
self.assertEqual(res, '(TO "test@example.com")')
|
||||
|
||||
def test_date__gt(self):
|
||||
|
||||
res = build_search_query(date__gt=date(2014, 12, 31))
|
||||
self.assertEqual(res, "(SINCE \"31-Dec-2014\")")
|
||||
self.assertEqual(res, '(SINCE "31-Dec-2014")')
|
||||
|
||||
def test_date__lt(self):
|
||||
|
||||
res = build_search_query(date__lt=date(2014, 1, 1))
|
||||
self.assertEqual(res, "(BEFORE \"1-Jan-2014\")")
|
||||
self.assertEqual(res, '(BEFORE "01-Jan-2014")')
|
||||
|
||||
def test_date__on(self):
|
||||
res = build_search_query(date__on=date(2014, 1, 1))
|
||||
self.assertEqual(res, '(ON "01-Jan-2014")')
|
||||
|
||||
Reference in New Issue
Block a user