summaryrefslogtreecommitdiff
path: root/service/pixelated/adapter/soledad_querier.py
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-10-21 13:44:52 +0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-10-21 13:44:52 +0200
commitd50d93eb2aa43f8bedf3e1b1bca33777d5dc6d82 (patch)
treea57cccb39478416e654e719bc74a099e8ef529f9 /service/pixelated/adapter/soledad_querier.py
parent57a6d609de6423a6d71abdcb063adcab0803bee1 (diff)
#117 - waiting for soledad sync to be done before indexing mails. Also, removing inbox duplicates
Diffstat (limited to 'service/pixelated/adapter/soledad_querier.py')
-rw-r--r--service/pixelated/adapter/soledad_querier.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/service/pixelated/adapter/soledad_querier.py b/service/pixelated/adapter/soledad_querier.py
index 42af6d2b..3aab46df 100644
--- a/service/pixelated/adapter/soledad_querier.py
+++ b/service/pixelated/adapter/soledad_querier.py
@@ -21,6 +21,12 @@ class SoledadQuerier:
def __init__(self, soledad):
self.soledad = soledad
+ def remove_inbox_duplicates(self):
+ inboxes = [d for d in self.soledad.get_from_index('by-type', 'mbox') if d.content['mbox'] == 'INBOX']
+ sorted(inboxes, key=lambda x: x.content['lastuid'], reverse=True)
+ inboxes_to_remove = inboxes[1:len(inboxes)]
+ [self.soledad.delete_doc(inbox) for inbox in inboxes_to_remove]
+
def all_mails(self):
fdocs_chash = [(fdoc, fdoc.content['chash']) for fdoc in self.soledad.get_from_index('by-type', 'flags')]
if len(fdocs_chash) == 0:
@@ -60,6 +66,7 @@ class SoledadQuerier:
return PixelatedMail.from_soledad(fdoc, hdoc, bdoc, soledad_querier=self)
def mails(self, idents):
+ self.remove_inbox_duplicates()
fdocs_chash = [(self.soledad.get_from_index('by-type-and-contenthash', 'flags', ident), ident) for ident in idents]
fdocs_chash = [(result[0], ident) for result, ident in fdocs_chash if result]
return self._build_mails_from_fdocs(fdocs_chash)