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.

59 lines
2.2 KiB

  1. # -*- encoding: utf-8 -*-
  2. ##############################################################################
  3. #
  4. # OpenERP, Open Source Management Solution
  5. # This module copyright (C) 2013 Savoir-faire Linux
  6. # (<http://www.savoirfairelinux.com>).
  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 openerp.osv import orm, fields
  23. class res_partner_category(orm.Model):
  24. """
  25. Inherits partner_category
  26. """
  27. _inherit = 'res.partner.category'
  28. _columns = {
  29. 'category_function_ids': fields.one2many(
  30. 'res.partner.category.function',
  31. 'category_id',
  32. 'Functions'
  33. ),
  34. }
  35. def name_search(self, cr, user, name='', args=None, operator='ilike',
  36. context=None, limit=100):
  37. if not args:
  38. args = []
  39. if not context:
  40. context = {}
  41. if name:
  42. name = name.split(' / ')[-1]
  43. ids = self.search(cr, user, [('name', operator, name)] + args,
  44. limit=limit, context=context)
  45. if ids:
  46. child_ids = self.search(
  47. cr, user, [('parent_id', 'child_of', ids)],
  48. limit=limit, context=context)
  49. if child_ids:
  50. ids.extend(child_ids)
  51. # Remove duplicates and respect limit
  52. ids = list(set(ids))[:limit]
  53. else:
  54. ids = self.search(cr, user, args, limit=limit, context=context)
  55. return self.name_get(cr, user, ids, context)