[IMP] Refactoring using `webcontext`

bzr revid: fme@openerp.com-20130904153236-gc78bs8pxeprktkr
This commit is contained in:
Fabien Meghazi 2013-09-04 17:32:36 +02:00
parent 43ca2585c5
commit 6621c1275b
13 changed files with 151 additions and 177 deletions

View File

@ -1,5 +1,5 @@
import controllers import controllers
import res_config import res_config
from website import website import website
import view import view

View File

@ -14,7 +14,7 @@ import werkzeug.wrappers
from PIL import Image from PIL import Image
import openerp 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 import http
from openerp.addons.web.http import request 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 # Completely arbitrary limits
MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768) MAX_IMAGE_WIDTH, MAX_IMAGE_HEIGHT = IMAGE_LIMITS = (1024, 768)
class Website(openerp.addons.web.controllers.main.Home): class Website(openerp.addons.web.controllers.main.Home):
@route('/', type='http', auth="admin") @website.route('/', type='http', auth="admin")
def index(self, **kw): def index(self, **kw):
return self.page("website.homepage") return self.page("website.homepage")
@ -44,7 +44,7 @@ class Website(openerp.addons.web.controllers.main.Home):
return super(Website, self).index(*args, **kw) return super(Website, self).index(*args, **kw)
# FIXME: auth, if /pagenew known anybody can create new empty page # FIXME: auth, if /pagenew known anybody can create new empty page
@route('/pagenew/<path:path>', type='http', auth="admin") @website.route('/pagenew/<path:path>', type='http', auth="admin")
def pagenew(self, path, noredirect=NOPE): def pagenew(self, path, noredirect=NOPE):
if '.' in path: if '.' in path:
module, idname = path.split('.', 1) 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.wrappers.Response(url, mimetype='text/plain')
return werkzeug.utils.redirect(url) 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): def theme_change(self, theme_id=False, **kwargs):
imd = request.registry['ir.model.data'] imd = request.registry['ir.model.data']
view = request.registry['ir.ui.view'] 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_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}) view.write(request.cr, request.uid, [view_id], {'inherit_id':view_option_id})
request.webcontext['theme_changed'] = True return request.webcontext.render('website.themes', {'theme_changed': True})
return request.webcontext.render('website.themes')
@route('/page/<path:path>', type='http', auth="admin") @website.route('/page/<path:path>', type='http', auth="admin")
def page(self, path, **kwargs): def page(self, path, **kwargs):
request.webcontext['path'] = path request.webcontext['path'] = path
try: try:
@ -108,7 +107,7 @@ class Website(openerp.addons.web.controllers.main.Home):
html = request.webcontext.render('website.404') html = request.webcontext.render('website.404')
return html 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): def customize_template_set(self, view_id):
view_obj = request.registry.get("ir.ui.view") view_obj = request.registry.get("ir.ui.view")
view = view_obj.browse(request.cr, request.uid, int(view_id), context=request.context) 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) }, context=request.context)
return True 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): def customize_template_get(self, xml_id):
imd = request.registry['ir.model.data'] imd = request.registry['ir.model.data']
view_model, view_theme_id = imd.get_object_reference(request.cr, request.uid, 'website', 'theme') 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 return result
# # FIXME: auth, anybody can upload an attachment if URL known/found # # 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): def attach(self, func, upload):
req = request.httprequest req = request.httprequest
if req.method != 'POST': if req.method != 'POST':
@ -172,7 +171,7 @@ class Website(openerp.addons.web.controllers.main.Home):
window.parent['%s'](%s, %s); window.parent['%s'](%s, %s);
</script>""" % (func, json.dumps(url), json.dumps(message)) </script>""" % (func, json.dumps(url), json.dumps(message))
@route('/website/attachment/<int:id>', type='http', auth="admin") @website.route('/website/attachment/<int:id>', type='http', auth="admin")
def attachment(self, id): def attachment(self, id):
# TODO: provide actual thumbnails? # TODO: provide actual thumbnails?
# FIXME: can't use Binary.image because auth=user and website attachments need to be public # 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) image.save(response.stream, image.format)
return response return response
@route('/website/image', type='http', auth="public") @website.route('/website/image', type='http', auth="public")
def image(self, model, id, field, **kw): def image(self, model, id, field, **kw):
last_update = '__last_update' last_update = '__last_update'
Model = request.registry[model] Model = request.registry[model]
@ -239,7 +238,7 @@ class Website(openerp.addons.web.controllers.main.Home):
pass pass
return request.make_response(image_data, headers) 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): def publish(self, **post):
_id = int(post['id']) _id = int(post['id'])
_object = request.registry[post['object']] _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" 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): def kanban(self, **post):
return request.registry['website'].kanban_col(**post) return request.registry['website'].kanban_col(**post)

View File

@ -53,7 +53,7 @@ class WebContext(dict):
def __init__(self): def __init__(self):
self.website = request.registry.get("website") self.website = request.registry.get("website")
lang = request.httprequest.host.split('.')[0] 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) dict.__init__(self, context)
def __getattr__(self, name): def __getattr__(self, name):
if hasattr(self.website, name): if hasattr(self.website, name):
@ -63,7 +63,10 @@ class WebContext(dict):
else: else:
raise AttributeError raise AttributeError
def render(self, template, values=None): 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): class website(osv.osv):
_name = "website" # Avoid website.website convention for conciseness (for new api). Got a special authorization from xmo and rco _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(), '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 debug = 'debug' in request.params
is_logged = True is_logged = True
try: try:
@ -280,12 +283,12 @@ class website(osv.osv):
objects.append(obj) objects.append(obj)
values = self.get_rendering_context({ values = {
'objects': objects, 'objects': objects,
'range': range, 'range': range,
'template': template, '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): def kanban_col(self, model, domain, page, template, step, orderby):
html = "" 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.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.browse(request.cr, request.uid, object_ids)
for object_id in 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 return html
class res_lang(osv.osv): class res_lang(osv.osv):

View File

@ -4,11 +4,12 @@ import openerp
from openerp.addons.web import http from openerp.addons.web import http
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
import urllib import urllib
class website_contract(http.Controller): class website_contract(http.Controller):
@http.route(['/references/', '/references/page/<int:page>/'], type='http', auth="public") @website.route(['/references/', '/references/page/<int:page>/'], type='http', auth="public")
def references(self, page=0, **post): def references(self, page=0, **post):
website = request.registry['website'] website = request.registry['website']
partner_obj = request.registry['res.partner'] 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)]) 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]) 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 # search without website_published
partner_ids += partner_obj.search(request.cr, request.uid, domain) partner_ids += partner_obj.search(request.cr, request.uid, domain)
partner_ids = list(set(partner_ids)) 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) 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']) partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('id', 'in', partner_ids)], limit=step, offset=pager['offset'])
values = {
values = website.get_rendering_context({
'countries': countries, 'countries': countries,
'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids), 'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids),
'google_map_partner_ids': google_map_partner_ids, 'google_map_partner_ids': google_map_partner_ids,
'pager': pager, 'pager': pager,
'searches': post, 'searches': post,
'search_path': "?%s" % urllib.urlencode(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/<int:ref_id>/'], type='http', auth="public") @website.route(['/references/<int:ref_id>/'], type='http', auth="public")
def references_ref(self, ref_id=0, **post): def references_ref(self, ref_id=0, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)]) 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)]) 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}), '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)

View File

