diff options
Diffstat (limited to 'service/pixelated/adapter/search/contacts.py')
-rw-r--r-- | service/pixelated/adapter/search/contacts.py | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/service/pixelated/adapter/search/contacts.py b/service/pixelated/adapter/search/contacts.py index afef6ad0..0dfeb15b 100644 --- a/service/pixelated/adapter/search/contacts.py +++ b/service/pixelated/adapter/search/contacts.py @@ -31,14 +31,21 @@ def address_duplication_filter(contacts): return contacts_by_mail.values() +def bounced_addresses_filter(searcher, contacts): + query = QueryParser('bounced', searcher.schema).parse('*') + bounced_addresses = searcher.search(query, + limit=None, + groupedby=sorting.FieldFacet('bounced', + allow_overlap=True)).groups() + return set(contacts) - set(flatten([bounced_addresses])) + + def extract_mail_address(text): return parseaddr(text)[1] def contacts_suggestions(query, searcher): - if query: - return address_duplication_filter(search_addresses(searcher, query)) - return [] + return address_duplication_filter(bounced_addresses_filter(searcher, search_addresses(searcher, query))) if query else [] def search_addresses(searcher, query): |