summaryrefslogtreecommitdiff
path: root/addons/website_customer/controllers/main.py
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2014-05-20 20:19:55 +0200
committerChristophe Simonis <chs@odoo.com>2014-05-20 20:19:55 +0200
commita756b823727b763310fb7d1a24c594f3d78cffe5 (patch)
treeaa1129993cf924c683df1c76d8d862b86a4f3dab /addons/website_customer/controllers/main.py
parent040c93026ade694e792f4b291ddc58204f8574ac (diff)
parentbb26dea60be37823a9a5b14e96ebdbde268c229e (diff)
[MERGE] forward port of branch saas-4 up to revid bb26dea
Diffstat (limited to 'addons/website_customer/controllers/main.py')
-rw-r--r--addons/website_customer/controllers/main.py61
1 files changed, 24 insertions, 37 deletions
diff --git a/addons/website_customer/controllers/main.py b/addons/website_customer/controllers/main.py
index ea8b28cf246..3e396f23fcf 100644
--- a/addons/website_customer/controllers/main.py
+++ b/addons/website_customer/controllers/main.py
@@ -1,11 +1,11 @@
# -*- coding: utf-8 -*-
+import re
import openerp
from openerp import SUPERUSER_ID
from openerp.addons.web import http
from openerp.tools.translate import _
from openerp.addons.web.http import request
-from openerp.addons.website_partner.controllers import main as website_partner
import werkzeug.urls
class WebsiteCustomer(http.Controller):
@@ -19,14 +19,13 @@ class WebsiteCustomer(http.Controller):
'/customers/country/<int:country_id>/page/<int:page>',
'/customers/country/<country_name>-<int:country_id>/page/<int:page>',
], type='http', auth="public", website=True)
- def customers(self, country_id=0, page=0, **post):
+ def customers(self, country_id=0, page=0, country_name='', **post):
cr, uid, context = request.cr, request.uid, request.context
country_obj = request.registry['res.country']
partner_obj = request.registry['res.partner']
partner_name = post.get('search', '')
- base_domain = [('website_published','=',True)]
- domain = list(base_domain)
+ domain = [('website_published', '=', True), ('assigned_partner_id', '!=', False)]
if partner_name:
domain += [
'|',
@@ -57,25 +56,24 @@ class WebsiteCustomer(http.Controller):
})
# search customers to display
- partner_ids = partner_obj.search(cr, openerp.SUPERUSER_ID, domain, context=request.context)
- google_map_partner_ids = ",".join([str(p) for p in partner_ids])
+ partner_count = partner_obj.search_count(cr, openerp.SUPERUSER_ID, domain, context=request.context)
# pager
pager = request.website.pager(
- url="/customers", total=len(partner_ids), page=page, step=self._references_per_page,
+ url="/customers", total=partner_count, page=page, step=self._references_per_page,
scope=7, url_args=post
)
- # browse page of customers to display
- partner_ids = partner_obj.search(
- cr, openerp.SUPERUSER_ID, domain,
- limit=self._references_per_page, offset=pager['offset'], context=context)
- partners_data = partner_obj.read(
- request.cr, openerp.SUPERUSER_ID, partner_ids, request.website.get_partner_white_list_fields(), context=request.context)
+ partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain,
+ offset=pager['offset'], limit=self._references_per_page,
+ context=request.context)
+ google_map_partner_ids = ','.join(map(str, partner_ids))
+ partners = partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids, request.context)
+
values = {
'countries': countries,
'current_country_id': country_id or 0,
- 'partners_data': partners_data,
+ 'partners': partners,
'google_map_partner_ids': google_map_partner_ids,
'pager': pager,
'post': post,
@@ -83,26 +81,15 @@ class WebsiteCustomer(http.Controller):
}
return request.website.render("website_customer.index", values)
- @http.route(['/customers/<int:partner_id>', '/customers/<partner_name>-<int:partner_id>'], type='http', auth="public", website=True)
- def customer(self, partner_id, **post):
- partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
- values = website_partner.get_partner_template_value(partner)
- if not values:
- return self.customers(**post)
-
- partner_obj = request.registry['res.partner']
- if values['partner_data'].get('assigned_partner_id', None):
- values['assigned_partner_data'] = partner_obj.read(
- request.cr, openerp.SUPERUSER_ID, [values['partner_data']['assigned_partner_id'][0]],
- request.website.get_partner_white_list_fields(), context=request.context)[0]
- if values['partner_data'].get('implemented_partner_ids', None):
- implemented_partners_data = partner_obj.read(
- request.cr, openerp.SUPERUSER_ID, values['partner_data']['implemented_partner_ids'],
- request.website.get_partner_white_list_fields(), context=request.context)
- values['implemented_partners_data'] = []
- for data in implemented_partners_data:
- if data.get('website_published'):
- values['implemented_partners_data'].append(data)
-
- values['main_object'] = values['partner']
- return request.website.render("website_customer.details", values)
+ # Do not use semantic controller due to SUPERUSER_ID
+ @http.route(['/customers/<partner_id>'], type='http', auth="public", website=True)
+ def partners_detail(self, partner_id, **post):
+ mo = re.search('-([-0-9]+)$', str(partner_id))
+ if mo:
+ partner_id = int(mo.group(1))
+ partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
+ if partner.exists() and partner.website_published:
+ values = {}
+ values['main_object'] = values['partner'] = partner
+ return request.website.render("website_customer.details", values)
+ return self.customers(**post)