From 1ed3cb37b016e806a6381922eb331d7c4a0b004b Mon Sep 17 00:00:00 2001 From: jem-odoo Date: Fri, 25 Jan 2019 12:43:44 +0000 Subject: [PATCH] [IMP] website_slides: provide search bar on channel Visitor are now able to search a channel, based on the name or description with a search bar on the channel list page. Task-1902304 --- addons/website_slides/controllers/main.py | 12 ++++++++-- .../views/website_slides_templates.xml | 24 +++++++++++++++++-- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/addons/website_slides/controllers/main.py b/addons/website_slides/controllers/main.py index d09d0e9020b..80048dbaabd 100644 --- a/addons/website_slides/controllers/main.py +++ b/addons/website_slides/controllers/main.py @@ -8,6 +8,8 @@ import werkzeug from odoo import http, _ from odoo.exceptions import AccessError, UserError from odoo.http import request +from odoo.osv import expression + from odoo.addons.http_routing.models.ir_http import slug from odoo.addons.website.models.ir_http import sitemap_qs2dom @@ -67,15 +69,21 @@ class WebsiteSlides(http.Controller): redirects directly to its slides """ domain = request.website.website_domain() + # search bar + search_term = post.get('search') + if search_term: + domain = expression.AND([domain, ['|', ('name', 'ilike', search_term), ('description', 'ilike', search_term)]]) + channels = request.env['slide.channel'].search(domain, order='sequence, id') if not channels: - return request.render("website_slides.channel_not_found") - elif len(channels) == 1: + return request.render("website_slides.channel_not_found", {'search_term': search_term}) + elif len(channels) == 1 and not search_term: # don't auto redirect to only result when searching return request.redirect("/slides/%s" % channels.id) return request.render('website_slides.channels', { 'channels': channels, 'user': request.env.user, 'is_public_user': request.website.is_public_user(), + 'search_term': search_term, }) @http.route([ diff --git a/addons/website_slides/views/website_slides_templates.xml b/addons/website_slides/views/website_slides_templates.xml index 129ce77f965..c82edef5eaa 100644 --- a/addons/website_slides/views/website_slides_templates.xml +++ b/addons/website_slides/views/website_slides_templates.xml @@ -16,7 +16,22 @@