diff --git a/addons/website_contract/__init__.py b/addons/website_contract/__init__.py deleted file mode 100644 index ee5959455ad..00000000000 --- a/addons/website_contract/__init__.py +++ /dev/null @@ -1 +0,0 @@ -import controllers diff --git a/addons/website_contract/__openerp__.py b/addons/website_contract/__openerp__.py deleted file mode 100644 index 80a9b80eb14..00000000000 --- a/addons/website_contract/__openerp__.py +++ /dev/null @@ -1,18 +0,0 @@ -{ -'name': 'Public References', - 'category': 'Website', - 'summary': 'Publish Customer References', - 'version': '1.0', - 'description': """ -OpenERP Blog -============ - - """, - 'author': 'OpenERP SA', - 'depends': ['website_partner', 'sale', 'website_google_map'], - 'data': [ - 'views/website_contract.xml', - ], - 'qweb': ['static/src/xml/*.xml'], - 'installable': True, -} diff --git a/addons/website_contract/controllers/main.py b/addons/website_contract/controllers/main.py deleted file mode 100644 index 07ff8d2459d..00000000000 --- a/addons/website_contract/controllers/main.py +++ /dev/null @@ -1,102 +0,0 @@ -# -*- 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 website_contract(http.Controller): - - @website.route(['/references/', '/references/page//'], type='http', auth="public") - def references(self, page=0, **post): - partner_obj = request.registry['res.partner'] - account_obj = request.registry['account.analytic.account'] - - # check contracts - contract_ids = account_obj.search(request.cr, openerp.SUPERUSER_ID, [(1, "=", 1)]) - contracts = account_obj.browse(request.cr, openerp.SUPERUSER_ID, - contract_ids, request.context) - contract_project_ids = [contract.partner_id.id for contract in contracts - if contract.partner_id] - domain = ['|', ('id', "in", contract_project_ids), ('id', "child_of", contract_project_ids)] - - if post.get('search'): - domain += [ - '|', - ('name', 'ilike', "%%%s%%" % post.get("search")), - ('website_description', 'ilike', "%%%s%%" % post.get("search")) - ] - if request.context['is_public_user']: - domain = ['&'] + domain + [('website_published', '=', True)] - - # public partner profile - partner_ids = partner_obj.search( - request.cr, openerp.SUPERUSER_ID, - domain + [('website_published', '=', True)], context=request.context) - google_map_partner_ids = ",".join([str(p) for p in partner_ids]) - - # group by country - countries = partner_obj.read_group( - request.cr, request.uid, domain, ["id", "country_id"], - groupby="country_id", orderby="country_id", context=request.context) - country_count = partner_obj.search( - request.cr, request.uid, domain, count=True, context=request.context) - countries.insert(0, { - 'country_id_count': country_count, - 'country_id': ("all", _("All Countries")) - }) - - if post.get("country", "all") != 'all': - partner_ids = partner_obj.search( - request.cr, request.uid, - [ - ('id', 'in', partner_ids), - ('country_id', '=', int(post.get('country'))) - ], context=request.context) - - step = 20 - pager = request.website.pager(url="/references/", 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)], - limit=step, offset=pager['offset'], context=request.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, - 'searches': post, - 'search_path': "?%s" % urllib.urlencode(post), - } - return request.website.render("website_contract.index", values) - - @website.route(['/references//'], type='http', auth="public") - def references_ref(self, partner_id=None, **post): - """ Route for displaying a single partner. - - :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_contract.details", values) diff --git a/addons/website_contract/views/website_contract.xml b/addons/website_contract/views/website_contract.xml deleted file mode 100644 index 5038ce26e59..00000000000 --- a/addons/website_contract/views/website_contract.xml +++ /dev/null @@ -1,129 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/addons/website_customer/__init__.py b/addons/website_customer/__init__.py new file mode 100644 index 00000000000..3a37b9285ec --- /dev/null +++ b/addons/website_customer/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013-Today OpenERP S.A. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +import controllers diff --git a/addons/website_customer/__openerp__.py b/addons/website_customer/__openerp__.py new file mode 100644 index 00000000000..934cfb775ab --- /dev/null +++ b/addons/website_customer/__openerp__.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013-Today OpenERP S.A. (). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## + +{ + 'name': 'Public Customer References', + 'category': 'Website', + 'summary': 'Publish Customer References on your Website', + 'version': '1.0', + 'description': """ +OpenERP Customer References +=========================== +""", + 'author': 'OpenERP SA', + 'depends': [ + 'website_partner', + 'website_google_map' + ], + 'data': [ + 'views/website_customer.xml', + ], + 'qweb': [], + 'installable': True, +} diff --git a/addons/website_contract/controllers/__init__.py b/addons/website_customer/controllers/__init__.py similarity index 100% rename from addons/website_contract/controllers/__init__.py rename to addons/website_customer/controllers/__init__.py 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//', + '/customers/country/', '/customers/country//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//'], 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) diff --git a/addons/website_customer/views/website_customer.xml b/addons/website_customer/views/website_customer.xml new file mode 100644 index 00000000000..4e88e14e007 --- /dev/null +++ b/addons/website_customer/views/website_customer.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + +