From c82f6f7ef6493de936683a5ff6ee4a1175f39e82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 7 Oct 2013 16:55:16 +0200 Subject: [PATCH] [REF] website_crm_partner_assign: cleaning and improvements Improved website_crm_partner_assign module to look more like the current patners page of openerp.com. Some cleaning in controllers that were quite obfuscated. bzr revid: tde@openerp.com-20131007145516-0dziszwy0pfg1yje --- .../website_crm_partner_assign/__openerp__.py | 9 +- .../controllers/main.py | 123 +++++++++--------- .../views/website_crm_partner_assign.xml | 113 +++++++--------- 3 files changed, 110 insertions(+), 135 deletions(-) diff --git a/addons/website_crm_partner_assign/__openerp__.py b/addons/website_crm_partner_assign/__openerp__.py index 01d7e5f63d9..75a3aa39776 100644 --- a/addons/website_crm_partner_assign/__openerp__.py +++ b/addons/website_crm_partner_assign/__openerp__.py @@ -1,12 +1,11 @@ { - 'name': 'Public Partners References', + 'name': 'Publish Partner Assignment', 'category': 'Website', - 'summary': 'Publish Customer References', + 'summary': 'Publish and Assign Partner', 'version': '1.0', 'description': """ -OpenERP Public Partners References -================================== - +Publish and Assign Partner +========================== """, 'author': 'OpenERP SA', 'depends': ['website_partner', 'website_google_map'], diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index e1a23ebb2e2..b8c7527141e 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -1,82 +1,87 @@ # -*- coding: utf-8 -*- +import urllib + import openerp from openerp.addons.web import http from openerp.tools.translate import _ from openerp.addons.web.http import request from openerp.addons.website.models import website -import urllib -class website_crm_partner_assign(http.Controller): - @website.route(['/partners/', '/partners/page//'], type='http', auth="public", multilang=True) - def partners(self, page=0, **post): +class WebsiteCrmPartnerAssign(http.Controller): + _references_per_page = 20 + + @website.route([ + '/partners/', '/partners/page//', + '/partners/country/', '/partners/country/page//', + ], type='http', auth="public", multilang=True) + def partners(self, country_id=None, page=0, **post): + country_obj = request.registry['res.country'] partner_obj = request.registry['res.partner'] + post_name = post.get('search', '') + grade_id = post.get('grade_id', '') + country = None - def dom_without(without): - domain = [('grade_id', '!=', False)] - domain += openerp.SUPERUSER_ID != request.uid and [('website_published', '=', True)] or [(1, "=", 1)] - for key, search in domain_search.items(): - if key != without: - domain += search - return domain + # format displayed membership lines domain + base_partner_domain = [('is_company', '=', True)] + if request.context['is_public_user']: + base_partner_domain += [('website_published', '=', True)] + partner_domain = list(base_partner_domain) + if grade_id: + partner_domain += [('grade_id', '=', grade_id)] # try/catch int + if country_id: + country = country_obj.browse(request.cr, request.uid, country_id, request.context) + partner_domain += [('country_id', '=', country_id)] + if post_name: + partner_domain += ['|', ('name', 'ilike', "%%%s%%" % post_name), ('website_description', 'ilike', "%%%s%%" % post_name)] - # search domains - domain_search = {} - if post.get('search'): - domain_search["search"] += ['|', - ('name', 'ilike', "%%%s%%" % post.get("search")), - ('website_description', 'ilike', "%%%s%%" % post.get("search"))] - if post.get("grade", "all") != 'all': - domain_search["grade"] = [("grade_id", "=", int(post.get("grade")))] - if post.get("country", "all") != 'all': - domain_search["country"] = [("country_id", "=", int(post.get("country")))] - - # public partner profile + # format pager partner_ids = partner_obj.search( - request.cr, openerp.SUPERUSER_ID, dom_without(False), + request.cr, openerp.SUPERUSER_ID, partner_domain, context=request.context) + pager = request.website.pager(url="/partners/", total=len(partner_ids), page=page, step=self._references_per_page, scope=7, url_args=post) + + # search for partners to display + partner_ids = partner_obj.search( + request.cr, openerp.SUPERUSER_ID, partner_domain, + context=request.context, + limit=self._references_per_page, offset=pager['offset'], + order="grade_id ASC,partner_weight DESC") google_map_partner_ids = ",".join([str(p) for p in partner_ids]) + partners = partner_obj.browse( + request.cr, openerp.SUPERUSER_ID, partner_ids, request.context) # group by country - domain = dom_without("country") countries = partner_obj.read_group( - request.cr, request.uid, domain, ["id", "country_id"], + request.cr, request.uid, base_partner_domain, ["id", "country_id"], groupby="country_id", orderby="country_id", context=request.context) - - partners = partner_obj.search(request.cr, request.uid, domain, - context=request.context, count=True) + countries_partners = partner_obj.search( + request.cr, request.uid, base_partner_domain, + context=request.context, count=True) countries.insert(0, { - 'country_id_count': partners, - 'country_id': ("all", _("All Countries")) + 'country_id_count': countries_partners, + 'country_id': ('0', _("All Countries")) }) # group by grade - domain = dom_without("grade") grades = partner_obj.read_group( - request.cr, request.uid, domain, ["id", "grade_id"], + request.cr, request.uid, base_partner_domain, ["id", "grade_id"], groupby="grade_id", orderby="grade_id", context=request.context) - - grade_id_count = partner_obj.search(request.cr, request.uid, domain, - count=True, context=request.context) + grades_partners = partner_obj.search( + request.cr, request.uid, base_partner_domain, + context=request.context, count=True) grades.insert(0, { - 'grade_id_count': grade_id_count, - 'grade_id': ("all", _("All Grade")) + 'grade_id_count': grades_partners, + 'grade_id': ("all", _("All Grades")) }) - step = 20 - pager = request.website.pager(url="/partners/", total=len(partner_ids), page=page, step=step, scope=7, url_args=post) - partner_ids = partner_obj.search( - request.cr, openerp.SUPERUSER_ID, [('id', 'in', partner_ids)], - context=request.context, limit=step, offset=pager['offset'], - order="grade_id ASC,partner_weight DESC") - partners = partner_obj.browse(request.cr, openerp.SUPERUSER_ID, - partner_ids, request.context) - values = { 'countries': countries, + 'country': country, 'grades': grades, - 'partner_ids': partners, + 'grade_id': grade_id, + 'partners': partners, 'google_map_partner_ids': google_map_partner_ids, 'pager': pager, 'searches': post, @@ -84,23 +89,19 @@ class website_crm_partner_assign(http.Controller): } return request.website.render("website_crm_partner_assign.index", values) - @website.route(['/partners//'], type='http', auth="public", multilang=True) - def partners_ref(self, ref_id=0, **post): + @website.route(['/partners//'], type='http', auth="public", multilang=True) + def partners_ref(self, partner_id=0, **post): partner_obj = request.registry['res.partner'] - partner_ids = partner_obj.search( - request.cr, openerp.SUPERUSER_ID, - [('website_published', '=', True), ('id', '=', ref_id)], - context=request.context) - - if not request.context['is_public_user']: - partner_ids += partner_obj.search( - request.cr, request.uid, [('id', '=', ref_id)], - context=request.context) + if request.context['is_public_user']: + partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_pushished', '=', True), ('id', '=', partner_id)], context=request.context) + else: + partner_ids = partner_obj.search(request.cr, request.uid, [('id', '=', partner_id)], context=request.context) + if not partner_ids: + return self.members(post) values = { 'partner_id': partner_obj.browse( request.cr, openerp.SUPERUSER_ID, partner_ids[0], context=dict(request.context, show_address=True)), } - - return request.website.render("website_crm_partner_assign.details", values) + return request.website.render("website_crm_partner_assign.partner", values) diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml index d26257cda4f..1a3b46021d7 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml @@ -4,7 +4,6 @@ - - -