diff --git a/addons/website/__init__.py b/addons/website/__init__.py index 17879db9942..d9cff35c01a 100644 --- a/addons/website/__init__.py +++ b/addons/website/__init__.py @@ -1,5 +1,5 @@ import controllers import res_config -from website import website +import website import view diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index b6dc50bfe14..db1596e947a 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -14,7 +14,7 @@ import werkzeug.wrappers from PIL import Image import openerp -from openerp.addons.website.website import route +from openerp.addons.website import website from openerp.addons.web import http from openerp.addons.web.http import request @@ -35,7 +35,7 @@ PIL_MIME_MAPPING = {'PNG': 'image/png', 'JPEG': 'image/jpeg', 'GIF': 'image/gif' # Completely arbitrary limits MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768) class Website(openerp.addons.web.controllers.main.Home): - @route('/', type='http', auth="admin") + @website.route('/', type='http', auth="admin") def index(self, **kw): return self.page("website.homepage") @@ -44,7 +44,7 @@ class Website(openerp.addons.web.controllers.main.Home): return super(Website, self).index(*args, **kw) # FIXME: auth, if /pagenew known anybody can create new empty page - @route('/pagenew/', type='http', auth="admin") + @website.route('/pagenew/', type='http', auth="admin") def pagenew(self, path, noredirect=NOPE): if '.' in path: module, idname = path.split('.', 1) @@ -82,7 +82,7 @@ class Website(openerp.addons.web.controllers.main.Home): return werkzeug.wrappers.Response(url, mimetype='text/plain') return werkzeug.utils.redirect(url) - @route('/website/theme_change', type='http', auth="admin") + @website.route('/website/theme_change', type='http', auth="admin") def theme_change(self, theme_id=False, **kwargs): imd = request.registry['ir.model.data'] view = request.registry['ir.ui.view'] @@ -96,10 +96,9 @@ class Website(openerp.addons.web.controllers.main.Home): view_model, view_id = imd.get_object_reference(request.cr, request.uid, module, xml_id) view.write(request.cr, request.uid, [view_id], {'inherit_id':view_option_id}) - request.webcontext['theme_changed'] = True - return request.webcontext.render('website.themes') + return request.webcontext.render('website.themes', {'theme_changed': True}) - @route('/page/', type='http', auth="admin") + @website.route('/page/', type='http', auth="admin") def page(self, path, **kwargs): request.webcontext['path'] = path try: @@ -108,7 +107,7 @@ class Website(openerp.addons.web.controllers.main.Home): html = request.webcontext.render('website.404') return html - @route('/website/customize_template_toggle', type='json', auth='admin') # FIXME: auth + @website.route('/website/customize_template_toggle', type='json', auth='admin') # FIXME: auth def customize_template_set(self, view_id): view_obj = request.registry.get("ir.ui.view") view = view_obj.browse(request.cr, request.uid, int(view_id), context=request.context) @@ -121,7 +120,7 @@ class Website(openerp.addons.web.controllers.main.Home): }, context=request.context) return True - @route('/website/customize_template_get', type='json', auth='admin') # FIXME: auth + @website.route('/website/customize_template_get', type='json', auth='admin') # FIXME: auth def customize_template_get(self, xml_id): imd = request.registry['ir.model.data'] view_model, view_theme_id = imd.get_object_reference(request.cr, request.uid, 'website', 'theme') @@ -148,7 +147,7 @@ class Website(openerp.addons.web.controllers.main.Home): return result # # FIXME: auth, anybody can upload an attachment if URL known/found - @route('/website/attach', type='http', auth='admin') + @website.route('/website/attach', type='http', auth='admin') def attach(self, func, upload): req = request.httprequest if req.method != 'POST': @@ -172,7 +171,7 @@ class Website(openerp.addons.web.controllers.main.Home): window.parent['%s'](%s, %s); """ % (func, json.dumps(url), json.dumps(message)) - @route('/website/attachment/', type='http', auth="admin") + @website.route('/website/attachment/', type='http', auth="admin") def attachment(self, id): # TODO: provide actual thumbnails? # FIXME: can't use Binary.image because auth=user and website attachments need to be public @@ -198,7 +197,7 @@ class Website(openerp.addons.web.controllers.main.Home): image.save(response.stream, image.format) return response - @route('/website/image', type='http', auth="public") + @website.route('/website/image', type='http', auth="public") def image(self, model, id, field, **kw): last_update = '__last_update' Model = request.registry[model] @@ -239,7 +238,7 @@ class Website(openerp.addons.web.controllers.main.Home): pass return request.make_response(image_data, headers) - @route(['/website/publish/'], type='http', auth="public") + @website.route(['/website/publish/'], type='http', auth="public") def publish(self, **post): _id = int(post['id']) _object = request.registry[post['object']] @@ -250,7 +249,7 @@ class Website(openerp.addons.web.controllers.main.Home): return obj.website_published and "1" or "0" - @route(['/website/kanban/'], type='http', auth="public") + @website.route(['/website/kanban/'], type='http', auth="public") def kanban(self, **post): return request.registry['website'].kanban_col(**post) diff --git a/addons/website/website.py b/addons/website/website.py index f07c178b293..0be634a403b 100644 --- a/addons/website/website.py +++ b/addons/website/website.py @@ -53,7 +53,7 @@ class WebContext(dict): def __init__(self): self.website = request.registry.get("website") lang = request.httprequest.host.split('.')[0] - context = self.website.get_rendering_context(lang=lang) + context = self.website.get_webcontext(lang=lang) dict.__init__(self, context) def __getattr__(self, name): if hasattr(self.website, name): @@ -63,7 +63,10 @@ class WebContext(dict): else: raise AttributeError def render(self, template, values=None): - return self.website.render(template, self) + context = self.copy() + if values: + context.update(values) + return self.website.render(template, context) class website(osv.osv): _name = "website" # Avoid website.website convention for conciseness (for new api). Got a special authorization from xmo and rco @@ -106,7 +109,7 @@ class website(osv.osv): 'lang_selected': (lg for lg in languages if lg['code'].lower() == lang.lower()).next(), } - def get_rendering_context(self, additional_values=None, lang=None): + def get_webcontext(self, additional_values=None, lang=None): debug = 'debug' in request.params is_logged = True try: @@ -280,12 +283,12 @@ class website(osv.osv): objects.append(obj) - values = self.get_rendering_context({ + values = { 'objects': objects, 'range': range, 'template': template, - }) - return self.render("website.kanban_contain", values) + } + return request.webcontext.render("website.kanban_contain", values) def kanban_col(self, model, domain, page, template, step, orderby): html = "" @@ -296,7 +299,7 @@ class website(osv.osv): object_ids = model_obj.search(request.cr, request.uid, domain, limit=step, offset=offset, order=orderby) object_ids = model_obj.browse(request.cr, request.uid, object_ids) for object_id in object_ids: - html += self.render(template, self.get_rendering_context({'object_id': object_id})) + html += request.webcontext.render(template, {'object_id': object_id}) return html class res_lang(osv.osv): diff --git a/addons/website_contract/controllers/main.py b/addons/website_contract/controllers/main.py index af06fbd9391..c911881e2fd 100644 --- a/addons/website_contract/controllers/main.py +++ b/addons/website_contract/controllers/main.py @@ -4,11 +4,12 @@ import openerp from openerp.addons.web import http from openerp.tools.translate import _ from openerp.addons.web.http import request +from openerp.addons.website import website import urllib class website_contract(http.Controller): - @http.route(['/references/', '/references/page//'], type='http', auth="public") + @website.route(['/references/', '/references/page//'], type='http', auth="public") def references(self, page=0, **post): website = request.registry['website'] partner_obj = request.registry['res.partner'] @@ -30,7 +31,7 @@ class website_contract(http.Controller): partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain + [('website_published', '=', True)]) google_map_partner_ids = ",".join([str(p) for p in partner_ids]) - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: # search without website_published partner_ids += partner_obj.search(request.cr, request.uid, domain) partner_ids = list(set(partner_ids)) @@ -49,27 +50,24 @@ class website_contract(http.Controller): pager = 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']) - - values = website.get_rendering_context({ + values = { 'countries': countries, 'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids), 'google_map_partner_ids': google_map_partner_ids, 'pager': pager, 'searches': post, 'search_path': "?%s" % urllib.urlencode(post), - }) - return website.render("website_contract.index", values) + } + return request.webcontext.render("website_contract.index", values) - @http.route(['/references//'], type='http', auth="public") + @website.route(['/references//'], type='http', auth="public") def references_ref(self, ref_id=0, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)]) - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)]) - values = website.get_rendering_context({ + values = { 'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}), - }) - return website.render("website_contract.details", values) - + } + return request.webcontext.render("website_contract.details", values) diff --git a/addons/website_crm/controllers/main.py b/addons/website_crm/controllers/main.py index 9791159013e..046899f26b8 100644 --- a/addons/website_crm/controllers/main.py +++ b/addons/website_crm/controllers/main.py @@ -1,25 +1,21 @@ # -*- coding: utf-8 -*- -import openerp from openerp.addons.web import http from openerp.addons.web.http import request -import simplejson -import werkzeug.wrappers +from openerp.addons.website import website from urllib import quote_plus class contactus(http.Controller): - @http.route(['/crm/contactus'], type='http', auth="admin") + @website.route(['/crm/contactus'], type='http', auth="admin") def contactus(self, *arg, **post): - website = request.registry['website'] post['user_id'] = False request.registry['crm.lead'].create(request.cr, request.uid, post) - values = website.get_rendering_context() - company = values['res_company'] - values.update({ + company = request.webcontext['res_company'] + values = { 'google_map_url': "http://maps.googleapis.com/maps/api/staticmap?center=%s&sensor=false&zoom=8&size=298x298" % quote_plus('%s, %s %s, %s' % (company.street, company.city, company.zip, company.country_id and company.country_id.name_get()[0][1] or '')) - }) - return website.render("website_crm.thanks", values) + } + return request.webcontext.render("website_crm.thanks", values) # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index 9d9992e9199..9612b9a07da 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -4,11 +4,12 @@ import openerp from openerp.addons.web import http from openerp.tools.translate import _ from openerp.addons.web.http import request +from openerp.addons.website import website import urllib class website_crm_partner_assign(http.Controller): - @http.route(['/partners/', '/partners/page//'], type='http', auth="public") + @website.route(['/partners/', '/partners/page//'], type='http', auth="public") def partners(self, page=0, **post): website = request.registry['website'] partner_obj = request.registry['res.partner'] @@ -54,8 +55,7 @@ class website_crm_partner_assign(http.Controller): partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('id', 'in', partner_ids)], limit=step, offset=pager['offset'], order="grade_id ASC,partner_weight DESC") - - values = website.get_rendering_context({ + values = { 'countries': countries, 'grades': grades, 'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids), @@ -63,19 +63,17 @@ class website_crm_partner_assign(http.Controller): 'pager': pager, 'searches': post, 'search_path': "?%s" % urllib.urlencode(post), - }) - return website.render("website_crm_partner_assign.index", values) + } + return request.webcontext.render("website_crm_partner_assign.index", values) - @http.route(['/partners//'], type='http', auth="public") + @website.route(['/partners//'], type='http', auth="public") def partners_ref(self, ref_id=0, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)]) - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)]) - values = website.get_rendering_context({ + values = { 'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}), - }) - return website.render("website_crm_partner_assign.details", values) - + } + return request.webcontext.render("website_crm_partner_assign.details", values) diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index d0f05b3fb6f..92590a9039d 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -5,6 +5,7 @@ from openerp.addons.web import http from openerp.addons.web.http import request from openerp.tools.translate import _ from openerp.addons import website_sale +from openerp.addons.website import website from datetime import datetime from dateutil.relativedelta import relativedelta @@ -15,7 +16,7 @@ import werkzeug class website_event(http.Controller): - @http.route(['/event/', '/event/page//'], type='http', auth="public") + @website.route(['/event/', '/event/page//'], type='http', auth="public") def events(self, page=1, **searches): website = request.registry['website'] event_obj = request.registry['event.event'] @@ -86,7 +87,7 @@ class website_event(http.Controller): pager = website.pager(url="/event/", total=event_count, page=page, step=step, scope=5) obj_ids = event_obj.search(request.cr, request.uid, dom_without("none"), limit=step, offset=pager['offset'], order="date_begin DESC") - values = website.get_rendering_context({ + values = { 'event_ids': event_obj.browse(request.cr, request.uid, obj_ids), 'dates': dates, 'types': types, @@ -94,28 +95,26 @@ class website_event(http.Controller): 'pager': pager, 'searches': searches, 'search_path': "?%s" % urllib.urlencode(searches), - }) + } - return website.render("website_event.index", values) + return request.webcontext.render("website_event.index", values) - @http.route(['/event/'], type='http', auth="public") + @website.route(['/event/'], type='http', auth="public") def event(self, event_id=None, **post): - website = request.registry['website'] event = request.registry['event.event'].browse(request.cr, request.uid, event_id, {'show_address': 1}) - values = website.get_rendering_context({ + values = { 'event_id': event, 'range': range - }) - return website.render("website_event.detail", values) + } + return request.webcontext.render("website_event.detail", values) - @http.route(['/event//add_cart'], type='http', auth="public") + @website.route(['/event//add_cart'], type='http', auth="public") def add_cart(self, event_id=None, **post): - website = request.registry['website'] user_obj = request.registry['res.users'] order_line_obj = request.registry.get('sale.order.line') ticket_obj = request.registry.get('event.event.ticket') - order = website.get_rendering_context()['order'] + order = request.webcontext['order'] if not order: order = website_sale.controllers.main.get_order() diff --git a/addons/website_google_map/controllers/main.py b/addons/website_google_map/controllers/main.py index fc2055032d8..3867a3f20f0 100644 --- a/addons/website_google_map/controllers/main.py +++ b/addons/website_google_map/controllers/main.py @@ -3,43 +3,42 @@ import openerp from openerp.addons.web import http from openerp.addons.web.http import request +from openerp.addons.website import website from datetime import datetime class google_map(http.Controller): - @http.route(['/google_map/'], type='http', auth="admin") + @website.route(['/google_map/'], type='http', auth="admin") def google_map(self, *arg, **post): - website = request.registry['website'] - values = website.get_rendering_context() - values['partner_ids'] = post.get('partner_ids', "") - values['width'] = post.get('width', 900) - values['height'] = post.get('height', 460) - values['partner_url'] = post.get('partner_url') - return website.render("website_google_map.google_map", values) + values = { + 'partner_ids': post.get('partner_ids', ""), + 'width': post.get('width', 900), + 'height': post.get('height', 460), + 'partner_url': post.get('partner_url'), + } + return request.webcontext.render("website_google_map.google_map", values) - @http.route(['/google_map/partners.json'], type='http', auth="admin") + @website.route(['/google_map/partners.json'], type='http', auth="admin") def google_map_data(self, *arg, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] domain = [("id", "in", [int(p) for p in post.get('partner_ids', "").split(",") if p])] partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain + [('website_published', '=', True)]) - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: partner_ids += partner_obj.search(request.cr, request.uid, domain) partner_ids = list(set(partner_ids)) return partner_obj.google_map_json(request.cr, openerp.SUPERUSER_ID, partner_ids) - @http.route(['/google_map/set_partner_position/'], type='http', auth="admin") + @website.route(['/google_map/set_partner_position/'], type='http', auth="admin") def google_map_set_partner_position(self, *arg, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] partner_id = post.get('partner_id') and int(post['partner_id']) latitude = post.get('latitude') and float(post['latitude']) longitude = post.get('longitude') and float(post['longitude']) - if request.uid != website.get_public_user().id and partner_id and (latitude or longitude): + if not request.webcontext.is_public_user and partner_id and (latitude or longitude): values = { 'partner_latitude': latitude, 'partner_longitude': longitude, diff --git a/addons/website_hr/controllers/main.py b/addons/website_hr/controllers/main.py index 76bb6f9a7ad..1ce48894e26 100644 --- a/addons/website_hr/controllers/main.py +++ b/addons/website_hr/controllers/main.py @@ -2,15 +2,15 @@ from openerp.addons.web import http from openerp.addons.web.http import request +from openerp.addons.website import website class website_hr(http.Controller): - @http.route(['/page/website.aboutus'], type='http', auth="public") + @website.route(['/page/website.aboutus'], type='http', auth="public") def blog(self, **post): - website = request.registry['website'] hr_obj = request.registry['hr.employee'] employee_ids = hr_obj.search(request.cr, request.uid, [(1, "=", 1)]) - values = website.get_rendering_context({ + values = { 'employee_ids': hr_obj.browse(request.cr, request.uid, employee_ids) - }) - return website.render("website.aboutus", values) + } + return request.webcontext.render("website.aboutus", values) diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 3011908471d..3bc3e5e6ebf 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -3,6 +3,7 @@ from openerp import SUPERUSER_ID from openerp.addons.web import http from openerp.addons.web.http import request +from openerp.addons.website import website import werkzeug from openerp.tools.translate import _ from openerp.tools.safe_eval import safe_eval @@ -13,7 +14,7 @@ _months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May class website_mail(http.Controller): - @http.route(['/blog/', '/blog//', '/blog///', + @website.route(['/blog/', '/blog//', '/blog///', '/blog/page//', '/blog//page//', '/blog///page//'], type='http', auth="public") def blog(self, mail_group_id=None, blog_id=None, page=0, **post): website = request.registry['website'] @@ -21,16 +22,16 @@ class website_mail(http.Controller): message_obj = request.registry['mail.message'] user_obj = request.registry['res.users'] - values = website.get_rendering_context({ + values = { 'blog_ids': None, 'blog_id': None, 'nav_list': dict(), 'mail_group_id': mail_group_id, 'subscribe': post.get('subscribe'), 'website': website, - }) + } - if request.uid != website.get_public_user().id and mail_group_id: + if not request.webcontext.is_public_user and mail_group_id: message_follower_ids = group_obj.read(request.cr, request.uid, [mail_group_id], ['message_follower_ids'])[0]['message_follower_ids'] parent_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id values['subscribe'] = parent_id in message_follower_ids @@ -54,20 +55,20 @@ class website_mail(http.Controller): values['pager'] = pager values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids) - return website.render("website_mail.index", values) + return request.webcontext.render("website_mail.index", values) - @http.route(['/blog/nav'], type='http', auth="public") + @website.route(['/blog/nav'], type='http', auth="public") def nav(self, **post): comment_ids = request.registry['mail.group'].get_public_message_ids(request.cr, request.uid, domain=safe_eval(post.get('domain')), order="create_date asc", limit=None) return simplejson.dumps(request.registry['mail.message'].read(request.cr, request.uid, comment_ids, ['website_published', 'subject', 'res_id'])) - @http.route(['/blog///post'], type='http', auth="public") + @website.route(['/blog///post'], type='http', auth="public") def blog_post(self, mail_group_id=None, blog_id=None, **post): website = request.registry['website'] url = request.httprequest.host_url if post.get('body'): request.session.body = post.get('body') - if request.uid == website.get_public_user().id: + if request.webcontext.is_public_user: return '%s/admin#action=redirect&url=%s/blog/%s/%s/post' % (url, url, mail_group_id, blog_id) if 'body' in request.session and request.session.body: @@ -86,7 +87,7 @@ class website_mail(http.Controller): else: return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id)) - @http.route(['/blog//new'], type='http', auth="public") + @website.route(['/blog//new'], type='http', auth="public") def new_blog_post(self, mail_group_id=None, **post): blog_id = request.registry['mail.group'].message_post(request.cr, request.uid, mail_group_id, body=_("Blog content.
Please edit this content then you can publish this blog."), @@ -98,15 +99,14 @@ class website_mail(http.Controller): ) return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id)) - @http.route(['/blog//subscribe', '/blog///subscribe'], type='http', auth="public") + @website.route(['/blog//subscribe', '/blog///subscribe'], type='http', auth="public") def subscribe(self, mail_group_id=None, blog_id=None, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] group_obj = request.registry['mail.group'] user_obj = request.registry['res.users'] - if mail_group_id and 'subscribe' in post and (post.get('email') or request.uid != website.get_public_user().id): - if request.uid == website.get_public_user().id: + if mail_group_id and 'subscribe' in post and (post.get('email') or not request.webcontext.is_public_user): + if request.webcontext.is_public_user: partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))]) if not partner_ids: partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": post.get('email'), "name": "Subscribe: %s" % post.get('email')})] @@ -117,15 +117,14 @@ class website_mail(http.Controller): return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=post.get('email')) - @http.route(['/blog//unsubscribe', '/blog///unsubscribe'], type='http', auth="public") + @website.route(['/blog//unsubscribe', '/blog///unsubscribe'], type='http', auth="public") def unsubscribe(self, mail_group_id=None, blog_id=None, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] group_obj = request.registry['mail.group'] user_obj = request.registry['res.users'] - if mail_group_id and 'unsubscribe' in post and (post.get('email') or request.uid != website.get_public_user().id): - if request.uid == website.get_public_user().id: + if mail_group_id and 'unsubscribe' in post and (post.get('email') or not request.webcontext.is_public_user): + if request.webcontext.is_public_user: partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))]) else: partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id] @@ -133,4 +132,3 @@ class website_mail(http.Controller): group_obj.message_unsubscribe(request.cr, SUPERUSER_ID, [mail_group_id], partner_ids) return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=None) - diff --git a/addons/website_membership/controllers/main.py b/addons/website_membership/controllers/main.py index eeef26a2b03..7ea78e95a19 100644 --- a/addons/website_membership/controllers/main.py +++ b/addons/website_membership/controllers/main.py @@ -4,11 +4,12 @@ import openerp from openerp.addons.web import http from openerp.tools.translate import _ from openerp.addons.web.http import request +from openerp.addons.website import website import urllib class website_crm_partner_assign(http.Controller): - @http.route(['/members/', '/members/page//'], type='http', auth="public") + @website.route(['/members/', '/members/page//'], type='http', auth="public") def members(self, page=0, **post): website = request.registry['website'] membership_obj = request.registry['membership.membership_line'] @@ -48,26 +49,24 @@ class website_crm_partner_assign(http.Controller): limit=step, offset=pager['offset'], order="membership_id ASC,date DESC") - values = website.get_rendering_context({ + values = { 'memberships': memberships, 'membership_line_ids': membership_obj.browse(request.cr, openerp.SUPERUSER_ID, membership_ids), 'google_map_partner_ids': google_map_partner_ids, 'pager': pager, 'searches': post, 'search_path': "?%s" % urllib.urlencode(post), - }) - return website.render("website_membership.index", values) + } + return request.webcontext.render("website_membership.index", values) - @http.route(['/members//'], type='http', auth="public") + @website.route(['/members//'], type='http', auth="public") def partners_ref(self, ref_id=0, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)]) - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)]) - values = website.get_rendering_context({ + values = { 'partner_id': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids[0], context={'show_address': True}), - }) - return website.render("website_membership.details", values) - + } + return request.webcontext.render("website_membership.details", values) diff --git a/addons/website_project/controllers/main.py b/addons/website_project/controllers/main.py index a279f010dfd..8132f2959b5 100644 --- a/addons/website_project/controllers/main.py +++ b/addons/website_project/controllers/main.py @@ -3,31 +3,24 @@ from openerp.osv import osv from openerp.addons.web import http from openerp.addons.web.http import request +from openerp.addons.website import website -class website(osv.osv): +class Website(osv.osv): _inherit = "website" - def get_rendering_context(self, additional_values=None, **kw): + def get_webcontext(self, values={}, **kw): project_obj = request.registry['project.project'] project_ids = project_obj.search(request.cr, request.uid, [('privacy_visibility', "=", "public")]) - values = { + values.update({ 'project_ids': project_obj.browse(request.cr, request.uid, project_ids), - } - if additional_values: - values.update(additional_values) - return super(website, self).get_rendering_context(values, **kw) + }) + return super(Website, self).get_webcontext(values, **kw) class website_project(http.Controller): - @http.route(['/project//'], type='http', auth="public") + @website.route(['/project//'], type='http', auth="public") def blog(self, project_id=None, **post): - website = request.registry['website'] project_obj = request.registry['project.project'] - project = project_obj.browse(request.cr, request.uid, project_id) - - values = website.get_rendering_context({ - 'project_id': project, - }) - return website.render("website_project.index", values) + return request.webcontext.render("website_project.index", {'project_id': project}) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index ac714f170e0..fa7d4f8e732 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -4,6 +4,7 @@ from openerp import SUPERUSER_ID from openerp.osv import osv from openerp.addons.web import http from openerp.addons.web.http import request +from openerp.addons.website import website import random import werkzeug import simplejson @@ -40,26 +41,24 @@ def get_current_order(): else: return False -class website(osv.osv): +class Website(osv.osv): _inherit = "website" - def get_rendering_context(self, additional_values=None, **kw): - values = { + def get_webcontext(self, values={}, **kw): + values.update({ 'order': get_current_order(), # 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates - } - if additional_values: - values.update(additional_values) - return super(website, self).get_rendering_context(values, **kw) + }) + return super(Website, self).get_webcontext(values, **kw) class Ecommerce(http.Controller): def get_categories(self): category_obj = request.registry.get('product.public.category') - category_ids = category_obj.search(request.cr, SUPERUSER_ID, [('parent_id', '=', False)]) - categories = category_obj.browse(request.cr, SUPERUSER_ID, category_ids) + category_ids = category_obj.search(request.cr, SUPERUSER_ID, [('parent_id', '=', False)], context=request.context) + categories = category_obj.browse(request.cr, SUPERUSER_ID, category_ids, context=request.context) return categories - @http.route(['/shop/', '/shop/category//', '/shop/category//page//', '/shop/page//'], type='http', auth="public") + @website.route(['/shop/', '/shop/category//', '/shop/category//page//', '/shop/page//'], type='http', auth="public") def category(self, cat_id=0, page=0, **post): if 'promo' in post: @@ -90,23 +89,21 @@ class Ecommerce(http.Controller): context = {'pricelist': self.get_pricelist()} - values = website.get_rendering_context({ + values = { 'categories': self.get_categories(), 'category_id': cat_id, 'products': product_obj.browse(request.cr, SUPERUSER_ID, product_ids, context=context), 'search': post.get("search"), 'pager': pager, - }) - return website.render("website_sale.products", values) + } + return request.webcontext.render("website_sale.products", values) - @http.route(['/shop/product//'], type='http', auth="public") + @website.route(['/shop/product//'], type='http', auth="public") def product(self, cat_id=0, product_id=0, **post): if 'promo' in post: self.change_pricelist(post.get('promo')) - website = request.registry['website'] - product_id = product_id and int(product_id) or 0 product_obj = request.registry.get('product.template') category_obj = request.registry.get('product.public.category') @@ -117,21 +114,21 @@ class Ecommerce(http.Controller): category_list = sorted(category_list, key=lambda category: category[1]) product = product_obj.browse(request.cr, request.uid, product_id, context=context) - values = website.get_rendering_context({ + values = { 'category_id': post.get('category_id') and int(post.get('category_id')) or None, 'search': post.get("search"), 'categories': self.get_categories(), 'category_list': category_list, 'product': product, - }) - return website.render("website_sale.product", values) + } + return request.webcontext.render("website_sale.product", values) - @http.route(['/shop/add_product/'], type='http', auth="public") + @website.route(['/shop/add_product/'], type='http', auth="public") def add_product(self, **post): product_id = request.registry.get('product.product').create(request.cr, request.uid, {'name': 'New Product'}) return werkzeug.utils.redirect("/shop/product/%s/" % product_id) - @http.route(['/shop/change_category//'], type='http', auth="public") + @website.route(['/shop/change_category//'], type='http', auth="public") def edit_product(self, product_id=0, **post): request.registry.get('product.template').write(request.cr, request.uid, [int(product_id)], {'public_categ_id': int(post.get('public_categ_id', 0))}) return "1" @@ -221,10 +218,9 @@ class Ecommerce(http.Controller): return [quantity, order.get_total_quantity()] - @http.route(['/shop/mycart/'], type='http', auth="public") + @website.route(['/shop/mycart/'], type='http', auth="public") def mycart(self, **post): order = get_current_order() - website = request.registry['website'] prod_obj = request.registry.get('product.product') if 'promo' in post: @@ -241,13 +237,13 @@ class Ecommerce(http.Controller): index = random.randrange(0, len(suggested_ids)) suggested_products.append(suggested_ids.pop(index)) - values = website.get_rendering_context({ + values = { 'categories': self.get_categories(), 'suggested_products': prod_obj.browse(request.cr, request.uid, suggested_products), - }) - return website.render("website_sale.mycart", values) + } + return request.webcontext.render("website_sale.mycart", values) - @http.route(['/shop//add_cart/', '/shop/add_cart/'], type='http', auth="public") + @website.route(['/shop//add_cart/', '/shop/add_cart/'], type='http', auth="public") def add_cart(self, path=None, product_id=None, order_line_id=None, remove=None, json=None): quantity = self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1)) if json: @@ -257,11 +253,11 @@ class Ecommerce(http.Controller): else: return werkzeug.utils.redirect("/shop/") - @http.route(['/shop/remove_cart/', '/shop//remove_cart/'], type='http', auth="public") + @website.route(['/shop/remove_cart/', '/shop//remove_cart/'], type='http', auth="public") def remove_cart(self, path=None, product_id=None, order_line_id=None, json=None): return self.add_cart(product_id=product_id, order_line_id=order_line_id, path=path, remove=True, json=json) - @http.route(['/shop/set_cart/', '/shop//set_cart/'], type='http', auth="public") + @website.route(['/shop/set_cart/', '/shop//set_cart/'], type='http', auth="public") def set_cart(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None): quantity = self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, set_number=set_number) if json: @@ -271,10 +267,8 @@ class Ecommerce(http.Controller): else: return werkzeug.utils.redirect("/shop/") - @http.route(['/shop/checkout/'], type='http', auth="public") + @website.route(['/shop/checkout/'], type='http', auth="public") def checkout(self, **post): - website = request.registry['website'] - order = get_current_order() if order.state != 'draft' or not order.order_line: @@ -285,13 +279,13 @@ class Ecommerce(http.Controller): country_obj = request.registry.get('res.country') country_state_obj = request.registry.get('res.country.state') - values = website.get_rendering_context({ + values = { 'shipping': post.get("shipping"), 'error': post.get("error") and dict.fromkeys(post.get("error").split(","), 'error') or {} - }) + } checkout = {} - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: partner = user_obj.browse(request.cr, request.uid, request.uid).partner_id partner_id = partner.id fields = ["name", "phone", "fax", "company", "email", "street", "city", "state_id", "zip", "country_id"] @@ -311,11 +305,10 @@ class Ecommerce(http.Controller): values['countries'] = country_obj.browse(request.cr, SUPERUSER_ID, country_obj.search(request.cr, SUPERUSER_ID, [(1, "=", 1)])) values['states'] = country_state_obj.browse(request.cr, SUPERUSER_ID, country_state_obj.search(request.cr, SUPERUSER_ID, [(1, "=", 1)])) - return website.render("website_sale.checkout", values) + return request.webcontext.render("website_sale.checkout", values) - @http.route(['/shop/confirm_order/'], type='http', auth="public") + @website.route(['/shop/confirm_order/'], type='http', auth="public") def confirm_order(self, **post): - website = request.registry['website'] order = get_current_order() error = [] @@ -359,7 +352,7 @@ class Ecommerce(http.Controller): 'country_id': post['country_id'], 'state_id': post['state_id'], } - if request.uid != website.get_public_user().id: + if not request.webcontext.is_public_user: partner_id = user_obj.browse(request.cr, request.uid, request.uid).partner_id.id partner_obj.write(request.cr, request.uid, [partner_id], partner_value) else: @@ -398,18 +391,17 @@ class Ecommerce(http.Controller): return werkzeug.utils.redirect("/shop/payment/") - @http.route(['/shop/payment/'], type='http', auth="public") + @website.route(['/shop/payment/'], type='http', auth="public") def payment(self, **post): - website = request.registry['website'] order = get_current_order() if not order or not order.order_line: return self.mycart(**post) - values = website.get_rendering_context({ + values = { 'partner': False, 'order': order - }) + } payment_obj = request.registry.get('portal.payment.acquirer') payment_ids = payment_obj.search(request.cr, SUPERUSER_ID, [('visible', '=', True)]) @@ -418,9 +410,9 @@ class Ecommerce(http.Controller): content = payment_obj.render(request.cr, SUPERUSER_ID, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total) payment._content = content - return website.render("website_sale.payment", values) + return request.webcontext.render("website_sale.payment", values) - @http.route(['/shop/payment_validate/'], type='http', auth="public") + @website.route(['/shop/payment_validate/'], type='http', auth="public") def payment_validate(self, **post): request.httprequest.session['ecommerce_order_id'] = False request.httprequest.session['ecommerce_pricelist'] = False