@ -1,25 +1,21 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import openerp
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
import simplejson from openerp.addons.website import website
import werkzeug.wrappers
from urllib import quote_plus from urllib import quote_plus
class contactus(http.Controller): 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): def contactus(self, *arg, **post):
website = request.registry['website']
post['user_id'] = False post['user_id'] = False
request.registry['crm.lead'].create(request.cr, request.uid, post) request.registry['crm.lead'].create(request.cr, request.uid, post)
values = website.get_rendering_context() company = request.webcontext['res_company']
company = values['res_company'] values = {
values.update({
'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 '')) '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: # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -4,11 +4,12 @@ import openerp
from openerp.addons.web import http from openerp.addons.web import http
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
import urllib import urllib
class website_crm_partner_assign(http.Controller): class website_crm_partner_assign(http.Controller):
@http.route(['/partners/', '/partners/page/<int:page>/'], type='http', auth="public") @website.route(['/partners/', '/partners/page/<int:page>/'], type='http', auth="public")
def partners(self, page=0, **post): def partners(self, page=0, **post):
website = request.registry['website'] website = request.registry['website']
partner_obj = request.registry['res.partner'] 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)], 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") limit=step, offset=pager['offset'], order="grade_id ASC,partner_weight DESC")
values = {
values = website.get_rendering_context({
'countries': countries, 'countries': countries,
'grades': grades, 'grades': grades,
'partner_ids': partner_obj.browse(request.cr, openerp.SUPERUSER_ID, partner_ids), '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, 'pager': pager,
'searches': post, 'searches': post,
'search_path': "?%s" % urllib.urlencode(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/<int:ref_id>/'], type='http', auth="public") @website.route(['/partners/<int:ref_id>/'], type='http', auth="public")
def partners_ref(self, ref_id=0, **post): def partners_ref(self, ref_id=0, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)]) 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)]) 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}), '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)

View File

@ -5,6 +5,7 @@ from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.addons import website_sale from openerp.addons import website_sale
from openerp.addons.website import website
from datetime import datetime from datetime import datetime
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
@ -15,7 +16,7 @@ import werkzeug
class website_event(http.Controller): class website_event(http.Controller):
@http.route(['/event/', '/event/page/<int:page>/'], type='http', auth="public") @website.route(['/event/', '/event/page/<int:page>/'], type='http', auth="public")
def events(self, page=1, **searches): def events(self, page=1, **searches):
website = request.registry['website'] website = request.registry['website']
event_obj = request.registry['event.event'] 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) 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") 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), 'event_ids': event_obj.browse(request.cr, request.uid, obj_ids),
'dates': dates, 'dates': dates,
'types': types, 'types': types,
@ -94,28 +95,26 @@ class website_event(http.Controller):
'pager': pager, 'pager': pager,
'searches': searches, 'searches': searches,
'search_path': "?%s" % urllib.urlencode(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/<int:event_id>'], type='http', auth="public") @website.route(['/event/<int:event_id>'], type='http', auth="public")
def event(self, event_id=None, **post): 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}) event = request.registry['event.event'].browse(request.cr, request.uid, event_id, {'show_address': 1})
values = website.get_rendering_context({ values = {
'event_id': event, 'event_id': event,
'range': range 'range': range
}) }
return website.render("website_event.detail", values) return request.webcontext.render("website_event.detail", values)
@http.route(['/event/<int:event_id>/add_cart'], type='http', auth="public") @website.route(['/event/<int:event_id>/add_cart'], type='http', auth="public")
def add_cart(self, event_id=None, **post): def add_cart(self, event_id=None, **post):
website = request.registry['website']
user_obj = request.registry['res.users'] user_obj = request.registry['res.users']
order_line_obj = request.registry.get('sale.order.line') order_line_obj = request.registry.get('sale.order.line')
ticket_obj = request.registry.get('event.event.ticket') ticket_obj = request.registry.get('event.event.ticket')
order = website.get_rendering_context()['order'] order = request.webcontext['order']
if not order: if not order:
order = website_sale.controllers.main.get_order() order = website_sale.controllers.main.get_order()

View File

