From 1cc8252a953ba6adeeb5dead2c82b336cd51c9db Mon Sep 17 00:00:00 2001 From: Vipul Bhatt Date: Tue, 21 Jun 2016 16:10:00 +0530 Subject: [PATCH] [IMP] website_*: generic filter and sort mecanism for portal documents website portal now provide mecanism to sort and filter the paginated document on the portal pages. All portal module now use this mecanism, like they do for 'archive document' and 'pager'. A generic template was added in website_portal. To use it, renaming variables in method controller was required to make it as generic as possible. Some style cleaning was also done to make portal pages consistent. --- .../controllers/main.py | 47 ++++++++------ .../website_crm_partner_assign_templates.xml | 47 +++----------- .../views/website_portal_templates.xml | 44 +++++++++++++ .../website_portal_sale/controllers/main.py | 56 ++++++++++++++--- .../views/website_portal_sale_templates.xml | 17 +++++- addons/website_project/controllers/main.py | 61 +++++++++++-------- .../views/project_templates.xml | 39 ++---------- .../website_project_issue/controllers/main.py | 45 ++++++++------ .../views/project_issue_templates.xml | 27 +------- .../views/website_quote_templates.xml | 1 + 10 files changed, 208 insertions(+), 176 deletions(-) diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index 6f24f911257..301e5f3b29a 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -39,18 +39,21 @@ class WebsiteAccount(website_account): return response @http.route(['/my/leads', '/my/leads/page/'], type='http', auth="user", website=True) - def portal_my_leads(self, page=1, date_begin=None, date_end=None, lead=None, sortby=None, **kw): + def portal_my_leads(self, page=1, date_begin=None, date_end=None, sortby=None, **kw): values = self._prepare_portal_layout_values() CrmLead = request.env['crm.lead'] domain = self.get_domain_my_lead(request.env.user) - sortings = { + searchbar_sortings = { 'date': {'label': _('Newest'), 'order': 'create_date desc'}, 'name': {'label': _('Name'), 'order': 'name'}, 'contact_name': {'label': _('Contact Name'), 'order': 'contact_name'}, } - order = sortings.get(sortby, sortings['date'])['order'] + # default sort by value + if not sortby: + sortby = 'date' + order = searchbar_sortings[sortby]['order'] # archive groups - Default Group By 'create_date' archive_groups = self._get_archive_groups('crm.lead', domain) @@ -60,7 +63,7 @@ class WebsiteAccount(website_account): lead_count = CrmLead.search_count(domain) pager = request.website.pager( url="/my/leads", - url_args={'date_begin': date_begin, 'date_end': date_end, 'sortby': sortby, 'lead': lead}, + url_args={'date_begin': date_begin, 'date_end': date_end, 'sortby': sortby}, total=lead_count, page=page, step=self._items_per_page @@ -72,17 +75,16 @@ class WebsiteAccount(website_account): 'date': date_begin, 'leads': leads, 'page_name': 'lead', - 'lead': lead, - 'sortings': sortings, - 'sortby': sortby, 'archive_groups': archive_groups, 'default_url': '/my/leads', - 'pager': pager + 'pager': pager, + 'searchbar_sortings': searchbar_sortings, + 'sortby': sortby, }) return request.render("website_crm_partner_assign.portal_my_leads", values) @http.route(['/my/opportunities', '/my/opportunities/page/'], type='http', auth="user", website=True) - def portal_my_opportunities(self, page=1, date_begin=None, date_end=None, opportunity=None, sortby=None, **kw): + def portal_my_opportunities(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, **kw): values = self._prepare_portal_layout_values() CrmLead = request.env['crm.lead'] domain = self.get_domain_my_opp(request.env.user) @@ -90,7 +92,7 @@ class WebsiteAccount(website_account): today = fields.Date.today() this_week_end_date = fields.Date.to_string(fields.Date.from_string(today) + datetime.timedelta(days=7)) - filters = { + searchbar_filters = { 'all': {'label': _('All'), 'domain': []}, 'today': {'label': _('Today Activities'), 'domain': [('date_action', '=', today)]}, 'week': {'label': _('This Week Activities'), @@ -99,8 +101,7 @@ class WebsiteAccount(website_account): 'won': {'label': _('Won'), 'domain': [('stage_id.probability', '=', 100), ('stage_id.fold', '=', True)]}, 'lost': {'label': _('Lost'), 'domain': [('active', '=', False)]}, } - - sortings = { + searchbar_sortings = { 'date': {'label': _('Newest'), 'order': 'create_date desc'}, 'name': {'label': _('Name'), 'order': 'name'}, 'contact_name': {'label': _('Contact Name'), 'order': 'contact_name'}, @@ -109,8 +110,14 @@ class WebsiteAccount(website_account): 'stage': {'label': _('Stage'), 'order': 'stage_id'}, } - domain += filters.get(opportunity, filters['all'])['domain'] - order = sortings.get(sortby, sortings['date'])['order'] + # 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' archive_groups = self._get_archive_groups('crm.lead', domain) @@ -120,7 +127,7 @@ class WebsiteAccount(website_account): opp_count = CrmLead.search_count(domain) pager = request.website.pager( url="/my/opportunities", - url_args={'date_begin': date_begin, 'date_end': date_end, 'sortby': sortby, 'opportunity': opportunity}, + url_args={'date_begin': date_begin, 'date_end': date_end, 'sortby': sortby, 'filterby': filterby}, total=opp_count, page=page, step=self._items_per_page @@ -132,13 +139,13 @@ class WebsiteAccount(website_account): 'date': date_begin, 'opportunities': opportunities, 'page_name': 'opportunity', - 'filters': OrderedDict(sorted(filters.items())), - 'opportunity': opportunity, - 'sortings': sortings, - 'sortby': sortby, 'archive_groups': archive_groups, 'default_url': '/my/opportunities', - 'pager': pager + 'pager': pager, + 'searchbar_sortings': searchbar_sortings, + 'sortby': sortby, + 'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())), + 'filterby': filterby, }) return request.render("website_crm_partner_assign.portal_my_opportunities", values) diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml index 217b7c40c49..6fdc02eba2f 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign_templates.xml @@ -240,17 +240,7 @@