summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabien Meghazi <fme@openerp.com>2013-09-10 15:41:33 +0200
committerFabien Meghazi <fme@openerp.com>2013-09-10 15:41:33 +0200
commit0e82448ed8adc54a73fd01046e7e5c4225b2bdd4 (patch)
tree736fae67c0e12a1cf70c2bae8a223cde2548652c
parentccb00ddf77d41c3df72397e506d579b50f9ee84a (diff)
[IMP] Refactor code + WIP multiwebsite
bzr revid: fme@openerp.com-20130910134133-esdgbhbtt8eguapk
-rw-r--r--addons/website/controllers/main.py12
-rw-r--r--addons/website/views/views.xml10
-rw-r--r--addons/website/website.py183
-rw-r--r--addons/website/website_data.xml34
-rw-r--r--addons/website_contract/controllers/main.py24
-rw-r--r--addons/website_crm/controllers/main.py4
-rw-r--r--addons/website_crm_partner_assign/controllers/main.py17
-rw-r--r--addons/website_event/controllers/main.py22
-rw-r--r--addons/website_google_map/controllers/main.py6
-rw-r--r--addons/website_hr/controllers/main.py2
-rw-r--r--addons/website_mail/controllers/main.py18
-rw-r--r--addons/website_membership/controllers/main.py9
-rw-r--r--addons/website_project/controllers/main.py15
-rw-r--r--addons/website_sale/controllers/main.py26
-rw-r--r--addons/website_sale/views/website_sale.xml2
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) &gt; 1" class="dropdown">
+ <li t-if="len(website.language_ids) &gt; 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&amp;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&amp;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>