@ -3,43 +3,42 @@
import openerp import openerp
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
from datetime import datetime from datetime import datetime
class google_map(http.Controller): 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): def google_map(self, *arg, **post):
website = request.registry['website'] values = {
values = website.get_rendering_context() 'partner_ids': post.get('partner_ids', ""),
values['partner_ids'] = post.get('partner_ids', "") 'width': post.get('width', 900),
values['width'] = post.get('width', 900) 'height': post.get('height', 460),
values['height'] = post.get('height', 460) 'partner_url': post.get('partner_url'),
values['partner_url'] = post.get('partner_url') }
return website.render("website_google_map.google_map", values) 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): def google_map_data(self, *arg, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
domain = [("id", "in", [int(p) for p in post.get('partner_ids', "").split(",") if p])] 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)]) 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 += partner_obj.search(request.cr, request.uid, domain)
partner_ids = list(set(partner_ids)) partner_ids = list(set(partner_ids))
return partner_obj.google_map_json(request.cr, openerp.SUPERUSER_ID, 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): def google_map_set_partner_position(self, *arg, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
partner_id = post.get('partner_id') and int(post['partner_id']) partner_id = post.get('partner_id') and int(post['partner_id'])
latitude = post.get('latitude') and float(post['latitude']) latitude = post.get('latitude') and float(post['latitude'])
longitude = post.get('longitude') and float(post['longitude']) 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 = { values = {
'partner_latitude': latitude, 'partner_latitude': latitude,
'partner_longitude': longitude, 'partner_longitude': longitude,

View File

@ -2,15 +2,15 @@
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
class website_hr(http.Controller): 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): def blog(self, **post):
website = request.registry['website']
hr_obj = request.registry['hr.employee'] hr_obj = request.registry['hr.employee']
employee_ids = hr_obj.search(request.cr, request.uid, [(1, "=", 1)]) 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) 'employee_ids': hr_obj.browse(request.cr, request.uid, employee_ids)
}) }
return website.render("website.aboutus", values) return request.webcontext.render("website.aboutus", values)

View File

@ -3,6 +3,7 @@
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
import werkzeug import werkzeug
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval 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): class website_mail(http.Controller):
@http.route(['/blog/', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/', @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") '/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): def blog(self, mail_group_id=None, blog_id=None, page=0, **post):
website = request.registry['website'] website = request.registry['website']
@ -21,16 +22,16 @@ class website_mail(http.Controller):
message_obj = request.registry['mail.message'] message_obj = request.registry['mail.message']
user_obj = request.registry['res.users'] user_obj = request.registry['res.users']
values = website.get_rendering_context({ values = {
'blog_ids': None, 'blog_ids': None,
'blog_id': None, 'blog_id': None,
'nav_list': dict(), 'nav_list': dict(),
'mail_group_id': mail_group_id, 'mail_group_id': mail_group_id,
'subscribe': post.get('subscribe'), 'subscribe': post.get('subscribe'),
'website': website, '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'] 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 parent_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id
values['subscribe'] = parent_id in message_follower_ids values['subscribe'] = parent_id in message_follower_ids
@ -54,20 +55,20 @@ class website_mail(http.Controller):
values['pager'] = pager values['pager'] = pager
values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids) 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): 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) 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'])) return simplejson.dumps(request.registry['mail.message'].read(request.cr, request.uid, comment_ids, ['website_published', 'subject', 'res_id']))
@http.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public") @website.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public")
def blog_post(self, mail_group_id=None, blog_id=None, **post): def blog_post(self, mail_group_id=None, blog_id=None, **post):
website = request.registry['website'] website = request.registry['website']
url = request.httprequest.host_url url = request.httprequest.host_url
if post.get('body'): if post.get('body'):
request.session.body = 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) 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: if 'body' in request.session and request.session.body:
@ -86,7 +87,7 @@ class website_mail(http.Controller):
else: else:
return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id)) return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
@http.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public") @website.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public")
def new_blog_post(self, mail_group_id=None, **post): 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, blog_id = request.registry['mail.group'].message_post(request.cr, request.uid, mail_group_id,
body=_("Blog content.<br/>Please edit this content then you can publish this blog."), body=_("Blog content.<br/>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)) return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
@http.route(['/blog/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/subscribe'], type='http', auth="public") @website.route(['/blog/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/subscribe'], type='http', auth="public")
def subscribe(self, mail_group_id=None, blog_id=None, **post): def subscribe(self, mail_group_id=None, blog_id=None, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
group_obj = request.registry['mail.group'] group_obj = request.registry['mail.group']
user_obj = request.registry['res.users'] 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 mail_group_id and 'subscribe' in post and (post.get('email') or not request.webcontext.is_public_user):
if request.uid == website.get_public_user().id: if request.webcontext.is_public_user:
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))]) partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
if not partner_ids: if not partner_ids:
partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": post.get('email'), "name": "Subscribe: %s" % post.get('email')})] 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')) return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=post.get('email'))
@http.route(['/blog/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/unsubscribe'], type='http', auth="public") @website.route(['/blog/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/unsubscribe'], type='http', auth="public")
def unsubscribe(self, mail_group_id=None, blog_id=None, **post): def unsubscribe(self, mail_group_id=None, blog_id=None, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
group_obj = request.registry['mail.group'] group_obj = request.registry['mail.group']
user_obj = request.registry['res.users'] 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 mail_group_id and 'unsubscribe' in post and (post.get('email') or not request.webcontext.is_public_user):
if request.uid == website.get_public_user().id: if request.webcontext.is_public_user:
partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))]) partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
else: else:
partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id] 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) 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) return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=None)

