diff --git a/addons/website_partner/controllers/__init__.py b/addons/website_partner/controllers/__init__.py new file mode 100644 index 00000000000..8ee9bae18d9 --- /dev/null +++ b/addons/website_partner/controllers/__init__.py @@ -0,0 +1 @@ +import main diff --git a/addons/website_partner/controllers/main.py b/addons/website_partner/controllers/main.py new file mode 100644 index 00000000000..b678be9e744 --- /dev/null +++ b/addons/website_partner/controllers/main.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- + +import openerp +from openerp.addons.web import http +from openerp.addons.web.http import request +from openerp.addons.website.models import website +import werkzeug + +white_list = ["grade_id", "name", "parent_id", 'website_short_description', "website_published", + "website_description", "tel", "fax", "image", "image_small", "image_medium"] + +def get_partner_template_value(partner, add_white_list=None): + ctx = dict(request.context, show_address=True) + partner_obj = request.registry['res.partner'] + partner_id = partner.id + partner_ids = partner_obj.search(request.cr, request.uid, [('id', '=', partner_id)], context=request.context) + if not partner.exists() or not partner_ids: + partner = None + + partner_data = partner_obj.read( + request.cr, openerp.SUPERUSER_ID, [partner_id], white_list + (add_white_list or []), context=ctx)[0] + + if not partner_data["website_published"]: + return None + + partner_data['name_get'] = partner_obj.name_get(request.cr, openerp.SUPERUSER_ID, [partner_id],context=request.context)[0] + + partner_data['address'] = ''.join(partner_obj.name_get( + request.cr, openerp.SUPERUSER_ID, [partner_id],context=ctx)[0][1].split('\n')[1:]) + + values = { + 'partner': partner, + 'partner_data': partner_data, + } + return values + +class WebsitePartner(http.Controller): + @website.route(['/partners//'], type='http', auth="public", multilang=True) + def partner(self, partner, **post): + """ Route for displaying a single partner / customer. """ + values = get_partner_template_value(partner) + if not values: + raise werkzeug.exceptions.NotFound + return request.website.render("website_partner.partner_detail", values) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index f511fab0d0b..6bfa59bf143 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -121,19 +121,19 @@ class Ecommerce(http.Controller): return product_obj.browse(request.cr, request.uid, product_ids, context=request.context) def has_search_filter(self, attribute_id, value_id=None): - if request.httprequest.args.get('filter'): - filter = simplejson.loads(request.httprequest.args['filter']) + if request.httprequest.args.get('filters'): + filters = simplejson.loads(request.httprequest.args['filters']) else: - filter = [] - for key_val in filter: + filters = [] + for key_val in filters: if key_val[0] == attribute_id and (not value_id or value_id in key_val[1:]): return key_val return False - @website.route(['/shop/filter/'], type='http', auth="public", multilang=True) - def filter(self, **post): + @website.route(['/shop/filters/'], type='http', auth="public", multilang=True) + def filters(self, **post): index = [] - filter = [] + filters = [] for key, val in post.items(): cat = key.split("-") if len(cat) < 3 or cat[2] in ('max','minmem','maxmem'): @@ -145,19 +145,19 @@ class Ecommerce(http.Controller): _max = int(post.pop("att-%s-max" % cat[1])) _min = int(val) if (minmem != _min or maxmem != _max) and cat_id not in index: - filter.append([cat_id , [_min, _max] ]) + filters.append([cat_id , [_min, _max] ]) index.append(cat_id) elif cat_id not in index: - filter.append([ cat_id, int(cat[2]) ]) + filters.append([ cat_id, int(cat[2]) ]) index.append(cat_id) else: cat[2] = int(cat[2]) - if cat[2] not in filter[index.index(cat_id)][1:]: - filter[index.index(cat_id)].append( cat[2] ) + if cat[2] not in filters[index.index(cat_id)][1:]: + filters[index.index(cat_id)].append( cat[2] ) post.pop(key) - return request.redirect("/shop/?filter=%s%s%s" % ( - simplejson.dumps(filter), + return request.redirect("/shop/?filters=%s%s%s" % ( + simplejson.dumps(filters), post.get("search") and ("&search=%s" % post.get("search")) or "", post.get("category") and ("&category=%s" % post.get("category")) or "" )) @@ -188,7 +188,7 @@ class Ecommerce(http.Controller): '/shop/category//', '/shop/category//page//' ], type='http', auth="public", multilang=True) - def shop(self, category=0, page=0, filter_domain='', search='', **post): + def shop(self, category=0, page=0, filters='', search='', **post): cr, uid, context = request.cr, request.uid, request.context product_obj = request.registry.get('product.template') domain = request.registry.get('website').get_website_sale_domain() @@ -198,10 +198,10 @@ class Ecommerce(http.Controller): ('description', 'ilike', "%%%s%%" % search)] if category: domain.append(('product_variant_ids.public_categ_id', 'child_of', category)) - if filter_domain: - filter_domain = simplejson.loads(filter_domain) - if filter_domain: - ids = self.attributes_to_ids(filter_domain) + if filters: + filters = simplejson.loads(filters) + if filters: + ids = self.attributes_to_ids(filters) domain.append(('id', 'in', ids or [0])) product_count = product_obj.search_count(cr, uid, domain, context=context) @@ -228,10 +228,12 @@ class Ecommerce(http.Controller): values = { 'products': products, 'bins': table_compute().process(products), + 'rows': PPR, + 'range': range, 'search': { 'search': search, 'category': category, - 'filter_domain': filter_domain, + 'filters': filters, }, 'pager': pager, 'styles': styles, @@ -242,7 +244,7 @@ class Ecommerce(http.Controller): return request.website.render("website_sale.products", values) @website.route(['/shop/product//'], type='http', auth="public", multilang=True) - def product(self, product, search='', category='', filter_domain='', **kwargs): + def product(self, product, search='', category='', filters='', **kwargs): website.preload_records(product, on_error="website_sale.404") category_obj = request.registry.get('product.public.category') @@ -265,7 +267,7 @@ class Ecommerce(http.Controller): 'search': { 'search': search, 'category': category and str(category.id), - 'filter': filter_domain, + 'filters': filters, } } return request.website.render("website_sale.product", values) diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 84aca47e083..b3f2c4fa26a 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -40,7 +40,7 @@ - + @@ -49,7 +49,7 @@ Promo - + @@ -69,7 +69,7 @@ - + @@ -105,12 +105,14 @@ + + + @@ -254,7 +256,7 @@ Products - + @@ -525,7 +527,7 @@ - + @@ -558,7 +560,7 @@ Apply filter - Cancel filter + Cancel filter