[ADD] Added website osv object + refactoring

bzr revid: fme@openerp.com-20130805161600-abms35e0vk47f3i1
This commit is contained in:
Fabien Meghazi 2013-08-05 18:16:00 +02:00
parent 81d707978e
commit af08367290
8 changed files with 135 additions and 164 deletions

View File

@ -17,30 +17,6 @@ import werkzeug.wrappers
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def template_values():
script = "\n".join(['<script type="text/javascript" src="%s"></script>' % i for i in manifest_list('js', db=request.db)])
css = "\n".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=request.db))
try:
request.session.check_security()
loggued = True
uid = request.session._uid
except http.SessionExpiredException:
loggued = False
uid = openerp.SUPERUSER_ID
values = {
'loggued': loggued,
'editable': loggued,
'request': request,
'registry': request.registry,
'cr': request.cr,
'uid': uid,
'script': script,
'css': css,
'host_url': request.httprequest.host_url,
}
return values
class Website(openerp.addons.web.controllers.main.Home): class Website(openerp.addons.web.controllers.main.Home):
@http.route('/', type='http', auth="admin") @http.route('/', type='http', auth="admin")
def index(self, **kw): def index(self, **kw):
@ -52,13 +28,11 @@ class Website(openerp.addons.web.controllers.main.Home):
@http.route('/pagenew/<path:path>', type='http', auth="admin") @http.route('/pagenew/<path:path>', type='http', auth="admin")
def pagenew(self, path): def pagenew(self, path):
values = template_values()
uid = values['uid']
imd = request.registry['ir.model.data'] imd = request.registry['ir.model.data']
view = request.registry['ir.ui.view'] view = request.registry['ir.ui.view']
view_model, view_id = imd.get_object_reference(request.cr, uid, 'website', 'default_page') view_model, view_id = imd.get_object_reference(request.cr, request.uid, 'website', 'default_page')
newview_id = view.copy(request.cr, uid, view_id) newview_id = view.copy(request.cr, request.uid, view_id)
newview = view.browse(request.cr, uid, newview_id, context={}) newview = view.browse(request.cr, request.uid, newview_id, context={})
newview.write({ newview.write({
'arch': newview.arch.replace("website.default_page", path), 'arch': newview.arch.replace("website.default_page", path),
'name': "page/%s" % path 'name': "page/%s" % path
@ -68,7 +42,7 @@ class Website(openerp.addons.web.controllers.main.Home):
else: else:
module = False module = False
idname = path idname = path
imd.create(request.cr, uid, { imd.create(request.cr, request.uid, {
'name': idname, 'name': idname,
'module': module, 'module': module,
'model': 'ir.ui.view', 'model': 'ir.ui.view',
@ -79,29 +53,14 @@ class Website(openerp.addons.web.controllers.main.Home):
@http.route('/page/<path:path>', type='http', auth="admin") @http.route('/page/<path:path>', type='http', auth="admin")
def page(self, path): def page(self, path):
#def get_html_head(): website = request.registry.get("website")
# head += ['<link rel="stylesheet" href="%s">' % i for i in manifest_list('css', db=request.db)] values = website.get_rendering_context({
#modules = request.registry.get("ir.module.module").search_read(request.cr, openerp.SUPERUSER_ID, fields=['id', 'shortdesc', 'summary', 'icon_image'], limit=50) 'path': path
values = template_values() })
uid = values['uid']
context = {
'inherit_branding': values['editable'],
}
company = request.registry['res.company'].browse(request.cr, uid, 1, context=context)
values.update(
res_company=company,
path=path,
google_map_url="http://maps.googleapis.com/maps/api/staticmap?" + urllib.urlencode({
'center': '%s, %s %s, %s' % (company.street, company.city, company.zip, company.country_id and company.country_id.name_get()[0][1] or ''),
'sensor': 'false',
'zoom': '8',
'size': '298x298',
}),
)
try: try:
html = request.registry.get("ir.ui.view").render(request.cr, uid, path, values, context) html = website.render(path, values)
except ValueError, e: except ValueError:
html = request.registry.get("ir.ui.view").render(request.cr, uid, 'website.404', values, context) html = website.render('website.404', values)
return html return html
@http.route('/website/attach', type='http', auth='admin') # FIXME: auth @http.route('/website/attach', type='http', auth='admin') # FIXME: auth

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import openerp import openerp
from openerp.osv import osv
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.web.controllers import main from openerp.addons.web.controllers import main
from openerp.addons.web.http import request from openerp.addons.web.http import request
@ -18,22 +19,36 @@ def auth_method_public():
http.auth_methods['public'] = auth_method_public http.auth_methods['public'] = auth_method_public
class website(object): class website(osv.osv):
def render(self, template, add_values={}): _name = "website" # Avoid website.website convention for conciseness (for new api). Got a special authorization from xmo and rco
_description = "Website"
def get_rendering_context(self, additional_values=None):
debug = 'debug' in request.params debug = 'debug' in request.params
script = "\n".join(['<script type="text/javascript" src="%s"></script>' % i for i in main.manifest_list('js', db=request.db, debug=debug)]) editable = False
css = "\n".join('<link rel="stylesheet" href="%s">' % i for i in main.manifest_list('css', db=request.db, debug=debug)) if request.uid or (request.public_uid and request.uid != request.public_uid):
_values = { editable = True
'editable': request.uid != request.public_uid, values = {
'debug': debug,
'editable': editable,
'request': request, 'request': request,
'registry': request.registry, 'registry': request.registry,
'cr': request.cr, 'cr': request.cr,
'uid': request.uid, 'uid': request.uid,
'script': script,
'css': css,
'host_url': request.httprequest.host_url, 'host_url': request.httprequest.host_url,
'res_company': request.registry['res.company'].browse(request.cr, openerp.SUPERUSER_ID, 1), 'res_company': request.registry['res.company'].browse(request.cr, openerp.SUPERUSER_ID, 1),
} }
_values.update(add_values) if editable:
return request.registry.get("ir.ui.view").render(request.cr, request.uid, template, _values) values.update({
website = website() 'script': "\n".join(['<script type="text/javascript" src="%s"></script>' % i for i in main.manifest_list('js', db=request.db, debug=debug)]),
'css': "\n".join('<link rel="stylesheet" href="%s">' % i for i in main.manifest_list('css', db=request.db, debug=debug))
})
if additional_values:
values.update(additional_values)
return values
def render(self, template, values={}):
# context = {
# 'inherit_branding': values['editable'],
# }
return request.registry.get("ir.ui.view").render(request.cr, request.uid, template, values)

View File

@ -1,9 +1,7 @@
# -*- 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
from openerp.addons.website.controllers.main import template_values
from urllib import quote_plus from urllib import quote_plus
@ -11,16 +9,14 @@ class contactus(http.Controller):
@http.route(['/crm/contactus'], type='http', auth="admin") @http.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 = template_values() values = website.get_rendering_context()
company = request.registry['res.company'].browse(request.cr, request.uid, 1) company = values['res_company']
values.update({ values.update({
'res_company': company,
'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 ''))
}) })
html = request.registry.get("ir.ui.view").render(request.cr, request.uid, "website_crm.thanks", values) return website.render("website_crm.thanks", values)
return html
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,9 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
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
from openerp.tools.translate import _ from openerp.tools.translate import _
from datetime import datetime from datetime import datetime
@ -13,10 +11,11 @@ import urllib
import werkzeug import werkzeug
class website_hr(http.Controller): class website_event(http.Controller):
@http.route(['/event'], type='http', auth="public") @http.route(['/event'], type='http', auth="public")
def events(self, **searches): def events(self, **searches):
website = request.registry['website']
event_obj = request.registry['event.event'] event_obj = request.registry['event.event']
searches.setdefault('date', 'all') searches.setdefault('date', 'all')
@ -83,27 +82,26 @@ class website_hr(http.Controller):
obj_ids = event_obj.search(request.cr, request.uid, dom_without("none"), order="date_begin DESC") obj_ids = event_obj.search(request.cr, request.uid, dom_without("none"), order="date_begin DESC")
values = { values = website.get_rendering_context({
'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,
'countries': countries, 'countries': countries,
'searches': searches, 'searches': searches,
'search_path': "?%s" % urllib.urlencode(searches), 'search_path': "?%s" % urllib.urlencode(searches),
} })
html = website.render("website_event.index", values) return website.render("website_event.index", values)
return html
@http.route(['/event/<int:event_id>'], type='http', auth="public") @http.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) event = request.registry['event.event'].browse(request.cr, request.uid, event_id)
values = { values = website.get_rendering_context({
'event_id': event, 'event_id': event,
'google_map_url': "http://maps.googleapis.com/maps/api/staticmap?center=%s&sensor=false&zoom=12&size=298x298" % urllib.quote_plus('%s, %s %s, %s' % (event.street, event.city, event.zip, event.country_id and event.country_id.name_get()[0][1] or '')) 'google_map_url': "http://maps.googleapis.com/maps/api/staticmap?center=%s&sensor=false&zoom=12&size=298x298" % urllib.quote_plus('%s, %s %s, %s' % (event.street, event.city, event.zip, event.country_id and event.country_id.name_get()[0][1] or ''))
} })
html = website.render("website_event.detail", values) return website.render("website_event.detail", values)
return html
@http.route(['/event/<int:event_id>/add_cart'], type='http', auth="public") @http.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):

View File

@ -2,21 +2,18 @@
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(['/hr'], type='http', auth="public") @http.route(['/hr'], 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 = { values = website.get_rendering_context({
'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_hr.index", values)
html = website.render("website_hr.index", values)
return html
@http.route(['/hr/publish'], type='http', auth="public") @http.route(['/hr/publish'], type='http', auth="public")
def publish(self, **post): def publish(self, **post):

View File

@ -2,7 +2,6 @@
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
@ -15,17 +14,18 @@ class website_mail(http.Controller):
@http.route(['/blog', '/blog/<int:mail_group_id>', '/blog/<int:mail_group_id>/<int:blog_id>'], type='http', auth="public") @http.route(['/blog', '/blog/<int:mail_group_id>', '/blog/<int:mail_group_id>/<int:blog_id>'], type='http', auth="public")
def blog(self, mail_group_id=None, blog_id=None, **post): def blog(self, mail_group_id=None, blog_id=None, **post):
website = request.registry['website']
group_obj = request.registry['mail.group'] group_obj = request.registry['mail.group']
message_obj = request.registry['mail.message'] message_obj = request.registry['mail.message']
values = { values = website.get_rendering_context({
'blog_ids': None, 'blog_ids': None,
'blog_id': None, 'blog_id': None,
'nav_list': dict(), 'nav_list': dict(),
'prev_date': None, 'prev_date': None,
'next_date': None, 'next_date': None,
'mail_group_id': mail_group_id, 'mail_group_id': mail_group_id,
} })
domain = mail_group_id and [("res_id", "=", mail_group_id)] or [] domain = mail_group_id and [("res_id", "=", mail_group_id)] or []
for group in message_obj.read_group(request.cr, request.uid, domain + group_obj.get_public_blog(request.cr, request.uid), ['subject', 'date'], groupby="date", orderby="create_date asc"): for group in message_obj.read_group(request.cr, request.uid, domain + group_obj.get_public_blog(request.cr, request.uid), ['subject', 'date'], groupby="date", orderby="create_date asc"):
@ -50,8 +50,7 @@ class website_mail(http.Controller):
if blog_id: if blog_id:
values['blog_id'] = message_obj.browse(request.cr, request.uid, blog_id) values['blog_id'] = message_obj.browse(request.cr, request.uid, blog_id)
html = website.render("website_mail.index", values) return website.render("website_mail.index", values)
return html
@http.route(['/blog/nav'], type='http', auth="public") @http.route(['/blog/nav'], type='http', auth="public")
def nav(self, **post): def nav(self, **post):

View File

@ -2,54 +2,57 @@
import openerp import openerp
import simplejson import simplejson
from openerp.osv import osv
from openerp.addons.web import http from openerp.addons.web import http
from openerp.addons.website import website
from openerp.addons.web.http import request from openerp.addons.web.http import request
def get_order(order_id=None):
order_obj = request.registry.get('sale.order')
# check if order allready exists
if order_id:
try:
order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id).pricelist_id
except:
order_id = None
if not order_id:
fields = [k for k, v in order_obj._columns.items()]
order_value = order_obj.default_get(request.cr, openerp.SUPERUSER_ID, fields)
order_value['partner_id'] = openerp.SUPERUSER_ID != request.public_uid and \
request.registry.get('res.users').browse(request.cr, openerp.SUPERUSER_ID, request.uid).partner_id.id or \
None
order_value.update(order_obj.onchange_partner_id(request.cr, openerp.SUPERUSER_ID, [], request.uid, context={})['value'])
order_id = order_obj.create(request.cr, openerp.SUPERUSER_ID, order_value)
return order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id)
def get_current_order():
order = get_order(request.httprequest.session.get('ecommerce_order_id'))
request.httprequest.session['ecommerce_order_id'] = order.id
return order
def get_categories():
category_obj = request.registry.get('pos.category')
category_ids = category_obj.search(request.cr, openerp.SUPERUSER_ID, [('parent_id', '=', False)])
return category_obj.browse(request.cr, openerp.SUPERUSER_ID, category_ids)
class website(osv.osv):
_inherit = "website"
def get_rendering_context(self, additional_values=None):
values = {
'website_sale_get_categories': get_categories,
'order': get_current_order(),
# 'website_sale_get_current_order': get_current_order, # TODO: replace 'order' key in templates
}
if additional_values:
values.update(additional_values)
return super(website, self).get_rendering_context(values)
class Ecommerce(http.Controller): class Ecommerce(http.Controller):
def get_categories(self):
category_obj = request.registry.get('pos.category')
category_ids = category_obj.search(request.cr, openerp.SUPERUSER_ID, [('parent_id', '=', False)])
return category_obj.browse(request.cr, openerp.SUPERUSER_ID, category_ids)
def get_current_order(self):
order = self.get_order(request.httprequest.session.get('ecommerce_order_id'))
request.httprequest.session['ecommerce_order_id'] = order.id
return order
def get_order(self, order_id=None):
order_obj = request.registry.get('sale.order')
# check if order allready exists
if order_id:
try:
order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id).pricelist_id
except:
order_id = None
if not order_id:
fields = [k for k, v in order_obj._columns.items()]
order_value = order_obj.default_get(request.cr, openerp.SUPERUSER_ID, fields)
order_value['partner_id'] = openerp.SUPERUSER_ID != request.public_uid and \
request.registry.get('res.users').browse(request.cr, openerp.SUPERUSER_ID, request.uid).partner_id.id or \
None
order_value.update(order_obj.onchange_partner_id(request.cr, openerp.SUPERUSER_ID, [], request.uid, context={})['value'])
order_id = order_obj.create(request.cr, openerp.SUPERUSER_ID, order_value)
return order_obj.browse(request.cr, openerp.SUPERUSER_ID, order_id)
def render(self, template, values={}):
_values = {
'order': self.get_current_order(),
'categories': self.get_categories(),
}
_values.update(values)
return website.render(template, _values)
def recommended_product(self, my_pids): def recommended_product(self, my_pids):
if not my_pids: if not my_pids:
return [] return []
my_pids = str(my_pids)[1:-1] my_pids = str(my_pids)[1:-1]
product_ids = [] product_ids = []
query = """ query = """
@ -70,6 +73,7 @@ class Ecommerce(http.Controller):
@http.route(['/shop', '/shop/category/<cat_id>'], type='http', auth="public") @http.route(['/shop', '/shop/category/<cat_id>'], type='http', auth="public")
def category(self, cat_id=0, offset=0, **post): def category(self, cat_id=0, offset=0, **post):
website = request.registry['website']
domain = [("sale_ok", "=", True)] domain = [("sale_ok", "=", True)]
if post.get("search"): if post.get("search"):
@ -81,17 +85,17 @@ class Ecommerce(http.Controller):
product_obj = request.registry.get('product.product') product_obj = request.registry.get('product.product')
product_ids = product_obj.search(request.cr, request.uid, domain, limit=20, offset=offset) product_ids = product_obj.search(request.cr, request.uid, domain, limit=20, offset=offset)
values = { values = website.get_rendering_context({
'current_category': cat_id, 'current_category': cat_id,
'products': product_obj.browse(request.cr, request.uid, product_ids), 'products': product_obj.browse(request.cr, request.uid, product_ids),
'search': post.get("search"), 'search': post.get("search"),
} })
html = self.render("website_sale.products", values) return website.render("website_sale.products", values)
return html
@http.route(['/shop/product/<product_id>'], type='http', auth="public") @http.route(['/shop/product/<product_id>'], type='http', auth="public")
def product(self, cat_id=0, product_id=0): def product(self, cat_id=0, product_id=0):
order = self.get_current_order() website = request.registry['website']
order = get_current_order()
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.product') product_obj = request.registry.get('product.product')
@ -99,17 +103,17 @@ class Ecommerce(http.Controller):
line = [line for line in order.order_line if line.product_id.id == product_id] line = [line for line in order.order_line if line.product_id.id == product_id]
quantity = line and int(line[0].product_uom_qty) or 0 quantity = line and int(line[0].product_uom_qty) or 0
values = { values = website.get_rendering_context({
'product': product_obj.browse(request.cr, request.uid, product_id), 'product': product_obj.browse(request.cr, request.uid, product_id),
'quantity': quantity, 'quantity': quantity,
'recommended_products': self.recommended_product([product_id]), 'recommended_products': self.recommended_product([product_id]),
} })
html = self.render("website_sale.product", values) return website.render("website_sale.product", values)
return html
@http.route(['/shop/mycart'], type='http', auth="public") @http.route(['/shop/mycart'], type='http', auth="public")
def mycart(self, **post): def mycart(self, **post):
order = self.get_current_order() website = request.registry['website']
order = get_current_order()
if post.get('code'): if post.get('code'):
pricelist_obj = request.registry.get('product.pricelist') pricelist_obj = request.registry.get('product.pricelist')
@ -118,14 +122,16 @@ class Ecommerce(http.Controller):
order.write({'pricelist_id': pricelist_ids[0]}) order.write({'pricelist_id': pricelist_ids[0]})
my_pids = [line.product_id.id for line in order.order_line] my_pids = [line.product_id.id for line in order.order_line]
values= {"recommended_products": self.recommended_product(my_pids)} values = website.get_rendering_context({
"recommended_products": self.recommended_product(my_pids)
})
html = self.render("website_sale.mycart", values) return website.render("website_sale.mycart", values)
return html
@http.route(['/shop/add_cart'], type='http', auth="public") @http.route(['/shop/add_cart'], type='http', auth="public")
def add_cart(self, product_id=0, remove=False): def add_cart(self, product_id=0, remove=False):
website = request.registry['website']
values = website.get_rendering_context()
context = {} context = {}
order_obj = request.registry.get('sale.order') order_obj = request.registry.get('sale.order')
@ -133,13 +139,12 @@ class Ecommerce(http.Controller):
user_obj = request.registry.get('res.users') user_obj = request.registry.get('res.users')
product_id = product_id and int(product_id) or 0 product_id = product_id and int(product_id) or 0
order = self.get_current_order() order = get_current_order()
quantity = 0 quantity = 0
# values initialisation # values initialisation
order_line_ids = order_line_obj.search(request.cr, openerp.SUPERUSER_ID, [('order_id', '=', order.id), ('product_id', '=', product_id)], context=context) order_line_ids = order_line_obj.search(request.cr, openerp.SUPERUSER_ID, [('order_id', '=', order.id), ('product_id', '=', product_id)], context=context)
values = {}
if order_line_ids: if order_line_ids:
order_line = order_line_obj.read(request.cr, openerp.SUPERUSER_ID, order_line_ids, [], context=context)[0] order_line = order_line_obj.read(request.cr, openerp.SUPERUSER_ID, order_line_ids, [], context=context)[0]
quantity = order_line['product_uom_qty'] + (remove and -1 or 1) quantity = order_line['product_uom_qty'] + (remove and -1 or 1)
@ -165,8 +170,7 @@ class Ecommerce(http.Controller):
order_line_id = order_line_obj.create(request.cr, openerp.SUPERUSER_ID, values, context=context) order_line_id = order_line_obj.create(request.cr, openerp.SUPERUSER_ID, values, context=context)
order.write({'order_line': [(4, order_line_id)]}, context=context) order.write({'order_line': [(4, order_line_id)]}, context=context)
html = self.render("website_sale.total") html = website.render("website_sale.total", values)
return simplejson.dumps({"quantity": quantity, "totalHTML": html}) return simplejson.dumps({"quantity": quantity, "totalHTML": html})
@http.route(['/shop/remove_cart'], type='http', auth="public") @http.route(['/shop/remove_cart'], type='http', auth="public")
@ -175,7 +179,11 @@ class Ecommerce(http.Controller):
@http.route(['/shop/checkout'], type='http', auth="public") @http.route(['/shop/checkout'], type='http', auth="public")
def checkout(self, **post): def checkout(self, **post):
order = self.get_current_order() website = request.registry['website']
values = website.get_rendering_context({
'partner': False
})
order = get_current_order()
if order.state != 'draft': if order.state != 'draft':
return self.confirmed(**post) return self.confirmed(**post)
@ -188,7 +196,6 @@ class Ecommerce(http.Controller):
country_state_obj = request.registry.get('res.country.state') country_state_obj = request.registry.get('res.country.state')
payment_obj = request.registry.get('portal.payment.acquirer') payment_obj = request.registry.get('portal.payment.acquirer')
values = {'partner': False}
if request.uid != request.public_uid: if request.uid != request.public_uid:
values['partner'] = user_obj.browse(request.cr, request.uid, request.uid).partner_id values['partner'] = user_obj.browse(request.cr, request.uid, request.uid).partner_id
@ -206,12 +213,12 @@ class Ecommerce(http.Controller):
content = payment_obj.render(request.cr, openerp.SUPERUSER_ID, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total) content = payment_obj.render(request.cr, openerp.SUPERUSER_ID, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total)
payment._content = content payment._content = content
return self.render("website_sale.checkout", values) return website.render("website_sale.checkout", values)
@http.route(['/shop/confirm_order'], type='http', auth="public") @http.route(['/shop/confirm_order'], type='http', auth="public")
def confirm_order(self, **post): def confirm_order(self, **post):
order = self.get_current_order() order = get_current_order()
json = {'error': [], 'validation': False} json = {'error': [], 'validation': False}
partner_obj = request.registry.get('res.partner') partner_obj = request.registry.get('res.partner')
user_obj = request.registry.get('res.users') user_obj = request.registry.get('res.users')
@ -296,23 +303,23 @@ class Ecommerce(http.Controller):
@http.route(['/shop/confirmed'], type='http', auth="public") @http.route(['/shop/confirmed'], type='http', auth="public")
def confirmed(self, **post): def confirmed(self, **post):
website = request.registry['website']
if request.httprequest.session.get('ecommerce_order_id'): if request.httprequest.session.get('ecommerce_order_id'):
order = self.get_current_order() order = get_current_order()
if order.state != 'draft': if order.state != 'draft':
request.httprequest.session['ecommerce_order_id_old'] = order.id request.httprequest.session['ecommerce_order_id_old'] = order.id
request.httprequest.session['ecommerce_order_id'] = None request.httprequest.session['ecommerce_order_id'] = None
order_old = self.get_order(request.httprequest.session.get('ecommerce_order_id_old')) order_old = get_order(request.httprequest.session.get('ecommerce_order_id_old'))
if not order_old.order_line: if not order_old.order_line:
return self.mycart(**post) return self.mycart(**post)
values = { values = website.get_rendering_context({
'temp': 0, 'temp': 0,
'order': order_old, 'order': order_old,
'categories': self.get_categories(), })
} return website.render("website_sale.confirmed", values)
return self.render("website_sale.confirmed", values)
@http.route(['/shop/publish'], type='http', auth="public") @http.route(['/shop/publish'], type='http', auth="public")
def publish(self, **post): def publish(self, **post):

View File

@ -56,7 +56,7 @@
<div class="row"> <div class="row">
<div class="span4 css_noprint"> <div class="span4 css_noprint">
<ul class="nav nav-list"> <ul class="nav nav-list">
<t t-foreach="categories" t-as="category"> <t t-foreach="website_sale_get_categories()" t-as="category">
<t t-call="website_sale.categories_recursive"/> <t t-call="website_sale.categories_recursive"/>
</t> </t>
</ul> </ul>