View File

@ -4,11 +4,12 @@ import openerp
from openerp.addons.web import http from openerp.addons.web import http
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
import urllib import urllib
class website_crm_partner_assign(http.Controller): class website_crm_partner_assign(http.Controller):
@http.route(['/members/', '/members/page/<int:page>/'], type='http', auth="public") @website.route(['/members/', '/members/page/<int:page>/'], type='http', auth="public")
def members(self, page=0, **post): def members(self, page=0, **post):
website = request.registry['website'] website = request.registry['website']
membership_obj = request.registry['membership.membership_line'] 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") limit=step, offset=pager['offset'], order="membership_id ASC,date DESC")
values = website.get_rendering_context({ values = {
'memberships': memberships, 'memberships': memberships,
'membership_line_ids': membership_obj.browse(request.cr, openerp.SUPERUSER_ID, membership_ids), 'membership_line_ids': membership_obj.browse(request.cr, openerp.SUPERUSER_ID, membership_ids),
'google_map_partner_ids': google_map_partner_ids, 'google_map_partner_ids': google_map_partner_ids,
'pager': pager, 'pager': pager,
'searches': post, 'searches': post,
'search_path': "?%s" % urllib.urlencode(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/<int:ref_id>/'], type='http', auth="public") @website.route(['/members/<int:ref_id>/'], type='http', auth="public")
def partners_ref(self, ref_id=0, **post): def partners_ref(self, ref_id=0, **post):
website = request.registry['website']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
partner_ids = partner_obj.search(request.cr, openerp.SUPERUSER_ID, [('website_published', '=', True), ('id', '=', ref_id)]) 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)]) 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}), '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)

View File

@ -3,31 +3,24 @@
from openerp.osv import osv from openerp.osv import osv
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
class website(osv.osv): class Website(osv.osv):
_inherit = "website" _inherit = "website"
def get_rendering_context(self, additional_values=None, **kw): def get_webcontext(self, values={}, **kw):
project_obj = request.registry['project.project'] project_obj = request.registry['project.project']
project_ids = project_obj.search(request.cr, request.uid, [('privacy_visibility', "=", "public")]) 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), 'project_ids': project_obj.browse(request.cr, request.uid, project_ids),
} })
if additional_values: return super(Website, self).get_webcontext(values, **kw)
values.update(additional_values)
return super(website, self).get_rendering_context(values, **kw)
class website_project(http.Controller): class website_project(http.Controller):
@http.route(['/project/<int:project_id>/'], type='http', auth="public") @website.route(['/project/<int:project_id>/'], type='http', auth="public")
def blog(self, project_id=None, **post): def blog(self, project_id=None, **post):
website = request.registry['website']
project_obj = request.registry['project.project'] project_obj = request.registry['project.project']
project = project_obj.browse(request.cr, request.uid, project_id) project = project_obj.browse(request.cr, request.uid, project_id)
return request.webcontext.render("website_project.index", {'project_id': project})
values = website.get_rendering_context({
'project_id': project,
})
return website.render("website_project.index", values)

View File

