Templates 搜索筛选器在网站Odoo 12中不起作用
我正在尝试为网站(门户)用户添加诸如groupby、排序和搜索选项之类的过滤器,但这些都不能正常工作。以下是我的控制器方法:Templates 搜索筛选器在网站Odoo 12中不起作用,templates,controller,odoo,portal,odoo-12,Templates,Controller,Odoo,Portal,Odoo 12,我正在尝试为网站(门户)用户添加诸如groupby、排序和搜索选项之类的过滤器,但这些都不能正常工作。以下是我的控制器方法: @http.route(['/my/tickets', '/my/tickets/page/<int:page>'], type='http', auth="user", website=True) def portal_my_ticket(self, page=1, date_begin=None, date_end=None, sortby=None, f
@http.route(['/my/tickets', '/my/tickets/page/<int:page>'], type='http', auth="user", website=True)
def portal_my_ticket(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, search=None,
search_in='content', **kw):
response = super(CustomerPortal, self)
values = self._prepare_portal_layout_values()
partner = request.env.user.partner_id
support_obj = http.request.env['helpdesk.custom']
domain = []
# count for pager
ticket_count = support_obj.sudo().search_count(domain)
# pager
pager = request.website.pager(
url="/my/tickets",
total=ticket_count,
page=page,
step=self._items_per_page
)
searchbar_sortings = {
'date': {'label': _('Newest'), 'order': 'create_date desc'},
'name': {'label': _('Title'), 'order': 'subject'},
'stage': {'label': _('Stage'), 'order': 'stage_id'},
}
searchbar_filters = {
'all': {'label': _('All'), 'domain': []},
}
searchbar_inputs = {
'content': {'input': 'content', 'label': _('Search <span class="nolabel"> (in Content)</span>')},
'message': {'input': 'message', 'label': _('Search in Messages')},
'customer': {'input': 'customer', 'label': _('Search in Customer')},
'stage': {'input': 'stage', 'label': _('Search in Stages')},
'all': {'input': 'all', 'label': _('Search in All')},
}
# default sort by value
if not sortby:
sortby = 'date'
order = searchbar_sortings[sortby]['order']
# default filter by value
if not filterby:
filterby = 'all'
domain += searchbar_filters[filterby]['domain']
# archive groups - Default Group By 'create_date'
if date_begin and date_end:
domain += [('create_date', '>', date_begin), ('create_date', '<=', date_end)]
# search
if search and search_in:
search_domain = []
if search_in in ('content', 'all'):
search_domain = OR([search_domain, ['|', ('name', 'ilike', search), ('description', 'ilike', search)]])
if search_in in ('customer', 'all'):
search_domain = OR([search_domain, [('partner_id', 'ilike', search)]])
if search_in in ('message', 'all'):
search_domain = OR([search_domain, [('message_ids.body', 'ilike', search)]])
if search_in in ('stage', 'all'):
search_domain = OR([search_domain, [('stage_id', 'ilike', search)]])
domain += search_domain
if request.session.uid and request.env['res.users'].browse(request.session.uid).user_has_groups(
'base.group_portal'):
# content according to pager and archive selected
tickets = support_obj.sudo().search([('partner_id', '=', partner.id)])
else:
tickets = support_obj.sudo().search([])
print("tickets",tickets)
values.update({
'tickets': tickets.sudo(),
'page_name': 'ticket_page',
'pager': pager,
'default_url': '/my/tickets',
'searchbar_sortings': searchbar_sortings,
'searchbar_inputs': searchbar_inputs,
'search_in': search_in,
'sortby': sortby,
'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())),
'filterby': filterby,
})
return request.render("website_helpdesk_support_ticket.display_tickets", values)
@http.route(['/my/tickets','/my/tickets/page/'],type='http',auth='user',website=True)
def portal_my_ticket(self,page=1,date_begin=None,date_end=None,sortby=None,filterby=None,search=None,
在class='content',**kw中搜索:
响应=超级(CustomerPortal、self)
值=自身。\准备\门户\布局\值()
partner=request.env.user.partner\u id
support_obj=http.request.env['helpdesk.custom']
域=[]
#寻呼机计数
票证计数=支持对象sudo().搜索计数(域)
#传呼机
寻呼机=request.website.pager(
url=“/my/tickets”,
总计=车票数量,
第页,
步骤=每页的自我项目
)
搜索栏\排序={
“日期”:{“标签”:(“最新”),“订单”:“创建日期说明”},
'name':{'label':(('Title'),'order':'subject'},
'stage':{'label':(('stage'),'order':'stage_id'},
}
搜索栏\u过滤器={
'all':{'label':(('all'),'domain':[]},
}
搜索栏输入={
'content':{'input':'content','label':(('Search(in content)')},
'message':{'input':'message','label':(('Search in Messages')},
'customer':{'input':'customer','label':(('Search in customer')},
'stage':{'input':'stage','label':(('Search in Stages')},
'all':{'input':'all','label':(('Search in all')},
}
#默认按值排序
如果不是这样:
sortby='date'
订单=搜索栏\u排序[排序]['order']
#默认按值筛选
如果未通过过滤:
filterby='all'
域+=搜索栏_过滤器[filterby]['domain']
#存档组-按“创建\u日期”设置的默认组
如果开始日期和结束日期:
域+=[('create_date','>',date_begin),('create_date',“您能用当前输出和预期输出或任何追溯更新您的问题吗?您好@BhaveshOdedra,我已经用添加的描述更新了我的问题。