add date__on to query and some other improvments

This commit is contained in:
Ivan Pereira
2017-11-30 21:26:09 +00:00
parent 6c11c759c0
commit fe965e7d19
3 changed files with 21 additions and 15 deletions

View File

@@ -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')

View File

@@ -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)

View File

@@ -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")')