@ -4,6 +4,7 @@ from openerp import SUPERUSER_ID
from openerp.osv import osv from openerp.osv import osv
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website import website
import random import random
import werkzeug import werkzeug
import simplejson import simplejson
@ -40,26 +41,24 @@ def get_current_order():
else: else:
return False return False
class website(osv.osv): class Website(osv.osv):
_inherit = "website" _inherit = "website"
def get_rendering_context(self, additional_values=None, **kw): def get_webcontext(self, values={}, **kw):
values = { values.update({
'order': get_current_order(), 'order': get_current_order(),
# 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates # 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates
} })
if additional_values: return super(Website, self).get_webcontext(values, **kw)
values.update(additional_values)
return super(website, self).get_rendering_context(values, **kw)
class Ecommerce(http.Controller): class Ecommerce(http.Controller):
def get_categories(self): def get_categories(self):
category_obj = request.registry.get('product.public.category') category_obj = request.registry.get('product.public.category')
category_ids = category_obj.search(request.cr, SUPERUSER_ID, [('parent_id', '=', False)]) 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) categories = category_obj.browse(request.cr, SUPERUSER_ID, category_ids, context=request.context)
return categories return categories
@http.route(['/shop/', '/shop/category/<cat_id>/', '/shop/category/<cat_id>/page/<int:page>/', '/shop/page/<int:page>/'], type='http', auth="public") @website.route(['/shop/', '/shop/category/<cat_id>/', '/shop/category/<cat_id>/page/<int:page>/', '/shop/page/<int:page>/'], type='http', auth="public")
def category(self, cat_id=0, page=0, **post): def category(self, cat_id=0, page=0, **post):
if 'promo' in post: if 'promo' in post:
@ -90,23 +89,21 @@ class Ecommerce(http.Controller):
context = {'pricelist': self.get_pricelist()} context = {'pricelist': self.get_pricelist()}
values = website.get_rendering_context({ values = {
'categories': self.get_categories(), 'categories': self.get_categories(),
'category_id': cat_id, 'category_id': cat_id,
'products': product_obj.browse(request.cr, SUPERUSER_ID, product_ids, context=context), 'products': product_obj.browse(request.cr, SUPERUSER_ID, product_ids, context=context),
'search': post.get("search"), 'search': post.get("search"),
'pager': pager, 'pager': pager,
}) }
return website.render("website_sale.products", values) return request.webcontext.render("website_sale.products", values)
@http.route(['/shop/product/<product_id>/'], type='http', auth="public") @website.route(['/shop/product/<product_id>/'], type='http', auth="public")
def product(self, cat_id=0, product_id=0, **post): def product(self, cat_id=0, product_id=0, **post):
if 'promo' in post: if 'promo' in post:
self.change_pricelist(post.get('promo')) self.change_pricelist(post.get('promo'))
website = request.registry['website']
product_id = product_id and int(product_id) or 0 product_id = product_id and int(product_id) or 0
product_obj = request.registry.get('product.template') product_obj = request.registry.get('product.template')
category_obj = request.registry.get('product.public.category') 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]) category_list = sorted(category_list, key=lambda category: category[1])
product = product_obj.browse(request.cr, request.uid, product_id, context=context) 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, 'category_id': post.get('category_id') and int(post.get('category_id')) or None,
'search': post.get("search"), 'search': post.get("search"),
'categories': self.get_categories(), 'categories': self.get_categories(),
'category_list': category_list, 'category_list': category_list,
'product': product, '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): def add_product(self, **post):
product_id = request.registry.get('product.product').create(request.cr, request.uid, {'name': 'New Product'}) product_id = request.registry.get('product.product').create(request.cr, request.uid, {'name': 'New Product'})
return werkzeug.utils.redirect("/shop/product/%s/" % product_id) return werkzeug.utils.redirect("/shop/product/%s/" % product_id)
@http.route(['/shop/change_category/<product_id>/'], type='http', auth="public") @website.route(['/shop/change_category/<product_id>/'], type='http', auth="public")
def edit_product(self, product_id=0, **post): 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))}) 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" return "1"
@ -221,10 +218,9 @@ class Ecommerce(http.Controller):
return [quantity, order.get_total_quantity()] 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): def mycart(self, **post):
order = get_current_order() order = get_current_order()
website = request.registry['website']
prod_obj = request.registry.get('product.product') prod_obj = request.registry.get('product.product')
if 'promo' in post: if 'promo' in post:
@ -241,13 +237,13 @@ class Ecommerce(http.Controller):
index = random.randrange(0, len(suggested_ids)) index = random.randrange(0, len(suggested_ids))
suggested_products.append(suggested_ids.pop(index)) suggested_products.append(suggested_ids.pop(index))
values = website.get_rendering_context({ values = {
'categories': self.get_categories(), 'categories': self.get_categories(),
'suggested_products': prod_obj.browse(request.cr, request.uid, suggested_products), '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/<path:path>/add_cart/', '/shop/add_cart/'], type='http', auth="public") @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): 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)) quantity = self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1))
if json: if json:
@ -257,11 +253,11 @@ class Ecommerce(http.Controller):
else: else:
return werkzeug.utils.redirect("/shop/") return werkzeug.utils.redirect("/shop/")
@http.route(['/shop/remove_cart/', '/shop/<path:path>/remove_cart/'], type='http', auth="public") @website.route(['/shop/remove_cart/', '/shop/<path:path>/remove_cart/'], type='http', auth="public")
def remove_cart(self, path=None, product_id=None, order_line_id=None, json=None): 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) 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/<path:path>/set_cart/'], type='http', auth="public") @website.route(['/shop/set_cart/', '/shop/<path:path>/set_cart/'], type='http', auth="public")
def set_cart(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None): 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) quantity = self.add_product_to_cart(product_id=product_id, order_line_id=order_line_id, set_number=set_number)
if json: if json:
@ -271,10 +267,8 @@ class Ecommerce(http.Controller):
else: else:
return werkzeug.utils.redirect("/shop/") 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): def checkout(self, **post):
website = request.registry['website']
order = get_current_order() order = get_current_order()
if order.state != 'draft' or not order.order_line: 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_obj = request.registry.get('res.country')
country_state_obj = request.registry.get('res.country.state') country_state_obj = request.registry.get('res.country.state')
values = website.get_rendering_context({ values = {
'shipping': post.get("shipping"), 'shipping': post.get("shipping"),
'error': post.get("error") and dict.fromkeys(post.get("error").split(","), 'error') or {} 'error': post.get("error") and dict.fromkeys(post.get("error").split(","), 'error') or {}
}) }
checkout = {} 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 = user_obj.browse(request.cr, request.uid, request.uid).partner_id
partner_id = partner.id partner_id = partner.id
fields = ["name", "phone", "fax", "company", "email", "street", "city", "state_id", "zip", "country_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['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)])) 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): def confirm_order(self, **post):
website = request.registry['website']
order = get_current_order() order = get_current_order()
error = [] error = []
@ -359,7 +352,7 @@ class Ecommerce(http.Controller):
'country_id': post['country_id'], 'country_id': post['country_id'],
'state_id': post['state_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_id = user_obj.browse(request.cr, request.uid, request.uid).partner_id.id
partner_obj.write(request.cr, request.uid, [partner_id], partner_value) partner_obj.write(request.cr, request.uid, [partner_id], partner_value)
else: else:
@ -398,18 +391,17 @@ class Ecommerce(http.Controller):
return werkzeug.utils.redirect("/shop/payment/") 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): def payment(self, **post):
website = request.registry['website']
order = get_current_order() order = get_current_order()
if not order or not order.order_line: if not order or not order.order_line:
return self.mycart(**post) return self.mycart(**post)
values = website.get_rendering_context({ values = {
'partner': False, 'partner': False,
'order': order 'order': order
}) }
payment_obj = request.registry.get('portal.payment.acquirer') payment_obj = request.registry.get('portal.payment.acquirer')
payment_ids = payment_obj.search(request.cr, SUPERUSER_ID, [('visible', '=', True)]) 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) content = payment_obj.render(request.cr, SUPERUSER_ID, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total)
payment._content = content 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): def payment_validate(self, **post):
request.httprequest.session['ecommerce_order_id'] = False request.httprequest.session['ecommerce_order_id'] = False
request.httprequest.session['ecommerce_pricelist'] = False request.httprequest.session['ecommerce_pricelist'] = False