You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.9 KiB

  1. # -*- encoding: utf-8 -*-
  2. ##############################################################################
  3. #
  4. # OpenERP, Open Source Management Solution
  5. # This module copyright (C) 2013 Therp BV (<http://therp.nl>)
  6. # All Rights Reserved
  7. #
  8. # This program is free software: you can redistribute it and/or modify
  9. # it under the terms of the GNU Affero General Public License as
  10. # published by the Free Software Foundation, either version 3 of the
  11. # License, or (at your option) any later version.
  12. #
  13. # This program is distributed in the hope that it will be useful,
  14. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. # GNU Affero General Public License for more details.
  17. #
  18. # You should have received a copy of the GNU Affero General Public License
  19. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  20. #
  21. ##############################################################################
  22. from .email_exact import email_exact
  23. class email_domain(email_exact):
  24. '''Search objects by domain name of email address.
  25. Beware of match_first here, this is most likely to get it wrong (gmail)'''
  26. name = 'Domain of email address'
  27. def search_matches(self, cr, uid, conf, mail_message, mail_message_org):
  28. ids = super(email_domain, self).search_matches(
  29. cr, uid, conf, mail_message, mail_message_org)
  30. if not ids:
  31. domains = []
  32. for addr in self._get_mailaddresses(conf, mail_message):
  33. domains.append(addr.split('@')[-1])
  34. ids = conf.pool.get(conf.model_id.model).search(
  35. cr, uid,
  36. self._get_mailaddress_search_domain(
  37. conf, mail_message,
  38. operator='like',
  39. values=['%@' + domain for domain in set(domains)]),
  40. order=conf.model_order)
  41. return ids