Как создать ПОИСК НА САЙТЕ в [odoo12]

Я хочу создать поле поиска на веб-сайте в odoo, которое позволит мне искать имена клиентов, но я не знаю, как добавить для этого функцию. Можете ли вы пожалуйста, направьте меня к руководству, которое может помочь мне в создании моей функции поиска.

Я проверил модуль website_sale, попытался сделать то же самое, но ничего не вышло.

Вот код, который я поместил:

class Controllers(http.Controller):

    @api.multi
    def sale_product_domain(self):
        return self.get_current_website().website_domain()

    def _get_search_domain(self, search, attrib_values):
        domain = Controllers.sale_product_domain(self)
        if search:
            for srch in search.split(" "):
                domain += [
                    '|', '|', '|', ('name', 'ilike', srch), ('description', 'ilike', srch)]

        if attrib_values:
            attrib = None
            ids = []
            for value in attrib_values:
                if not attrib:
                    attrib = value[0]
                    ids.append(value[1])
                elif value[0] == attrib:
                    ids.append(value[1])
                else:
                    domain += [('attribute_line_ids.value_ids', 'in', ids)]
                    attrib = value[0]
                    ids = [value[1]]
            if attrib:
                domain += [('attribute_line_ids.value_ids', 'in', ids)]

        return domain
@http.route('/tabs', type='http', auth='public', website=True)
    def navigate_to_tabs(self, search='', ppg=False, **post):
        clients = http.request.env['res.partner'].sudo().search([])
        if ppg:
            try:
                ppg = int(ppg)
            except ValueError:
                ppg = PPG
            post["ppg"] = ppg
        else:
            ppg = PPG

        attrib_list = request.httprequest.args.getlist('attrib')
        attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if v]
        attributes_ids = {v[0] for v in attrib_values}
        attrib_set = {v[1] for v in attrib_values}

        domain = self._get_search_domain(search, attrib_values)

        keep = QueryURL('/tabs', search=search, attrib=attrib_list,
                        )

        url = "/tabs"
        if search:
            post["search"] = search
        if attrib_list:
            post['attrib'] = attrib_list

        Partner = request.env['res.partner']

        Category = request.env['product.public.category']
        search_categories = False
        if search:
            categories = Partner.search(domain).mapped('public_categ_ids')
            search_categories = Category.search(
                [('id', 'parent_of', categories.ids)] + request.website.website_domain())
            categs = search_categories.filtered(lambda c: not c.parent_id)
        else:
            categs = Category.search([('parent_id', '=', False)] + request.website.website_domain())

        parent_category_ids = []

        values = {
            'search': search,
            #'category': category,
            'attrib_values': attrib_values,
            'attrib_set': attrib_set,
            # 'search_count': product_count,  # common for all searchbox
            'rows': PPR,
            'categories': categs,
            'keep': keep,
            'parent_category_ids': parent_category_ids,
            'search_categories_ids': search_categories and search_categories.ids,
        }

        return http.request.render('site_web.s_tabs', {'clients' : clients})

person omas    schedule 23.04.2019    source источник


Ответы (1)


Я бы порекомендовал заглянуть в этот проект для справки по website_search:

https://github.com/OpenSur/Odoo_addons/tree/master/website_search

Поскольку он нацелен на предоставление универсального интерфейса поиска для страниц, сообщений в блогах, комментариев к сообщениям в блогах, клиентов, вакансий и продуктов. Я думаю, что это дает прочную основу для настройки в соответствии с вашими конкретными требованиями. Вы можете взять справку из этого модуля.

Я надеюсь, это поможет вам. Спасибо.

person Avani Somaiya    schedule 23.04.2019