summaryrefslogtreecommitdiff
path: root/addons/website_customer/controllers
diff options
context:
space:
mode:
authorThibault Delavallée <tde@openerp.com>2013-10-08 10:39:56 +0200
committerThibault Delavallée <tde@openerp.com>2013-10-08 10:39:56 +0200
commitb87ddc1bf47cf86e5fd9b4f594e80e7f73988b4a (patch)
tree2e8d36e21b8dd180c9c089fb2a4eed0554af1a27 /addons/website_customer/controllers
parentc82f6f7ef6493de936683a5ff6ee4a1175f39e82 (diff)
[REF] website_contract: renamed website_customer, now only displaying customers.
This module is not based on account.analytic.account anymore. Instead published customers are displayed. A further step is the 'implemented by' feature that iwll be provided by crm_partner_assign module (probably). Display will also have to be cleaned. bzr revid: tde@openerp.com-20131008083956-tb1fceo9y78mm728
Diffstat (limited to 'addons/website_customer/controllers')
-rw-r--r--addons/website_customer/controllers/__init__.py1
-rw-r--r--addons/website_customer/controllers/main.py99
2 files changed, 100 insertions, 0 deletions
diff --git a/addons/website_customer/controllers/__init__.py b/addons/website_customer/controllers/__init__.py
new file mode 100644
index 00000000000..8ee9bae18d9
--- /dev/null
+++ b/addons/website_customer/controllers/__init__.py
@@ -0,0 +1 @@
+import main
diff --git a/addons/website_customer/controllers/main.py b/addons/website_customer/controllers/main.py
new file mode 100644
index 00000000000..b1c7cb85dc2
--- /dev/null
+++ b/addons/website_customer/controllers/main.py
@@ -0,0 +1,99 @@
+# -*- coding: utf-8 -*-
+
+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 WebsiteCustomer(http.Controller):
+ _references_per_page = 20
+
+ @website.route([
+ '/customers/', '/customers/page/<int:page>/',
+ '/customers/country/<int:country_id>', '/customers/country/<int:country_id>/page/<int:page>/'
+ ], type='http', auth="public")
+ def customers(self, country_id=None, page=0, **post):
+ cr, uid, context = request.cr, request.uid, request.context
+ partner_obj = request.registry['res.partner']
+ partner_name = post.get('search', '')
+
+ base_domain = [('customer', '=', True)]
+ if request.context['is_public_user']:
+ base_domain += [('website_published', '=', True)]
+ if partner_name:
+ base_domain += [
+ '|',
+ ('name', 'ilike', "%%%s%%" % post.get("search")),
+ ('website_description', 'ilike', "%%%s%%" % post.get("search"))
+ ]
+ domain = base_domain
+ if country_id:
+ domain += [('country_id', '=', country_id)]
+
+ # group by country, based on all customers (base domain)
+ countries = partner_obj.read_group(
+ cr, openerp.SUPERUSER_ID, domain, ["id", "country_id"],
+ groupby="country_id", orderby="country_id", context=request.context)
+ country_count = partner_obj.search(
+ cr, openerp.SUPERUSER_ID, base_domain, count=True, context=request.context)
+ countries.insert(0, {
+ 'country_id_count': country_count,
+ 'country_id': ("all", _("All Countries"))
+ })
+
+ # 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])
+
+ # pager
+ pager = request.website.pager(
+ url="/references/", total=len(partner_ids), 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 = partner_obj.browse(request.cr, openerp.SUPERUSER_ID,
+ partner_ids, request.context)
+
+ values = {
+ 'countries': countries,
+ 'partner_ids': partners,
+ 'google_map_partner_ids': google_map_partner_ids,
+ 'pager': pager,
+ 'post': post,
+ 'search_path': "?%s" % urllib.urlencode(post),
+ }
+ return request.website.render("website_customer.index", values)
+
+ @website.route(['/customers/<int:partner_id>/'], type='http', auth="public")
+ def customer(self, partner_id=None, **post):
+ """ Route for displaying a single partner / customer.
+
+ :param integer partner_id: partner to display. If not set or not valid
+ call basic references method.
+ """
+ partner_obj = request.registry['res.partner']
+ if request.context['is_public_user']:
+ partner_ids = partner_obj.search(
+ request.cr, openerp.SUPERUSER_ID, [
+ ('website_published', '=', True),
+ ('id', '=', partner_id)
+ ], context=request.context)
+ partner_id = partner_ids and partner_ids[0] or None
+
+ if not partner_id:
+ return self.references(post=post)
+
+ values = {
+ 'partner_id': partner_obj.browse(
+ request.cr, openerp.SUPERUSER_ID, partner_id,
+ dict(request.context, show_address=True)),
+ }
+
+ return request.website.render("website_customer.details", values)