diff options
| author | Fabien Meghazi <fme@openerp.com> | 2013-09-10 15:41:33 +0200 |
|---|---|---|
| committer | Fabien Meghazi <fme@openerp.com> | 2013-09-10 15:41:33 +0200 |
| commit | 0e82448ed8adc54a73fd01046e7e5c4225b2bdd4 (patch) | |
| tree | 736fae67c0e12a1cf70c2bae8a223cde2548652c | |
| parent | ccb00ddf77d41c3df72397e506d579b50f9ee84a (diff) | |
[IMP] Refactor code + WIP multiwebsite
bzr revid: fme@openerp.com-20130910134133-esdgbhbtt8eguapk
| -rw-r--r-- | addons/website/controllers/main.py | 12 | ||||
| -rw-r--r-- | addons/website/views/views.xml | 10 | ||||
| -rw-r--r-- | addons/website/website.py | 183 | ||||
| -rw-r--r-- | addons/website/website_data.xml | 34 | ||||
| -rw-r--r-- | addons/website_contract/controllers/main.py | 24 | ||||
| -rw-r--r-- | addons/website_crm/controllers/main.py | 4 | ||||
| -rw-r--r-- | addons/website_crm_partner_assign/controllers/main.py | 17 | ||||
| -rw-r--r-- | addons/website_event/controllers/main.py | 22 | ||||
| -rw-r--r-- | addons/website_google_map/controllers/main.py | 6 | ||||
| -rw-r--r-- | addons/website_hr/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/website_mail/controllers/main.py | 18 | ||||
| -rw-r--r-- | addons/website_membership/controllers/main.py | 9 | ||||
| -rw-r--r-- | addons/website_project/controllers/main.py | 15 | ||||
| -rw-r--r-- | addons/website_sale/controllers/main.py | 26 | ||||
| -rw-r--r-- | addons/website_sale/views/website_sale.xml | 2 |
15 files changed, 155 insertions, 229 deletions
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 3412d0afbd3..7b9fb9da846 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -105,15 +105,17 @@ class Website(openerp.addons.web.controllers.main.Home): view.write(request.cr, request.uid, [view_id], {'inherit_id': view_option_id}, context=request.context) - return request.webcontext.render('website.themes', {'theme_changed': True}) + return request.website.render('website.themes', {'theme_changed': True}) @website.route('/page/<path:path>', type='http', auth="admin") def page(self, path, **kwargs): - request.webcontext['path'] = path + values = { + 'path': path, + } try: - html = request.webcontext.render(path) + html = request.website.render(path, values) except ValueError: - html = request.webcontext.render('website.404') + html = request.website.render('website.404', values) return html @website.route('/website/customize_template_toggle', type='json', auth='admin') # FIXME: auth @@ -266,6 +268,6 @@ class Website(openerp.addons.web.controllers.main.Home): @website.route(['/website/kanban/'], type='http', auth="public") def kanban(self, **post): - return request.registry['website'].kanban_col(**post) + return request.website.kanban_col(**post) # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/website/views/views.xml b/addons/website/views/views.xml index 1a58c37a313..db8d95b4e9b 100644 --- a/addons/website/views/views.xml +++ b/addons/website/views/views.xml @@ -69,16 +69,16 @@ <ul class="nav navbar-nav navbar-right" id="top_menu"> <li><a href="/page/website.contactus">Contact us</a></li> <li><a href="/admin">Sign in</a></li> - <li t-if="len(lang_list) > 1" class="dropdown"> + <li t-if="len(website.language_ids) > 1" class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#"> <t t-esc="lang_selected['name']"/> <span class="caret"></span> </a> <ul class="dropdown-menu" role="menu"> - <li t-foreach="lang_list" t-as="lg"> + <li t-foreach="website.language_ids" t-as="lg"> <a href="#" role="menuitem"> - <strong t-att-class="'icon-check' if lg['code'] == lang_selected['code'] + <strong t-att-class="'icon-check' if lg.code == lang else 'icon-check-empty'"></strong> - <t t-esc="lg['name']"/> + <t t-esc="lg.name"/> </a> </li> </ul> @@ -584,7 +584,7 @@ <t t-set="step"><t t-esc="step or 0"/></t> <t t-set="scope"><t t-esc="scope or 0"/></t> <t t-set="orderby"><t t-esc="orderby or 'name'"/></t> - <t t-raw="snipped['kanban'](model, domain, column, template, step=step, scope=scope, orderby=orderby)"/> + <t t-raw="website.kanban(model, domain, column, template, step=step, scope=scope, orderby=orderby)"/> </template> <template id="kanban_contain"> diff --git a/addons/website/website.py b/addons/website/website.py index 0be634a403b..1302e2802e0 100644 --- a/addons/website/website.py +++ b/addons/website/website.py @@ -5,7 +5,6 @@ import simplejson import openerp from openerp.osv import osv, fields from openerp.addons.web import http -from openerp.addons.web.controllers import main from openerp.addons.web.http import request import urllib import math @@ -21,10 +20,10 @@ def route(*route_args, **route_kwargs): @http.route(*route_args, **route_kwargs) @functools.wraps(f, assigned=functools.WRAPPER_ASSIGNMENTS + ('func_name',)) def wrap(*args, **kwargs): - if not hasattr(request, 'webcontext'): - request.webcontext = WebContext() - request.context['lang'] = request.webcontext['lang_selected']['code'] - + request.route_lang = None # WIP: decorator will support lang argument + if not hasattr(request, 'website'): + request.website = request.registry['website'].get_current() + request.website.preprocess_request(*args, **kwargs) return f(*args, **kwargs) return wrap return decorator @@ -46,31 +45,15 @@ def urlplus(url, params): url += "%s=%s&" % (k, urllib.quote_plus(str(v))) return url -class WebsiteError(Exception): - pass - -class WebContext(dict): - def __init__(self): - self.website = request.registry.get("website") - lang = request.httprequest.host.split('.')[0] - context = self.website.get_webcontext(lang=lang) - dict.__init__(self, context) - def __getattr__(self, name): - if hasattr(self.website, name): - return getattr(self.website, name) - elif name in self: - return self[name] - else: - raise AttributeError - def render(self, template, values=None): - 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 _description = "Website" + _columns = { + 'name': fields.char('Domain'), + 'company_id': fields.many2one('res.company', string="Company"), + 'language_ids': fields.many2many('res.lang', 'website_lang_rel', 'website_id', 'lang_id', 'Languages'), + 'default_lang_id': fields.many2one('res.lang', string="Default language"), + } public_user = None @@ -80,100 +63,78 @@ class website(osv.osv): self.public_user = request.registry[ref[0]].browse(request.cr, openerp.SUPERUSER_ID, ref[1]) return self.public_user - def get_lang_info(self, lang): - fields = ['id', 'name', 'code', 'website_default'] - lang_obj = request.registry['res.lang'] - languages = lang_obj.search_read( - request.cr, openerp.SUPERUSER_ID, [('website_activated', '=', True)], fields - ) - activated = [lg['code'].lower() for lg in languages] - default = [lg['code'] for lg in languages if lg['website_default']] - default = default[0] if default else None - - # Try to get the language from cookie - lang = lang or request.httprequest.cookies.get('lang', None) - if not lang or lang not in activated: - # Try to get the default language - if default: - lang = default - # Otherwise get the first activated language - elif activated: - lang = activated[0] - # Otherwise the language setup is broken - else: - raise WebsiteError("Could not aquire default language") + def get_lang(self): + website = request.registry['website'].get_current() - return { - 'lang_list': languages, - 'lang_default': default, - 'lang_selected': (lg for lg in languages if lg['code'].lower() == lang.lower()).next(), - } + if hasattr(request, 'route_lang'): + lang = request.route_lang + else: + lang = request.params.get('lang', None) or request.httprequest.cookies.get('lang', None) - def get_webcontext(self, additional_values=None, lang=None): - debug = 'debug' in request.params - is_logged = True - try: - request.session.check_security() - except: # TODO fme: check correct exception - is_logged = False - is_public_user = request.uid == self.get_public_user().id + if lang not in [lg.code for lg in website.language_ids]: + lang = website.default_lang_id.code - values = { - 'debug': debug, + return lang + + def preprocess_request(self, cr, uid, ids, *args, **kwargs): + is_public_user = request.uid == self.get_public_user().id + request.context.update({ 'is_public_user': is_public_user, - 'editable': is_logged and not is_public_user, - 'request': request, - 'registry': request.registry, - 'cr': request.cr, - 'uid': request.uid, - 'host_url': request.httprequest.host_url, - 'res_company': request.registry['res.company'].browse(request.cr, openerp.SUPERUSER_ID, 1), - 'json': simplejson, - 'snipped': { - 'kanban': self.kanban - }, - } - values.update(self.get_lang_info(lang)) + 'editable': not is_public_user, # TODO: check perms + }) + request.context['lang'] = self.get_lang() - if additional_values: - values.update(additional_values) - return values + def get_current(self): + # WIP, currently hard coded + return self.browse(request.cr, request.uid, 1) - def render(self, template, values=None): + def render(self, cr, uid, ids, template, values=None): view = request.registry.get("ir.ui.view") IMD = request.registry.get("ir.model.data") - if not values: + qweb_context = request.context.copy() + + if values is None: values = {} + + values.update({ + 'request': request, + 'registry': request.registry, + 'json': simplejson, + 'website': request.website, + 'res_company': request.website.company_id, + }) + + qweb_context.update(values) context = { - 'inherit_branding': values.get('editable', False), + 'inherit_branding': qweb_context.get('editable', False), } # check if xmlid of the template exists try: model, xmlid = template.split('.', 1) - model, id = IMD.get_object_reference(request.cr, request.uid, model, xmlid) + model, id = IMD.get_object_reference(cr, uid, model, xmlid) except ValueError: logger.error("Website Rendering Error.\n\n%s" % traceback.format_exc()) - return self.render('website.404', values) - + return self.render('website.404', qweb_context) + # render template and catch error try: - return view.render(request.cr, request.uid, template, values, context=context) + return view.render(cr, uid, template, qweb_context, context=context) except (AccessError, AccessDenied), err: logger.error(err) - values['error'] = err[1] + qweb_context['error'] = err[1] logger.warn("Website Rendering Error.\n\n%s" % traceback.format_exc()) - return self.render('website.401', values) + return self.render('website.401', qweb_context) except Exception: - values['traceback'] = traceback.format_exc() - logger.error("Website Rendering Error.\n\n%s" % values['traceback']) - if values['editable']: - return view.render(request.cr, request.uid, 'website.500', values, context=context) + qweb_context['traceback'] = traceback.format_exc() + logger.error("Website Rendering Error.\n\n%s" % qweb_context['traceback']) + if qweb_context['editable']: + return view.render(cr, uid, 'website.500', qweb_context, context=context) else: - return view.render(request.cr, request.uid, 'website.404', values, context=context) + return view.render(cr, uid, 'website.404', qweb_context, context=context) - def pager(self, url, total, page=1, step=30, scope=5, url_args=None): + def pager(self, cr, uid, ids, url, total, page=1, step=30, scope=5, url_args=None): # Compute Pager page_count = int(math.ceil(float(total) / step)) @@ -228,7 +189,7 @@ class website(osv.osv): if xids[view['id']] ] - def kanban(self, model, domain, column, template, step=None, scope=None, orderby=None): + def kanban(self, cr, uid, ids, model, domain, column, template, step=None, scope=None, orderby=None): step = step and int(step) or 10 scope = scope and int(scope) or 5 orderby = orderby or "name" @@ -249,12 +210,12 @@ class website(osv.osv): pages[int(col[0])] = int(col[1]) objects = [] - for group in model_obj.read_group(request.cr, request.uid, domain, ["id", column], groupby=column): + for group in model_obj.read_group(cr, uid, domain, ["id", column], groupby=column): obj = {} # browse column relation_id = group[column][0] - obj['column_id'] = relation_obj.browse(request.cr, request.uid, relation_id) + obj['column_id'] = relation_obj.browse(cr, uid, relation_id) obj['kanban_url'] = kanban_url for k, v in pages.items(): @@ -262,7 +223,7 @@ class website(osv.osv): obj['kanban_url'] += "%s-%s" % (k, v) # pager - number = model_obj.search(request.cr, request.uid, group['__domain'], count=True) + number = model_obj.search(cr, uid, group['__domain'], count=True) obj['page_count'] = int(math.ceil(float(number) / step)) obj['page'] = pages.get(relation_id) or 1 if obj['page'] > obj['page_count']: @@ -278,8 +239,8 @@ class website(osv.osv): obj['orderby'] = orderby # browse objects - object_ids = model_obj.search(request.cr, request.uid, group['__domain'], limit=step, offset=offset, order=orderby) - obj['object_ids'] = model_obj.browse(request.cr, request.uid, object_ids) + object_ids = model_obj.search(cr, uid, group['__domain'], limit=step, offset=offset, order=orderby) + obj['object_ids'] = model_obj.browse(cr, uid, object_ids) objects.append(obj) @@ -288,30 +249,20 @@ class website(osv.osv): 'range': range, 'template': template, } - return request.webcontext.render("website.kanban_contain", values) + return request.website.render("website.kanban_contain", values) - def kanban_col(self, model, domain, page, template, step, orderby): + def kanban_col(self, cr, uid, ids, model, domain, page, template, step, orderby): html = "" model_obj = request.registry[model] domain = safe_eval(domain) step = int(step) offset = (int(page)-1) * step - 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) + object_ids = model_obj.search(cr, uid, domain, limit=step, offset=offset, order=orderby) + object_ids = model_obj.browse(cr, uid, object_ids) for object_id in object_ids: - html += request.webcontext.render(template, {'object_id': object_id}) + html += request.website.render(template, {'object_id': object_id}) return html -class res_lang(osv.osv): - _inherit = "res.lang" - - _columns = { - 'website_activated': fields.boolean('Active on website'), - 'website_default': fields.boolean('Website default language'), - } - - # TODO: on write and create set website_default=False on other records if current is True - class res_partner(osv.osv): _inherit = "res.partner" diff --git a/addons/website/website_data.xml b/addons/website/website_data.xml index 216f6d0ebc3..5a252fb4dbb 100644 --- a/addons/website/website_data.xml +++ b/addons/website/website_data.xml @@ -1,35 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <openerp> - <data> - <record id="res_lang_tree" model="ir.ui.view"> - <field name="name">res.lang.tree website</field> - <field name="model">res.lang</field> - <field name="inherit_id" ref="base.res_lang_tree"/> - <field name="arch" type="xml"> - <field name="active" position="after"> - <field name="website_activated"/> - <field name="website_default"/> - </field> - </field> - </record> - - <record id="res_lang_form" model="ir.ui.view"> - <field name="name">res.lang.form website</field> - <field name="model">res.lang</field> - <field name="inherit_id" ref="base.res_lang_form"/> - <field name="arch" type="xml"> - <field name="active" position="after"> - <field name="website_activated"/> - <field name="website_default"/> - </field> - </field> - </record> - </data> - <data noupdate="1"> - <record id="base.lang_en" model="res.lang"> - <field name="website_activated">True</field> - <field name="website_default">True</field> + <record id="default_website" model="website"> + <field name="name">www.dundermufflin.com</field> + <field name="company_id" ref="base.main_company"/> + <field name="language_ids" eval="[(6, 0, [ ref('base.lang_en')])]"/> + <field name="default_lang_id" ref="base.lang_en"/> </record> <record id="public_user" model="res.users"> diff --git a/addons/website_contract/controllers/main.py b/addons/website_contract/controllers/main.py index da22ad3437e..5b9b82f28cf 100644 --- a/addons/website_contract/controllers/main.py +++ b/addons/website_contract/controllers/main.py @@ -11,7 +11,6 @@ class website_contract(http.Controller): @website.route(['/references/', '/references/page/<int:page>/'], type='http', auth="public") def references(self, page=0, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] account_obj = request.registry['account.analytic.account'] @@ -31,10 +30,10 @@ class website_contract(http.Controller): # public partner profile partner_ids = partner_obj.search( request.cr, openerp.SUPERUSER_ID, - domain + [('website_published', '=', True)], request.context) + domain + [('website_published', '=', True)], context=request.context) google_map_partner_ids = ",".join([str(p) for p in partner_ids]) - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: # search without website_published partner_ids += partner_obj.search(request.cr, request.uid, domain, context=request.context) @@ -49,7 +48,7 @@ class website_contract(http.Controller): countries.insert(0, { 'country_id_count': country_count, 'country_id': ("all", _("All Countries")) - }, context=request.context) + }) if post.get("country", "all") != 'all': partner_ids = partner_obj.search( @@ -60,7 +59,7 @@ class website_contract(http.Controller): ], context=request.context) step = 20 - pager = website.pager(url="/references/", total=len(partner_ids), page=page, step=step, scope=7, url_args=post) + 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) @@ -74,7 +73,7 @@ class website_contract(http.Controller): 'searches': post, 'search_path': "?%s" % urllib.urlencode(post), } - return request.webcontext.render("website_contract.index", values) + return request.website.render("website_contract.index", values) @website.route(['/references/<int:ref_id>/'], type='http', auth="public") def references_ref(self, ref_id=0, **post): @@ -84,12 +83,15 @@ class website_contract(http.Controller): ('website_published', '=', True), ('id', '=', ref_id) ], context=request.context) - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: partner_ids += partner_obj.search( request.cr, request.uid, [('id', '=', ref_id)], context=request.context) - request.webcontext['partner_id'] = partner_obj.browse( - request.cr, openerp.SUPERUSER_ID, partner_ids[0], - dict(request.context + {'show_address': True})) - return request.webcontext.render("website_contract.details") + values = { + 'partner_id': partner_obj.browse( + request.cr, openerp.SUPERUSER_ID, partner_ids[0], + dict(request.context, show_address=True)), + } + + return request.website.render("website_contract.details", values) diff --git a/addons/website_crm/controllers/main.py b/addons/website_crm/controllers/main.py index 3e80f02da8a..11cb62690c0 100644 --- a/addons/website_crm/controllers/main.py +++ b/addons/website_crm/controllers/main.py @@ -13,10 +13,10 @@ class contactus(http.Controller): post['user_id'] = False request.registry['crm.lead'].create(request.cr, request.uid, post, request.context) - company = request.webcontext['res_company'] + company = request.website.company_id 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 request.webcontext.render("website_crm.thanks", values) + return request.website.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 4cad9fc8bc2..4a8a1db349d 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -11,7 +11,6 @@ class website_crm_partner_assign(http.Controller): @website.route(['/partners/', '/partners/page/<int:page>/'], type='http', auth="public") def partners(self, page=0, **post): - website = request.registry['website'] partner_obj = request.registry['res.partner'] def dom_without(without): @@ -66,7 +65,7 @@ class website_crm_partner_assign(http.Controller): }) step = 20 - pager = website.pager(url="/partners/", total=len(partner_ids), page=page, step=step, scope=7, url_args=post) + pager = request.website.pager(url="/partners/", 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)], context=request.context, limit=step, offset=pager['offset'], @@ -83,7 +82,7 @@ class website_crm_partner_assign(http.Controller): 'searches': post, 'search_path': "?%s" % urllib.urlencode(post), } - return request.webcontext.render("website_crm_partner_assign.index", values) + return request.website.render("website_crm_partner_assign.index", values) @website.route(['/partners/<int:ref_id>/'], type='http', auth="public") def partners_ref(self, ref_id=0, **post): @@ -93,13 +92,15 @@ class website_crm_partner_assign(http.Controller): [('website_published', '=', True), ('id', '=', ref_id)], context=request.context) - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: partner_ids += partner_obj.search( request.cr, request.uid, [('id', '=', ref_id)], context=request.context) - request.webcontext['partner_id'] = partner_obj.browse( - request.cr, openerp.SUPERUSER_ID, partner_ids[0], - context=dict(request.context + {'show_address': True})) + values = { + 'partner_id': partner_obj.browse( + request.cr, openerp.SUPERUSER_ID, partner_ids[0], + context=dict(request.context, show_address=True)), + } - return request.webcontext.render("website_crm_partner_assign.details") + return request.website.render("website_crm_partner_assign.details", values) diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index db389952094..a9a9881b7c2 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -18,7 +18,6 @@ class website_event(http.Controller): @website.route(['/event/', '/event/page/<int:page>/'], type='http', auth="public") def events(self, page=1, **searches): - website = request.registry['website'] event_obj = request.registry['event.event'] searches.setdefault('date', 'all') @@ -102,7 +101,7 @@ class website_event(http.Controller): event_count = event_obj.search( request.cr, request.uid, dom_without("none"), count=True, context=request.context) - pager = website.pager(url="/event/", total=event_count, page=page, step=step, scope=5) + pager = request.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", context=request.context) @@ -119,20 +118,19 @@ class website_event(http.Controller): 'search_path': "?%s" % urllib.urlencode(searches), } - return request.webcontext.render("website_event.index", values) + return request.website.render("website_event.index", values) @website.route(['/event/<int:event_id>'], type='http', auth="public") def event(self, event_id=None, **post): event_obj = request.registry['event.event'] values = { - 'event_id': event_obj.browse( - request.cr, request.uid, event_id, - dict(request.context, show_address=1)), + 'event_id': event_obj.browse(request.cr, request.uid, event_id, + dict(request.context, show_address=1)), 'message_ids': event_obj.browse(request.cr, request.uid, event_id, request.context).message_ids, 'subscribe': post.get('subscribe'), 'range': range } - return request.webcontext.render("website_event.detail", values) + return request.website.render("website_event.detail", values) @website.route(['/event/<int:event_id>/add_cart'], type='http', auth="public") def add_cart(self, event_id=None, **post): @@ -140,7 +138,7 @@ class website_event(http.Controller): order_line_obj = request.registry.get('sale.order.line') ticket_obj = request.registry.get('event.event.ticket') - order = request.webcontext['order'] + order = request.context['order'] # FIXME: namespace global rendering vars: website_sale_order if not order: order = website_sale.controllers.main.get_order() @@ -191,8 +189,8 @@ class website_event(http.Controller): event_obj = request.registry['event.event'] user_obj = request.registry['res.users'] - if event_id and 'subscribe' in post and (post.get('email') or not request.webcontext.is_public_user): - if request.webcontext.is_public_user: + if event_id and 'subscribe' in post and (post.get('email') or not request.context['is_public_user']): + if request.context['is_public_user']: partner_ids = partner_obj.search( request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))], context=request.context) @@ -220,8 +218,8 @@ class website_event(http.Controller): event_obj = request.registry['event.event'] user_obj = request.registry['res.users'] - if event_id and 'unsubscribe' in post and (post.get('email') or not request.webcontext.is_public_user): - if request.webcontext.is_public_user: + if event_id and 'unsubscribe' in post and (post.get('email') or not request.context['is_public_user']): + if request.context['is_public_user']: partner_ids = partner_obj.search( request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))], context=request.context) diff --git a/addons/website_google_map/controllers/main.py b/addons/website_google_map/controllers/main.py index 2b6a8eccd06..20b855f44e2 100644 --- a/addons/website_google_map/controllers/main.py +++ b/addons/website_google_map/controllers/main.py @@ -16,7 +16,7 @@ class google_map(http.Controller): 'height': post.get('height', 460), 'partner_url': post.get('partner_url'), } - return request.webcontext.render("website_google_map.google_map", values) + return request.website.render("website_google_map.google_map", values) @website.route(['/google_map/partners.json'], type='http', auth="admin") def google_map_data(self, *arg, **post): @@ -26,7 +26,7 @@ class google_map(http.Controller): domain_public = domain + [('website_published', '=', True)] partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, domain_public, context=request.context) - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: partner_ids += partner_obj.search(request.cr, request.uid, domain, context=request.context) partner_ids = list(set(partner_ids)) @@ -42,7 +42,7 @@ class google_map(http.Controller): latitude = post.get('latitude') and float(post['latitude']) longitude = post.get('longitude') and float(post['longitude']) - if not request.webcontext.is_public_user and partner_id and (latitude or longitude): + if not request.context['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 e2b495dfee0..b1de491745d 100644 --- a/addons/website_hr/controllers/main.py +++ b/addons/website_hr/controllers/main.py @@ -15,4 +15,4 @@ class website_hr(http.Controller): 'employee_ids': hr_obj.browse(request.cr, request.uid, employee_ids, request.context) } - return request.webcontext.render("website.aboutus", values) + return request.website.render("website.aboutus", values) diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 3331be0042f..012ef9c10a8 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -17,7 +17,6 @@ class website_mail(http.Controller): @website.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/', '/blog/page/<int:page>/', '/blog/<int:mail_group_id>/page/<int:page>/', '/blog/<int:mail_group_id>/<int:blog_id>/page/<int:page>/'], type='http', auth="public") def blog(self, mail_group_id=None, blog_id=None, page=0, **post): - website = request.registry['website'] group_obj = request.registry['mail.group'] message_obj = request.registry['mail.message'] user_obj = request.registry['res.users'] @@ -28,10 +27,9 @@ class website_mail(http.Controller): 'nav_list': dict(), 'mail_group_id': mail_group_id, 'subscribe': post.get('subscribe'), - 'website': website, } - if not request.webcontext.is_public_user and mail_group_id: + if not request.context['is_public_user'] and mail_group_id: message_follower_ids = group_obj.read(request.cr, request.uid, [mail_group_id], ['message_follower_ids'], request.context)[0]['message_follower_ids'] parent_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid, request.context).partner_id.id values['subscribe'] = parent_id in message_follower_ids @@ -50,12 +48,12 @@ class website_mail(http.Controller): else: step = 20 message_count = len(group_obj.get_public_message_ids(request.cr, request.uid, domain=domain, order="create_date desc", context=request.context)) - pager = website.pager(url="/blog/%s/" % mail_group_id, total=message_count, page=page, step=step, scope=7) + pager = request.website.pager(url="/blog/%s/" % mail_group_id, total=message_count, page=page, step=step, scope=7) message_ids = group_obj.get_public_message_ids(request.cr, request.uid, domain=domain, order="create_date desc", limit=step, offset=pager['offset'], context=request.context) values['pager'] = pager values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids, request.context) - return request.webcontext.render("website_mail.index", values) + return request.website.render("website_mail.index", values) @website.route(['/blog/nav'], type='http', auth="public") def nav(self, **post): @@ -67,7 +65,7 @@ class website_mail(http.Controller): url = request.httprequest.host_url if post.get('body'): request.session.body = post.get('body') - if request.webcontext.is_public_user: + if request.context['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: @@ -102,8 +100,8 @@ class website_mail(http.Controller): 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 not request.webcontext.is_public_user): - if request.webcontext.is_public_user: + if mail_group_id and 'subscribe' in post and (post.get('email') or not request.context['is_public_user']): + if request.context['is_public_user']: partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))], context=request.context) if not partner_ids: partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": post.get('email'), "name": "Subscribe: %s" % post.get('email')}, request.context)] @@ -120,8 +118,8 @@ class website_mail(http.Controller): 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 not request.webcontext.is_public_user): - if request.webcontext.is_public_user: + if mail_group_id and 'unsubscribe' in post and (post.get('email') or not request.context['is_public_user']): + if request.context['is_public_user']: partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))], context=request.context) else: partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id] diff --git a/addons/website_membership/controllers/main.py b/addons/website_membership/controllers/main.py index a7ebef50414..2b2390e35cf 100644 --- a/addons/website_membership/controllers/main.py +++ b/addons/website_membership/controllers/main.py @@ -11,7 +11,6 @@ class website_crm_partner_assign(http.Controller): @website.route(['/members/', '/members/page/<int:page>/'], type='http', auth="public") def members(self, page=0, **post): - website = request.registry['website'] membership_obj = request.registry['membership.membership_line'] def dom_without(without): @@ -41,7 +40,7 @@ class website_crm_partner_assign(http.Controller): memberships.insert(0, {'membership_id_count': membership_obj.search(request.cr, request.uid, domain, count=True, context=request.context), 'membership_id': ("all", _("All Groups"))}) step = 20 - pager = website.pager(url="/members/", total=len(membership_ids), page=page, step=step, scope=7, url_args=post) + pager = request.website.pager(url="/members/", total=len(membership_ids), page=page, step=step, scope=7, url_args=post) membership_ids = membership_obj.search( request.cr, openerp.SUPERUSER_ID, [('id', 'in', membership_ids)], limit=step, offset=pager['offset'], order="membership_id ASC,date DESC", @@ -55,13 +54,13 @@ class website_crm_partner_assign(http.Controller): 'searches': post, 'search_path': "?%s" % urllib.urlencode(post), } - return request.webcontext.render("website_membership.index", values) + return request.website.render("website_membership.index", values) @website.route(['/members/<int:ref_id>/'], type='http', auth="public") def partners_ref(self, ref_id=0, **post): partner_obj = request.registry['res.partner'] partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)], context=request.context) - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: partner_ids += partner_obj.search(request.cr, request.uid, [('id', '=', ref_id)], context=request.context) values = { @@ -69,4 +68,4 @@ class website_crm_partner_assign(http.Controller): request.cr, openerp.SUPERUSER_ID, partner_ids[0], context=dict(request.context, show_address=True)), } - return request.webcontext.render("website_membership.details", values) + return request.website.render("website_membership.details", values) diff --git a/addons/website_project/controllers/main.py b/addons/website_project/controllers/main.py index 5496ad06503..b7027107abd 100644 --- a/addons/website_project/controllers/main.py +++ b/addons/website_project/controllers/main.py @@ -8,13 +8,14 @@ from openerp.addons.website import website class Website(osv.osv): _inherit = "website" - def get_webcontext(self, values={}, **kw): + def preprocess_request(self, cr, uid, ids, *args, **kwargs): project_obj = request.registry['project.project'] - project_ids = project_obj.search(request.cr, request.uid, [('privacy_visibility', "=", "public")], context=request.context) - values.update({ - 'project_ids': project_obj.browse(request.cr, request.uid, project_ids, request.context), - }) - return super(Website, self).get_webcontext(values, **kw) + project_ids = project_obj.search(cr, uid, [('privacy_visibility', "=", "public")], context=request.context) + + # FIXME: namespace global rendering vars + request.context['project_ids'] = project_obj.browse(cr, uid, project_ids, request.context) + + return super(Website, self).preprocess_request(cr, uid, ids, *args, **kwargs) class website_project(http.Controller): @@ -23,4 +24,4 @@ class website_project(http.Controller): def blog(self, project_id=None, **post): project_obj = request.registry['project.project'] project = project_obj.browse(request.cr, request.uid, project_id, request.context) - return request.webcontext.render("website_project.index", {'project_id': project}) + return request.website.render("website_project.index", {'project_id': project}) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index d36f822d273..39045bda75f 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -41,12 +41,12 @@ def get_current_order(): class Website(osv.osv): _inherit = "website" - def get_webcontext(self, values={}, **kw): - values.update({ - 'order': get_current_order(), + def preprocess_request(self, cr, uid, ids, *args, **kwargs): + request.context.update({ + 'order': get_current_order(), # FIXME: namespace global rendering vars # 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates }) - return super(Website, self).get_webcontext(values, **kw) + return super(Website, self).preprocess_request(cr, uid, ids, *args, **kwargs) class Ecommerce(http.Controller): @@ -61,8 +61,6 @@ class Ecommerce(http.Controller): if 'promo' in post: self.change_pricelist(post.get('promo')) - - website = request.registry['website'] product_obj = request.registry.get('product.template') domain = [("sale_ok", "=", True)] @@ -81,7 +79,7 @@ class Ecommerce(http.Controller): step = 20 product_count = len(product_obj.search(request.cr, request.uid, domain, context=request.context)) - pager = website.pager(url="/shop/category/%s/" % cat_id, total=product_count, page=page, step=step, scope=7, url_args=post) + pager = request.website.pager(url="/shop/category/%s/" % cat_id, total=product_count, page=page, step=step, scope=7, url_args=post) product_ids = product_obj.search(request.cr, request.uid, domain, limit=step, offset=pager['offset'], context=request.context) @@ -94,7 +92,7 @@ class Ecommerce(http.Controller): 'search': post.get("search"), 'pager': pager, } - return request.webcontext.render("website_sale.products", values) + return request.website.render("website_sale.products", values) @website.route(['/shop/product/<product_id>/'], type='http', auth="public") def product(self, cat_id=0, product_id=0, **post): @@ -120,7 +118,7 @@ class Ecommerce(http.Controller): 'category_list': category_list, 'product': product, } - return request.webcontext.render("website_sale.product", values) + return request.website.render("website_sale.product", values) @website.route(['/shop/add_product/', '/shop/category/<cat_id>/add_product/'], type='http', auth="public") def add_product(self, cat_id=0, **post): @@ -243,7 +241,7 @@ class Ecommerce(http.Controller): 'categories': self.get_categories(), 'suggested_products': prod_obj.browse(request.cr, request.uid, suggested_products, request.context), } - return request.webcontext.render("website_sale.mycart", values) + return request.website.render("website_sale.mycart", values) @website.route(['/shop/<path:path>/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): @@ -287,7 +285,7 @@ class Ecommerce(http.Controller): } checkout = {} - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: partner = user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id partner_id = partner.id fields = ["name", "phone", "fax", "company", "email", "street", "city", "state_id", "zip", "country_id"] @@ -309,7 +307,7 @@ class Ecommerce(http.Controller): states_ids = country_state_obj.search(request.cr, SUPERUSER_ID, [(1, "=", 1)], context=request.context) values['states'] = country_state_obj.browse(request.cr, SUPERUSER_ID, states_ids, request.context) - return request.webcontext.render("website_sale.checkout", values) + return request.website.render("website_sale.checkout", values) @website.route(['/shop/confirm_order/'], type='http', auth="public") def confirm_order(self, **post): @@ -356,7 +354,7 @@ class Ecommerce(http.Controller): 'country_id': post['country_id'], 'state_id': post['state_id'], } - if not request.webcontext.is_public_user: + if not request.context['is_public_user']: partner_id = user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id partner_obj.write(request.cr, request.uid, [partner_id], partner_value, request.context) else: @@ -415,7 +413,7 @@ 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 request.webcontext.render("website_sale.payment", values) + return request.website.render("website_sale.payment", values) @website.route(['/shop/payment_validate/'], type='http', auth="public") def payment_validate(self, **post): diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 7633109a3a4..c9d170dd583 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -387,7 +387,7 @@ </div> <form class="col-md-8 form-horizontal" action="/shop/confirm_order/" method="post"> <div class=" row"> - <a t-if="not partner" t-attf-href="/admin#action=redirect&url=#{ host_url }/shop/checkout/" class="btn btn-primary">Log me, I have an account</a> + <a t-if="not partner" t-attf-href="/admin#action=redirect&url=#{ request.httprequest.host_url }/shop/checkout/" class="btn btn-primary">Log me, I have an account</a> <h3 class="col-md-10">Billing Information</h3> <div t-attf-class="form-group #{error.get('name') and 'has-error' or ''}"> <label class="col-lg-3 control-label" for="contact_name">Name and firstname</label> |
