Я хочу создать поле поиска на веб-сайте в 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})