[REM] Removed @website.route() decorator

Need trunk-website-al Rev#5151

bzr revid: fme@openerp.com-20140120153733-ve3dn2kwvha7n3yl
This commit is contained in:
Fabien Meghazi 2014-01-20 16:37:33 +01:00
parent 46e7638d81
commit 14bb6060d7
23 changed files with 111 additions and 133 deletions

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.models import website
try: try:
import simplejson as json import simplejson as json
@ -17,9 +16,9 @@ _logger = logging.getLogger(__name__)
class AdyenController(http.Controller): class AdyenController(http.Controller):
_return_url = '/payment/adyen/return/' _return_url = '/payment/adyen/return/'
@website.route([ @http.route([
'/payment/adyen/return/', '/payment/adyen/return/',
], type='http', auth='public') ], type='http', auth='public', website=True)
def adyen_return(self, pspReference, **post): def adyen_return(self, pspReference, **post):
""" Paypal IPN.""" """ Paypal IPN."""
post["pspReference"] = pspReference post["pspReference"] = pspReference

View File

@ -4,7 +4,6 @@ import pprint
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.models import website
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@ -15,12 +14,12 @@ class OgoneController(http.Controller):
_exception_url = '/payment/ogone/test/exception' _exception_url = '/payment/ogone/test/exception'
_cancel_url = '/payment/ogone/test/cancel' _cancel_url = '/payment/ogone/test/cancel'
@website.route([ @http.route([
'/payment/ogone/accept', '/payment/ogone/test/accept', '/payment/ogone/accept', '/payment/ogone/test/accept',
'/payment/ogone/decline', '/payment/ogone/test/decline', '/payment/ogone/decline', '/payment/ogone/test/decline',
'/payment/ogone/exception', '/payment/ogone/test/exception', '/payment/ogone/exception', '/payment/ogone/test/exception',
'/payment/ogone/cancel', '/payment/ogone/test/cancel', '/payment/ogone/cancel', '/payment/ogone/test/cancel',
], type='http', auth='admin') ], type='http', auth='admin', website=True)
def ogone_form_feedback(self, **post): def ogone_form_feedback(self, **post):
""" Ogone contacts using GET, at least for accept """ """ Ogone contacts using GET, at least for accept """
_logger.info('Ogone: entering form_feedback with post data %s', pprint.pformat(post)) # debug _logger.info('Ogone: entering form_feedback with post data %s', pprint.pformat(post)) # debug

View File

@ -11,7 +11,6 @@ import urllib2
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.models import website
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@ -54,18 +53,18 @@ class PaypalController(http.Controller):
_logger.warning('Paypal: unrecognized paypal answer, received %s instead of VERIFIED or INVALID' % resp.text) _logger.warning('Paypal: unrecognized paypal answer, received %s instead of VERIFIED or INVALID' % resp.text)
return res return res
@website.route([ @http.route([
'/payment/paypal/ipn/', '/payment/paypal/ipn/',
], type='http', auth='public', methods=['POST']) ], type='http', auth='public', methods=['POST'], website=True)
def paypal_ipn(self, **post): def paypal_ipn(self, **post):
""" Paypal IPN. """ """ Paypal IPN. """
_logger.info('Beginning Paypal IPN form_feedback with post data %s', pprint.pformat(post)) # debug _logger.info('Beginning Paypal IPN form_feedback with post data %s', pprint.pformat(post)) # debug
self.paypal_validate_data(**post) self.paypal_validate_data(**post)
return '' return ''
@website.route([ @http.route([
'/payment/paypal/dpn', '/payment/paypal/dpn',
], type='http', auth="public", methods=['POST']) ], type='http', auth="public", methods=['POST'], website=True)
def paypal_dpn(self, **post): def paypal_dpn(self, **post):
""" Paypal DPN """ """ Paypal DPN """
_logger.info('Beginning Paypal DPN form_feedback with post data %s', pprint.pformat(post)) # debug _logger.info('Beginning Paypal DPN form_feedback with post data %s', pprint.pformat(post)) # debug
@ -73,9 +72,9 @@ class PaypalController(http.Controller):
self.paypal_validate_data(**post) self.paypal_validate_data(**post)
return request.redirect(return_url) return request.redirect(return_url)
@website.route([ @http.route([
'/payment/paypal/cancel', '/payment/paypal/cancel',
], type='http', auth="public") ], type='http', auth="public", website=True)
def paypal_cancel(self, **post): def paypal_cancel(self, **post):
""" When the user cancels its Paypal payment: GET on this route """ """ When the user cancels its Paypal payment: GET on this route """
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context

View File

@ -4,7 +4,6 @@ import pprint
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.models import website
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@ -12,9 +11,9 @@ _logger = logging.getLogger(__name__)
class OgoneController(http.Controller): class OgoneController(http.Controller):
_accept_url = '/payment/transfer/feedback' _accept_url = '/payment/transfer/feedback'
@website.route([ @http.route([
'/payment/transfer/feedback', '/payment/transfer/feedback',
], type='http', auth='admin') ], type='http', auth='admin', website=True)
def transfer_form_feedback(self, **post): def transfer_form_feedback(self, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
_logger.info('Beginning form_feedback with post data %s', pprint.pformat(post)) # debug _logger.info('Beginning form_feedback with post data %s', pprint.pformat(post)) # debug

View File

@ -31,7 +31,7 @@ NOPE = object()
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):
@website.route('/', type='http', auth="public", multilang=True) @http.route(['/', '/2'], type='http', auth="public", website=True, multilang=True)
def index(self, **kw): def index(self, **kw):
try: try:
main_menu = request.registry['ir.model.data'].get_object(request.cr, request.uid, 'website', 'main_menu') main_menu = request.registry['ir.model.data'].get_object(request.cr, request.uid, 'website', 'main_menu')
@ -42,7 +42,7 @@ class Website(openerp.addons.web.controllers.main.Home):
pass pass
return self.page("website.homepage") return self.page("website.homepage")
@website.route('/pagenew/<path:path>', type='http', auth="user") @http.route('/pagenew/<path:path>', type='http', auth="user")
def pagenew(self, path, noredirect=NOPE): def pagenew(self, path, noredirect=NOPE):
web = request.registry['website'] web = request.registry['website']
try: try:
@ -60,7 +60,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)
@website.route('/website/theme_change', type='http', auth="admin") @http.route('/website/theme_change', type='http', auth="admin", website=True)
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']
@ -82,11 +82,11 @@ class Website(openerp.addons.web.controllers.main.Home):
return request.website.render('website.themes', {'theme_changed': True}) return request.website.render('website.themes', {'theme_changed': True})
@website.route(['/website/snippets'], type='json', auth="public") @http.route(['/website/snippets'], type='json', auth="public", website=True)
def snippets(self): def snippets(self):
return request.website._render('website.snippets') return request.website._render('website.snippets')
@website.route('/page/<page:page>', type='http', auth="public", multilang=True) @http.route('/page/<page:page>', type='http', auth="public", website=True, multilang=True)
def page(self, page, **opt): def page(self, page, **opt):
values = { values = {
'path': page, 'path': page,
@ -108,7 +108,7 @@ class Website(openerp.addons.web.controllers.main.Home):
return request.website.render(page, values) return request.website.render(page, values)
@website.route('/website/reset_templates', type='http', auth='user', methods=['POST']) @http.route('/website/reset_templates', type='http', auth='user', methods=['POST'], website=True)
def reset_template(self, templates, redirect='/'): def reset_template(self, templates, redirect='/'):
templates = request.httprequest.form.getlist('templates') templates = request.httprequest.form.getlist('templates')
modules_to_update = [] modules_to_update = []
@ -124,7 +124,7 @@ class Website(openerp.addons.web.controllers.main.Home):
module_obj.button_immediate_upgrade(request.cr, request.uid, module_ids, context=request.context) module_obj.button_immediate_upgrade(request.cr, request.uid, module_ids, context=request.context)
return request.redirect(redirect) return request.redirect(redirect)
@website.route('/website/customize_template_toggle', type='json', auth='user') @http.route('/website/customize_template_toggle', type='json', auth='user', website=True)
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), view = view_obj.browse(request.cr, request.uid, int(view_id),
@ -138,7 +138,7 @@ class Website(openerp.addons.web.controllers.main.Home):
}, context=request.context) }, context=request.context)
return True return True
@website.route('/website/customize_template_get', type='json', auth='user') @http.route('/website/customize_template_get', type='json', auth='user', website=True)
def customize_template_get(self, xml_id, optional=True): def customize_template_get(self, xml_id, optional=True):
imd = request.registry['ir.model.data'] imd = request.registry['ir.model.data']
view_model, view_theme_id = imd.get_object_reference( view_model, view_theme_id = imd.get_object_reference(
@ -173,7 +173,7 @@ class Website(openerp.addons.web.controllers.main.Home):
}) })
return result return result
@website.route('/website/get_view_translations', type='json', auth='admin') @http.route('/website/get_view_translations', type='json', auth='admin', website=True)
def get_view_translations(self, xml_id, lang=None): def get_view_translations(self, xml_id, lang=None):
lang = lang or request.context.get('lang') lang = lang or request.context.get('lang')
views = self.customize_template_get(xml_id, optional=False) views = self.customize_template_get(xml_id, optional=False)
@ -182,7 +182,7 @@ class Website(openerp.addons.web.controllers.main.Home):
irt = request.registry.get('ir.translation') irt = request.registry.get('ir.translation')
return irt.search_read(request.cr, request.uid, domain, ['id', 'res_id', 'value'], context=request.context) return irt.search_read(request.cr, request.uid, domain, ['id', 'res_id', 'value'], context=request.context)
@website.route('/website/set_translations', type='json', auth='admin') @http.route('/website/set_translations', type='json', auth='admin', website=True)
def set_translations(self, data, lang): def set_translations(self, data, lang):
irt = request.registry.get('ir.translation') irt = request.registry.get('ir.translation')
for view_id, trans in data.items(): for view_id, trans in data.items():
@ -217,7 +217,7 @@ class Website(openerp.addons.web.controllers.main.Home):
irt.create(request.cr, request.uid, new_trans) irt.create(request.cr, request.uid, new_trans)
return True return True
@website.route('/website/attach', type='http', auth='user') @http.route('/website/attach', type='http', auth='user', website=True)
def attach(self, func, upload): def attach(self, func, upload):
req = request.httprequest req = request.httprequest
if req.method != 'POST': if req.method != 'POST':
@ -247,7 +247,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))
@website.route(['/website/publish'], type='json', auth="public") @http.route(['/website/publish'], type='json', auth="public", website=True)
def publish(self, id, object): def publish(self, id, object):
_id = int(id) _id = int(id)
_object = request.registry[object] _object = request.registry[object]
@ -264,23 +264,23 @@ class Website(openerp.addons.web.controllers.main.Home):
obj = _object.browse(request.cr, request.uid, _id) obj = _object.browse(request.cr, request.uid, _id)
return bool(obj.website_published) return bool(obj.website_published)
@website.route(['/website/kanban/'], type='http', auth="public", methods=['POST']) @http.route(['/website/kanban/'], type='http', auth="public", methods=['POST'], website=True)
def kanban(self, **post): def kanban(self, **post):
return request.website.kanban_col(**post) return request.website.kanban_col(**post)
@website.route(['/robots.txt'], type='http', auth="public") @http.route(['/robots.txt'], type='http', auth="public", website=True)
def robots(self): def robots(self):
response = request.website.render('website.robots', {'url_root': request.httprequest.url_root}) response = request.website.render('website.robots', {'url_root': request.httprequest.url_root})
response.mimetype = 'text/plain' response.mimetype = 'text/plain'
return response return response
@website.route('/sitemap', type='http', auth='public', multilang=True) @http.route('/sitemap', type='http', auth='public', website=True, multilang=True)
def sitemap(self): def sitemap(self):
return request.website.render('website.sitemap', { return request.website.render('website.sitemap', {
'pages': request.website.enumerate_pages() 'pages': request.website.enumerate_pages()
}) })
@website.route('/sitemap.xml', type='http', auth="public") @http.route('/sitemap.xml', type='http', auth="public", website=True)
def sitemap_xml(self): def sitemap_xml(self):
response = request.website.render('website.sitemap_xml', { response = request.website.render('website.sitemap_xml', {
'pages': request.website.enumerate_pages() 'pages': request.website.enumerate_pages()
@ -298,7 +298,7 @@ class Images(http.Controller):
response.set_data(f.read()) response.set_data(f.read())
return response.make_conditional(request.httprequest) return response.make_conditional(request.httprequest)
@website.route('/website/image', auth="public") @http.route('/website/image', auth="public", website=True)
def image(self, model, id, field, max_width=maxint, max_height=maxint): def image(self, model, id, field, max_width=maxint, max_height=maxint):
Model = request.registry[model] Model = request.registry[model]
@ -363,5 +363,4 @@ class Images(http.Controller):
return response return response
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -38,15 +38,15 @@ class ir_http(orm.AbstractModel):
func = None func = None
try: try:
func, arguments = self._find_handler() func, arguments = self._find_handler()
request.cms = getattr(func, 'cms', False) request.website_enabled = func.routing.get('website', False)
except werkzeug.exceptions.NotFound: except werkzeug.exceptions.NotFound:
# either we have a language prefixed route, either a real 404 # either we have a language prefixed route, either a real 404
# in all cases, website processes them # in all cases, website processes them
request.cms = True request.website_enabled = True
if request.cms: if request.website_enabled:
if func: if func:
self._authenticate(getattr(func, 'auth', None)) self._authenticate(func.routing['auth'])
else: else:
self._auth_method_public() self._auth_method_public()
request.website = request.registry['website'].get_current_website(request.cr, request.uid, context=request.context) request.website = request.registry['website'].get_current_website(request.cr, request.uid, context=request.context)
@ -82,7 +82,7 @@ class ir_http(orm.AbstractModel):
def _handle_exception(self, exception=None, code=500): def _handle_exception(self, exception=None, code=500):
if isinstance(exception, werkzeug.exceptions.HTTPException) and exception.response: if isinstance(exception, werkzeug.exceptions.HTTPException) and exception.response:
return exception.response return exception.response
if getattr(request, 'cms', False) and request.website: if getattr(request, 'website_enabled', False) and request.website:
values = dict( values = dict(
exception=exception, exception=exception,
traceback=traceback.format_exc(exception), traceback=traceback.format_exc(exception),

View File

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import fnmatch import fnmatch
import functools
import inspect import inspect
import logging import logging
import math import math
@ -17,19 +16,11 @@ import openerp
from openerp.osv import orm, osv, fields from openerp.osv import orm, osv, fields
from openerp.tools.safe_eval import safe_eval from openerp.tools.safe_eval import safe_eval
from openerp.addons.web import http
from openerp.addons.web.http import request, LazyResponse from openerp.addons.web.http import request, LazyResponse
from ..utils import slugify from ..utils import slugify
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
def route(routes, *route_args, **route_kwargs):
def decorator(f):
f.cms = True
f.multilang = route_kwargs.pop('multilang', False)
return http.route(routes, *route_args, **route_kwargs)(f)
return decorator
def url_for(path_or_uri, lang=None, keep_query=None): def url_for(path_or_uri, lang=None, keep_query=None):
location = path_or_uri.strip() location = path_or_uri.strip()
url = urlparse.urlparse(location) url = urlparse.urlparse(location)
@ -313,10 +304,10 @@ class website(osv.osv):
converters = rule._converters.values() converters = rule._converters.values()
return ( return (
'GET' in methods 'GET' in methods
and endpoint.exposed == 'http' and endpoint.routing['type'] == 'http'
and endpoint.auth in ('none', 'public') and endpoint.routing['auth'] in ('none', 'public')
and getattr(endpoint, 'cms', False) and endpoint.routing.get('website', False)
# preclude combinatorial explosion by only allowing a single converter # preclude combinatorial explosion by only allowing a single converter
and len(converters) <= 1 and len(converters) <= 1
# ensure all converters on the rule are able to generate values for # ensure all converters on the rule are able to generate values for

View File

@ -45,10 +45,10 @@ class WebsiteBlog(http.Controller):
group['date'] = "%s_%s" % (group['__domain'][0][2], group['__domain'][1][2]) group['date'] = "%s_%s" % (group['__domain'][0][2], group['__domain'][1][2])
return groups return groups
@website.route([ @http.route([
'/blog', '/blog',
'/blog/page/<int:page>/', '/blog/page/<int:page>/',
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def blogs(self, page=1): def blogs(self, page=1):
BYPAGE = 60 BYPAGE = 60
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
@ -67,7 +67,7 @@ class WebsiteBlog(http.Controller):
'pager': pager 'pager': pager
}) })
@website.route([ @http.route([
'/blog/<model("blog.category"):category>/', '/blog/<model("blog.category"):category>/',
'/blog/<model("blog.category"):category>/page/<int:page>/', '/blog/<model("blog.category"):category>/page/<int:page>/',
'/blog/<model("blog.category"):category>/tag/<model("blog.tag"):tag>/', '/blog/<model("blog.category"):category>/tag/<model("blog.tag"):tag>/',
@ -76,7 +76,7 @@ class WebsiteBlog(http.Controller):
'/blog/<model("blog.category"):category>/date/<string(length=21):date>/page/<int:page>/', '/blog/<model("blog.category"):category>/date/<string(length=21):date>/page/<int:page>/',
'/blog/<model("blog.category"):category>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/', '/blog/<model("blog.category"):category>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/',
'/blog/<model("blog.category"):category>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/page/<int:page>/', '/blog/<model("blog.category"):category>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/page/<int:page>/',
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def blog(self, category=None, tag=None, date=None, page=1, **opt): def blog(self, category=None, tag=None, date=None, page=1, **opt):
""" Prepare all values to display the blog. """ Prepare all values to display the blog.
@ -152,9 +152,9 @@ class WebsiteBlog(http.Controller):
} }
return request.website.render("website_blog.blog_post_short", values) return request.website.render("website_blog.blog_post_short", values)
@website.route([ @http.route([
'/blogpost/<model("blog.post"):blog_post>/', '/blogpost/<model("blog.post"):blog_post>/',
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def blog_post(self, blog_post, tag=None, date=None, page=1, enable_editor=None, **post): def blog_post(self, blog_post, tag=None, date=None, page=1, enable_editor=None, **post):
""" Prepare all values to display the blog. """ Prepare all values to display the blog.
@ -219,7 +219,7 @@ class WebsiteBlog(http.Controller):
} }
return request.website.render("website_blog.blog_post_complete", values) return request.website.render("website_blog.blog_post_complete", values)
@website.route(['/blogpost/comment'], type='http', auth="public", methods=['POST']) @http.route(['/blogpost/comment'], type='http', auth="public", methods=['POST'], website=True)
def blog_post_comment(self, blog_post_id=0, **post): def blog_post_comment(self, blog_post_id=0, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
if post.get('comment'): if post.get('comment'):
@ -238,7 +238,7 @@ class WebsiteBlog(http.Controller):
context=dict(context, mail_create_nosubcribe=True)) context=dict(context, mail_create_nosubcribe=True))
return werkzeug.utils.redirect(request.httprequest.referrer + "#comments") return werkzeug.utils.redirect(request.httprequest.referrer + "#comments")
@website.route('/blogpost/new', type='http', auth="public", multilang=True) @http.route('/blogpost/new', type='http', auth="public", website=True, multilang=True)
def blog_post_create(self, category_id, **post): def blog_post_create(self, category_id, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
create_context = dict(context, mail_create_nosubscribe=True) create_context = dict(context, mail_create_nosubscribe=True)
@ -251,7 +251,7 @@ class WebsiteBlog(http.Controller):
}, context=create_context) }, context=create_context)
return werkzeug.utils.redirect("/blogpost/%s/?enable_editor=1" % new_blog_post_id) return werkzeug.utils.redirect("/blogpost/%s/?enable_editor=1" % new_blog_post_id)
@website.route('/blogpost/duplicate', type='http', auth="public") @http.route('/blogpost/duplicate', type='http', auth="public", website=True)
def blog_post_copy(self, blog_post_id, **post): def blog_post_copy(self, blog_post_id, **post):
""" Duplicate a blog. """ Duplicate a blog.

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.models import website
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from urllib import quote_plus from urllib import quote_plus
@ -16,7 +15,7 @@ class contactus(http.Controller):
) )
return url return url
@website.route(['/crm/contactus'], type='http', auth="public", multilang=True) @http.route(['/crm/contactus'], type='http', auth="public", website=True, multilang=True)
def contactus(self, *arg, **post): def contactus(self, *arg, **post):
required_fields = ['contact_name', 'email_from', 'description'] required_fields = ['contact_name', 'email_from', 'description']
post['user_id'] = False post['user_id'] = False

View File

@ -9,20 +9,19 @@ from openerp.tools.translate import _
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website.models import website from openerp.addons.website.models import website
from openerp.addons.website_partner.controllers import main as website_partner from openerp.addons.website_partner.controllers import main as website_partner
import werkzeug
class WebsiteCrmPartnerAssign(http.Controller): class WebsiteCrmPartnerAssign(http.Controller):
_references_per_page = 20 _references_per_page = 20
@website.route([ @http.route([
'/partners/', '/partners/',
'/partners/page/<int:page>/', '/partners/page/<int:page>/',
'/partners/country/<int:country_id>', '/partners/country/<int:country_id>',
'/partners/country/<country_name>-<int:country_id>', '/partners/country/<country_name>-<int:country_id>',
'/partners/country/<int:country_id>/page/<int:page>/', '/partners/country/<int:country_id>/page/<int:page>/',
'/partners/country/<country_name>-<int:country_id>/page/<int:page>/', '/partners/country/<country_name>-<int:country_id>/page/<int:page>/',
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def partners(self, country_id=0, page=0, **post): def partners(self, country_id=0, page=0, **post):
country_obj = request.registry['res.country'] country_obj = request.registry['res.country']
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
@ -95,7 +94,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
} }
return request.website.render("website_crm_partner_assign.index", values) return request.website.render("website_crm_partner_assign.index", values)
@website.route(['/partners/<int:partner_id>/', '/partners/<partner_name>-<int:partner_id>/'], type='http', auth="public", multilang=True) @http.route(['/partners/<int:partner_id>/', '/partners/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, multilang=True)
def partners_ref(self, partner_id, **post): def partners_ref(self, partner_id, **post):
partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
website.preload_records(partner) website.preload_records(partner)

View File

@ -13,14 +13,14 @@ import urllib
class WebsiteCustomer(http.Controller): class WebsiteCustomer(http.Controller):
_references_per_page = 20 _references_per_page = 20
@website.route([ @http.route([
'/customers/', '/customers/',
'/customers/page/<int:page>/', '/customers/page/<int:page>/',
'/customers/country/<int:country_id>', '/customers/country/<int:country_id>',
'/customers/country/<country_name>-<int:country_id>', '/customers/country/<country_name>-<int:country_id>',
'/customers/country/<int:country_id>/page/<int:page>/', '/customers/country/<int:country_id>/page/<int:page>/',
'/customers/country/<country_name>-<int:country_id>/page/<int:page>/', '/customers/country/<country_name>-<int:country_id>/page/<int:page>/',
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def customers(self, country_id=0, page=0, **post): def customers(self, country_id=0, page=0, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
@ -76,7 +76,7 @@ class WebsiteCustomer(http.Controller):
} }
return request.website.render("website_customer.index", values) return request.website.render("website_customer.index", values)
@website.route(['/customers/<int:partner_id>/', '/customers/<partner_name>-<int:partner_id>/'], type='http', auth="public", multilang=True) @http.route(['/customers/<int:partner_id>/', '/customers/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, multilang=True)
def customer(self, partner_id, **post): def customer(self, partner_id, **post):
partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
website.preload_records(partner) website.preload_records(partner)

View File

@ -34,7 +34,7 @@ from openerp import tools
import urllib import urllib
class website_event(http.Controller): class website_event(http.Controller):
@website.route(['/event/', '/event/page/<int:page>'], type='http', auth="public", multilang=True) @http.route(['/event/', '/event/page/<int:page>'], type='http', auth="public", website=True, multilang=True)
def events(self, page=1, **searches): def events(self, page=1, **searches):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
event_obj = request.registry['event.event'] event_obj = request.registry['event.event']
@ -161,7 +161,7 @@ class website_event(http.Controller):
return request.website.render("website_event.index", values) return request.website.render("website_event.index", values)
@website.route(['/event/<model("event.event"):event>/page/<page:page>'], type='http', auth="public", multilang=True) @http.route(['/event/<model("event.event"):event>/page/<page:page>'], type='http', auth="public", website=True, multilang=True)
def event_page(self, event, page, **post): def event_page(self, event, page, **post):
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
values = { values = {
@ -170,7 +170,7 @@ class website_event(http.Controller):
} }
return request.website.render(page, values) return request.website.render(page, values)
@website.route(['/event/<model("event.event"):event>'], type='http', auth="public", multilang=True) @http.route(['/event/<model("event.event"):event>'], type='http', auth="public", website=True, multilang=True)
def event(self, event, **post): def event(self, event, **post):
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
if event.menu_id and event.menu_id.child_id: if event.menu_id and event.menu_id.child_id:
@ -181,7 +181,7 @@ class website_event(http.Controller):
target_url += '?enable_editor=1' target_url += '?enable_editor=1'
return request.redirect(target_url); return request.redirect(target_url);
@website.route(['/event/<model("event.event"):event>/register'], type='http', auth="public", multilang=True) @http.route(['/event/<model("event.event"):event>/register'], type='http', auth="public", website=True, multilang=True)
def event_register(self, event, **post): def event_register(self, event, **post):
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
values = { values = {
@ -192,7 +192,7 @@ class website_event(http.Controller):
} }
return request.website.render("website_event.event_description_full", values) return request.website.render("website_event.event_description_full", values)
@website.route(['/event/add_cart'], type='http', auth="public", multilang=True) @http.route(['/event/add_cart'], type='http', auth="public", website=True, multilang=True)
def add_cart(self, event_id, **post): def add_cart(self, event_id, **post):
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')
@ -247,7 +247,7 @@ class website_event(http.Controller):
return request.redirect("/event/%s/" % event_id) return request.redirect("/event/%s/" % event_id)
return request.redirect("/shop/checkout") return request.redirect("/shop/checkout")
@website.route(['/event/publish'], type='json', auth="public") @http.route(['/event/publish'], type='json', auth="public", website=True)
def publish(self, id, object): def publish(self, id, object):
# if a user publish an event, he publish all linked res.partner # if a user publish an event, he publish all linked res.partner
event = request.registry[object].browse(request.cr, request.uid, int(id)) event = request.registry[object].browse(request.cr, request.uid, int(id))
@ -259,7 +259,7 @@ class website_event(http.Controller):
return controllers.publish(id, object) return controllers.publish(id, object)
@website.route('/event/add_event/', type='http', auth="user", multilang=True, methods=['POST']) @http.route('/event/add_event/', type='http', auth="user", multilang=True, methods=['POST'], website=True)
def add_event(self, event_name="New Event", **kwargs): def add_event(self, event_name="New Event", **kwargs):
Event = request.registry.get('event.event') Event = request.registry.get('event.event')
date_begin = datetime.today() + timedelta(days=(15)) # FIXME: better defaults date_begin = datetime.today() + timedelta(days=(15)) # FIXME: better defaults

View File

@ -30,7 +30,7 @@ import werkzeug.utils
controllers = controllers() controllers = controllers()
class website_event(http.Controller): class website_event(http.Controller):
@website.route(['/event/<model("event.event"):event>/track/<model("event.track"):track>'], type='http', auth="public", multilang=True) @http.route(['/event/<model("event.event"):event>/track/<model("event.track"):track>'], type='http', auth="public", website=True, multilang=True)
def event_track_view(self, event, track, **post): def event_track_view(self, event, track, **post):
# TODO: not implemented # TODO: not implemented
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
@ -38,7 +38,7 @@ class website_event(http.Controller):
values = { 'track': track, 'event': track.event_id, 'main_object': track } values = { 'track': track, 'event': track.event_id, 'main_object': track }
return request.website.render("website_event_track.track_view", values) return request.website.render("website_event_track.track_view", values)
@website.route(['/event/<model("event.event"):event>/agenda/'], type='http', auth="public", multilang=True) @http.route(['/event/<model("event.event"):event>/agenda/'], type='http', auth="public", website=True, multilang=True)
def event_agenda(self, event, tag=None, **post): def event_agenda(self, event, tag=None, **post):
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
values = { values = {
@ -47,10 +47,10 @@ class website_event(http.Controller):
} }
return request.website.render("website_event_track.agenda", values) return request.website.render("website_event_track.agenda", values)
@website.route([ @http.route([
'/event/<model("event.event"):event>/track/', '/event/<model("event.event"):event>/track/',
'/event/<model("event.event"):event>/track/tag/<model("event.track.tag"):tag>' '/event/<model("event.event"):event>/track/tag/<model("event.track.tag"):tag>'
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def event_tracks(self, event, tag=None, **post): def event_tracks(self, event, tag=None, **post):
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
website.preload_records(tag) website.preload_records(tag)
@ -80,13 +80,13 @@ class website_event(http.Controller):
@website.route(['/event/<model("event.event"):event>/track_proposal/'], type='http', auth="public", multilang=True) @http.route(['/event/<model("event.event"):event>/track_proposal/'], type='http', auth="public", website=True, multilang=True)
def event_track_proposal(self, event, **post): def event_track_proposal(self, event, **post):
website.preload_records(event, on_error="website_event.404") website.preload_records(event, on_error="website_event.404")
values = { 'event': event } values = { 'event': event }
return request.website.render("website_event_track.event_track_proposal", values) return request.website.render("website_event_track.event_track_proposal", values)
@website.route(['/event/<model("event.event"):event>/track_proposal/post'], type='http', auth="public", methods=['POST'], multilang=True) @http.route(['/event/<model("event.event"):event>/track_proposal/post'], type='http', auth="public", methods=['POST'], website=True, multilang=True)
def event_track_proposal_post(self, event, **post): def event_track_proposal_post(self, event, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context

View File

@ -3,12 +3,11 @@
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.models import website
from datetime import datetime from datetime import datetime
class google_map(http.Controller): class google_map(http.Controller):
@website.route(['/google_map/'], type='http', auth="admin") @http.route(['/google_map/'], type='http', auth="admin", website=True)
def google_map(self, *arg, **post): def google_map(self, *arg, **post):
values = { values = {
'partner_ids': post.get('partner_ids', ""), 'partner_ids': post.get('partner_ids', ""),
@ -18,7 +17,7 @@ class google_map(http.Controller):
} }
return request.website.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") @http.route(['/google_map/partners.json'], type='http', auth="admin", website=True)
def google_map_data(self, *arg, **post): def google_map_data(self, *arg, **post):
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']
@ -29,7 +28,7 @@ class google_map(http.Controller):
return partner_obj.google_map_json(request.cr, openerp.SUPERUSER_ID, return partner_obj.google_map_json(request.cr, openerp.SUPERUSER_ID,
partner_ids, request.context) partner_ids, request.context)
@website.route(['/google_map/set_partner_position/'], type='http', auth="admin") @http.route(['/google_map/set_partner_position/'], type='http', auth="admin", website=True)
def google_map_set_partner_position(self, *arg, **post): def google_map_set_partner_position(self, *arg, **post):
partner_obj = request.registry['res.partner'] partner_obj = request.registry['res.partner']

View File

@ -2,11 +2,10 @@
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.models import website
class website_hr(http.Controller): class website_hr(http.Controller):
@website.route(['/page/website.aboutus'], type='http', auth="public", multilang=True) @http.route(['/page/website.aboutus'], type='http', auth="public", website=True, multilang=True)
def blog(self, **post): def blog(self, **post):
hr_obj = request.registry['hr.employee'] hr_obj = request.registry['hr.employee']
employee_ids = hr_obj.search(request.cr, request.uid, [('website_published', '=', True)], employee_ids = hr_obj.search(request.cr, request.uid, [('website_published', '=', True)],

View File

@ -2,7 +2,6 @@
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.models import website
from openerp.addons.website.controllers.main import Website as controllers from openerp.addons.website.controllers.main import Website as controllers
controllers = controllers() controllers = controllers()
@ -10,12 +9,12 @@ import base64
class website_hr_recruitment(http.Controller): class website_hr_recruitment(http.Controller):
@website.route([ @http.route([
'/jobs', '/jobs',
'/jobs/department/<model("hr.department"):department>/office/<model("res.partner"):office>', '/jobs/department/<model("hr.department"):department>/office/<model("res.partner"):office>',
'/jobs/department/<model("hr.department"):department>', '/jobs/department/<model("hr.department"):department>',
'/jobs/office/<model("res.partner"):office>' '/jobs/office/<model("res.partner"):office>'
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def jobs(self, department=None, office=None): def jobs(self, department=None, office=None):
JobsObj = request.registry['hr.job'] JobsObj = request.registry['hr.job']
jobpost_ids = JobsObj.search(request.cr, request.uid, [], jobpost_ids = JobsObj.search(request.cr, request.uid, [],
@ -47,11 +46,11 @@ class website_hr_recruitment(http.Controller):
'office': office and office.id or None 'office': office and office.id or None
}) })
@website.route(['/job/detail/<model("hr.job"):job>'], type='http', auth="public", multilang=True) @http.route(['/job/detail/<model("hr.job"):job>'], type='http', auth="public", website=True, multilang=True)
def detail(self, job, **kwargs): def detail(self, job, **kwargs):
return request.website.render("website_hr_recruitment.detail", { 'job': job, 'main_object': job }) return request.website.render("website_hr_recruitment.detail", { 'job': job, 'main_object': job })
@website.route(['/job/success'], methods=['POST'], type='http', auth="admin", multilang=True) @http.route(['/job/success'], methods=['POST'], type='http', auth="admin", website=True, multilang=True)
def success(self, **post): def success(self, **post):
data = { data = {
'name': _('Online Form'), 'name': _('Online Form'),
@ -84,7 +83,7 @@ class website_hr_recruitment(http.Controller):
request.registry['ir.attachment'].create(request.cr, request.uid, attachment_values, context=request.context) request.registry['ir.attachment'].create(request.cr, request.uid, attachment_values, context=request.context)
return request.website.render("website_hr_recruitment.thankyou", {}) return request.website.render("website_hr_recruitment.thankyou", {})
@website.route(['/job/apply'], type='http', auth="public", multilang=True) @http.route(['/job/apply'], type='http', auth="public", website=True, multilang=True)
def applyjobpost(self, job): def applyjobpost(self, job):
[job_object] = request.registry['hr.job'].browse( [job_object] = request.registry['hr.job'].browse(
request.cr, request.uid, [int(job)], context=request.context) request.cr, request.uid, [int(job)], context=request.context)
@ -93,7 +92,7 @@ class website_hr_recruitment(http.Controller):
'job': job_object 'job': job_object
}) })
@website.route('/job/add_job_offer/', type='http', auth="user", multilang=True, methods=['POST']) @http.route('/job/add_job_offer/', type='http', auth="user", methods=['POST'], website=True, multilang=True)
def add_job_offer(self, **kwargs): def add_job_offer(self, **kwargs):
Job = request.registry.get('hr.job') Job = request.registry.get('hr.job')
job_id = Job.create(request.cr, request.uid, { job_id = Job.create(request.cr, request.uid, {

View File

@ -3,12 +3,11 @@
# 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.models import website
class WebsiteEmailDesigner(http.Controller): class WebsiteEmailDesigner(http.Controller):
@website.route('/website_mail/email_designer/<model("email.template"):template>/', type='http', auth="public", multilang=True) @http.route('/website_mail/email_designer/<model("email.template"):template>/', type='http', auth="public", website=True, multilang=True)
def index(self, template, **kw): def index(self, template, **kw):
values = { values = {
'template': template, 'template': template,
@ -16,6 +15,6 @@ class WebsiteEmailDesigner(http.Controller):
print template print template
return request.website.render("website_mail.designer_index", values) return request.website.render("website_mail.designer_index", values)
@website.route(['/website_mail/snippets'], type='json', auth="public") @http.route(['/website_mail/snippets'], type='json', auth="public", website=True)
def snippets(self): def snippets(self):
return request.website._render('website_mail.email_designer_snippets') return request.website._render('website_mail.email_designer_snippets')

View File

@ -22,7 +22,6 @@
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.models import website
class WebsiteMail(http.Controller): class WebsiteMail(http.Controller):
@ -40,7 +39,7 @@ class WebsiteMail(http.Controller):
partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id] partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id]
return partner_ids return partner_ids
@website.route(['/website_mail/follow/'], type='json', auth="public") @http.route(['/website_mail/follow/'], type='json', auth="public", website=True)
def website_message_subscribe(self, id=0, object=None, message_is_follower="on", email=False, **post): def website_message_subscribe(self, id=0, object=None, message_is_follower="on", email=False, **post):
_id = int(id) _id = int(id)
_message_is_follower = message_is_follower == 'on' _message_is_follower = message_is_follower == 'on'

View File

@ -14,7 +14,7 @@ import urllib
class WebsiteMembership(http.Controller): class WebsiteMembership(http.Controller):
_references_per_page = 20 _references_per_page = 20
@website.route([ @http.route([
'/members/', '/members/',
'/members/page/<int:page>/', '/members/page/<int:page>/',
'/members/association/<int:membership_id>/', '/members/association/<int:membership_id>/',
@ -29,7 +29,7 @@ class WebsiteMembership(http.Controller):
'/members/association/<int:membership_id>/country/<int:country_id>', '/members/association/<int:membership_id>/country/<int:country_id>',
'/members/association/<int:membership_id>/country/<country_name>-<int:country_id>/page/<int:page>/', '/members/association/<int:membership_id>/country/<country_name>-<int:country_id>/page/<int:page>/',
'/members/association/<int:membership_id>/country/<int:country_id>/page/<int:page>/', '/members/association/<int:membership_id>/country/<int:country_id>/page/<int:page>/',
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def members(self, membership_id=None, country_name=None, country_id=0, page=0, **post): def members(self, membership_id=None, country_name=None, country_id=0, page=0, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
product_obj = request.registry['product.product'] product_obj = request.registry['product.product']
@ -92,7 +92,7 @@ class WebsiteMembership(http.Controller):
} }
return request.website.render("website_membership.index", values) return request.website.render("website_membership.index", values)
@website.route(['/members/<int:partner_id>/', '/members/<partner_name>-<int:partner_id>/'], type='http', auth="public", multilang=True) @http.route(['/members/<int:partner_id>/', '/members/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, multilang=True)
def partners_ref(self, partner_id, **post): def partners_ref(self, partner_id, **post):
partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)
website.preload_records(partner) website.preload_records(partner)

View File

@ -34,7 +34,7 @@ def get_partner_template_value(partner):
return values return values
class WebsitePartner(http.Controller): class WebsitePartner(http.Controller):
@website.route(['/partners/<int:partner_id>/', '/partners/<partner_name>-<int:partner_id>/'], type='http', auth="public", multilang=True) @http.route(['/partners/<int:partner_id>/', '/partners/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, multilang=True)
def partner(self, partner_id, **post): def partner(self, partner_id, **post):
""" Route for displaying a single partner / customer. """ """ Route for displaying a single partner / customer. """
partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context)

View File

@ -21,7 +21,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.models import website
from openerp.osv import osv from openerp.osv import osv
@ -39,7 +38,7 @@ class Website(osv.Model):
class website_project(http.Controller): class website_project(http.Controller):
@website.route(['/project/<int:project_id>/'], type='http', auth="public", multilang=True) @http.route(['/project/<int:project_id>/'], type='http', auth="public", website=True, multilang=True)
def project(self, project_id=None, **post): def project(self, project_id=None, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
project_obj = request.registry['project.project'] project_obj = request.registry['project.project']
@ -52,7 +51,7 @@ class website_project(http.Controller):
} }
return request.website.render("website_project.index", render_values) return request.website.render("website_project.index", render_values)
@website.route(['/project/task/<int:task_id>'], type='http', auth="public", multilang=True) @http.route(['/project/task/<int:task_id>'], type='http', auth="public", website=True, multilang=True)
def task(self, task_id=None, **post): def task(self, task_id=None, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
task_obj = request.registry['project.task'] task_obj = request.registry['project.task']

View File

@ -144,7 +144,7 @@ class Ecommerce(http.Controller):
return key_val return key_val
return False return False
@website.route(['/shop/filters/'], type='http', auth="public", multilang=True) @http.route(['/shop/filters/'], type='http', auth="public", website=True, multilang=True)
def filters(self, **post): def filters(self, **post):
index = [] index = []
filters = [] filters = []
@ -190,18 +190,18 @@ class Ecommerce(http.Controller):
att = obj.read(request.cr, request.uid, att_ids, ["product_tmpl_id"], context=request.context) att = obj.read(request.cr, request.uid, att_ids, ["product_tmpl_id"], context=request.context)
return [r["product_tmpl_id"][0] for r in att] return [r["product_tmpl_id"][0] for r in att]
@website.route(['/shop/pricelist'], type='http', auth="public", multilang=True) @http.route(['/shop/pricelist'], type='http', auth="public", website=True, multilang=True)
def shop_promo(self, code, **post): def shop_promo(self, code, **post):
assert code, 'No pricelist code provided' assert code, 'No pricelist code provided'
request.registry['website']._ecommerce_change_pricelist(request.cr, request.uid, code=code, context=request.context) request.registry['website']._ecommerce_change_pricelist(request.cr, request.uid, code=code, context=request.context)
return request.redirect("/shop") return request.redirect("/shop")
@website.route([ @http.route([
'/shop/', '/shop/',
'/shop/page/<int:page>/', '/shop/page/<int:page>/',
'/shop/category/<model("product.public.category"):category>/', '/shop/category/<model("product.public.category"):category>/',
'/shop/category/<model("product.public.category"):category>/page/<int:page>/' '/shop/category/<model("product.public.category"):category>/page/<int:page>/'
], type='http', auth="public", multilang=True) ], type='http', auth="public", website=True, multilang=True)
def shop(self, category=None, page=0, filters='', search='', **post): def shop(self, category=None, page=0, filters='', search='', **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
product_obj = request.registry.get('product.template') product_obj = request.registry.get('product.template')
@ -257,7 +257,7 @@ class Ecommerce(http.Controller):
} }
return request.website.render("website_sale.products", values) return request.website.render("website_sale.products", values)
@website.route(['/shop/product/<model("product.template"):product>/'], type='http', auth="public", multilang=True) @http.route(['/shop/product/<model("product.template"):product>/'], type='http', auth="public", website=True, multilang=True)
def product(self, product, search='', category='', filters='', **kwargs): def product(self, product, search='', category='', filters='', **kwargs):
website.preload_records(product, on_error="website_sale.404") website.preload_records(product, on_error="website_sale.404")
@ -286,7 +286,7 @@ class Ecommerce(http.Controller):
} }
return request.website.render("website_sale.product", values) return request.website.render("website_sale.product", values)
@website.route(['/shop/product/comment'], type='http', auth="public", methods=['POST']) @http.route(['/shop/product/comment'], type='http', auth="public", methods=['POST'], website=True)
def product_comment(self, product_template_id, **post): def product_comment(self, product_template_id, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
if post.get('comment'): if post.get('comment'):
@ -298,7 +298,7 @@ class Ecommerce(http.Controller):
context=dict(context, mail_create_nosubcribe=True)) context=dict(context, mail_create_nosubcribe=True))
return werkzeug.utils.redirect(request.httprequest.referrer + "#comments") return werkzeug.utils.redirect(request.httprequest.referrer + "#comments")
@website.route(['/shop/add_product/'], type='http', auth="user", multilang=True, methods=['POST']) @http.route(['/shop/add_product/'], type='http', auth="user", methods=['POST'], website=True, multilang=True)
def add_product(self, name="New Product", category=0, **post): def add_product(self, name="New Product", category=0, **post):
Product = request.registry.get('product.product') Product = request.registry.get('product.product')
product_id = Product.create(request.cr, request.uid, { product_id = Product.create(request.cr, request.uid, {
@ -308,7 +308,7 @@ class Ecommerce(http.Controller):
return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id) return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id)
@website.route(['/shop/mycart/'], type='http', auth="public", multilang=True) @http.route(['/shop/mycart/'], type='http', auth="public", website=True, multilang=True)
def mycart(self, **post): def mycart(self, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
prod_obj = request.registry.get('product.product') prod_obj = request.registry.get('product.product')
@ -343,21 +343,21 @@ class Ecommerce(http.Controller):
} }
return request.website.render("website_sale.mycart", values) return request.website.render("website_sale.mycart", values)
@website.route(['/shop/add_cart/'], type='http', auth="public", multilang=True, methods=['POST']) @http.route(['/shop/add_cart/'], type='http', auth="public", methods=['POST'], website=True, multilang=True)
def add_cart(self, product_id, remove=None, **kw): def add_cart(self, product_id, remove=None, **kw):
request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid,
product_id=int(product_id), product_id=int(product_id),
context=request.context) context=request.context)
return request.redirect("/shop/mycart/") return request.redirect("/shop/mycart/")
@website.route(['/shop/change_cart/<int:order_line_id>/'], type='http', auth="public", multilang=True) @http.route(['/shop/change_cart/<int:order_line_id>/'], type='http', auth="public", website=True, multilang=True)
def add_cart_order_line(self, order_line_id=None, remove=None, **kw): def add_cart_order_line(self, order_line_id=None, remove=None, **kw):
request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid,
order_line_id=order_line_id, number=(remove and -1 or 1), order_line_id=order_line_id, number=(remove and -1 or 1),
context=request.context) context=request.context)
return request.redirect("/shop/mycart/") return request.redirect("/shop/mycart/")
@website.route(['/shop/add_cart_json/'], type='json', auth="public") @http.route(['/shop/add_cart_json/'], type='json', auth="public", website=True)
def add_cart_json(self, product_id=None, order_line_id=None, remove=None): def add_cart_json(self, product_id=None, order_line_id=None, remove=None):
quantity = request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, quantity = request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid,
product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1), product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1),
@ -368,13 +368,13 @@ class Ecommerce(http.Controller):
order.amount_total, order.amount_total,
request.website._render("website_sale.total", {'website_sale_order': order})] request.website._render("website_sale.total", {'website_sale_order': order})]
@website.route(['/shop/set_cart_json/'], type='json', auth="public") @http.route(['/shop/set_cart_json/'], type='json', auth="public", website=True)
def set_cart_json(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None): def set_cart_json(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None):
return request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, return request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid,
product_id=product_id, order_line_id=order_line_id, set_number=set_number, product_id=product_id, order_line_id=order_line_id, set_number=set_number,
context=request.context) context=request.context)
@website.route(['/shop/checkout/'], type='http', auth="public", multilang=True) @http.route(['/shop/checkout/'], type='http', auth="public", website=True, multilang=True)
def checkout(self, **post): def checkout(self, **post):
cr, uid, context, registry = request.cr, request.uid, request.context, request.registry cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
@ -428,7 +428,7 @@ class Ecommerce(http.Controller):
return request.website.render("website_sale.checkout", values) return request.website.render("website_sale.checkout", values)
@website.route(['/shop/confirm_order/'], type='http', auth="public", multilang=True) @http.route(['/shop/confirm_order/'], type='http', auth="public", website=True, multilang=True)
def confirm_order(self, **post): def confirm_order(self, **post):
cr, uid, context, registry = request.cr, request.uid, request.context, request.registry cr, uid, context, registry = request.cr, request.uid, request.context, request.registry
order_line_obj = request.registry.get('sale.order') order_line_obj = request.registry.get('sale.order')
@ -527,7 +527,7 @@ class Ecommerce(http.Controller):
return request.redirect("/shop/payment/") return request.redirect("/shop/payment/")
@website.route(['/shop/payment/'], type='http', auth="public", multilang=True) @http.route(['/shop/payment/'], type='http', auth="public", website=True, multilang=True)
def payment(self, **post): def payment(self, **post):
""" Payment step. This page proposes several payment means based on available """ Payment step. This page proposes several payment means based on available
payment.acquirer. State at this point : payment.acquirer. State at this point :
@ -585,8 +585,8 @@ class Ecommerce(http.Controller):
return request.website.render("website_sale.payment", values) return request.website.render("website_sale.payment", values)
@website.route(['/shop/payment/transaction/<int:acquirer_id>'], @http.route(['/shop/payment/transaction/<int:acquirer_id>'],
type='http', methods=['POST'], auth="public") type='http', methods=['POST'], auth="public", website=True)
def payment_transaction(self, acquirer_id, **post): def payment_transaction(self, acquirer_id, **post):
""" Hook method that creates a payment.transaction and redirect to the """ Hook method that creates a payment.transaction and redirect to the
acquirer, using post values to re-create the post action. acquirer, using post values to re-create the post action.
@ -628,7 +628,7 @@ class Ecommerce(http.Controller):
acquirer_total_url = '%s?%s' % (acquirer_form_post_url, urllib.urlencode(post)) acquirer_total_url = '%s?%s' % (acquirer_form_post_url, urllib.urlencode(post))
return request.redirect(acquirer_total_url) return request.redirect(acquirer_total_url)
@website.route('/shop/payment/get_status/<int:sale_order_id>', type='json', auth="public", multilang=True) @http.route('/shop/payment/get_status/<int:sale_order_id>', type='json', auth="public", website=True, multilang=True)
def payment_get_status(self, sale_order_id, **post): def payment_get_status(self, sale_order_id, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
@ -653,7 +653,7 @@ class Ecommerce(http.Controller):
'state': tx.state, 'state': tx.state,
} }
@website.route('/shop/payment/validate/', type='http', auth="public", multilang=True) @http.route('/shop/payment/validate/', type='http', auth="public", website=True, multilang=True)
def payment_validate(self, transaction_id=None, sale_order_id=None, **post): def payment_validate(self, transaction_id=None, sale_order_id=None, **post):
""" Method that should be called by the server when receiving an update """ Method that should be called by the server when receiving an update
for a transaction. State at this point : for a transaction. State at this point :
@ -694,7 +694,7 @@ class Ecommerce(http.Controller):
return request.redirect('/shop/confirmation/%s' % order.id) return request.redirect('/shop/confirmation/%s' % order.id)
@website.route(['/shop/confirmation/<int:sale_order_id>'], type='http', auth="public", multilang=True) @http.route(['/shop/confirmation/<int:sale_order_id>'], type='http', auth="public", website=True, multilang=True)
def payment_confirmation(self, sale_order_id, **post): def payment_confirmation(self, sale_order_id, **post):
""" End of checkout process controller. Confirmation is basically seing """ End of checkout process controller. Confirmation is basically seing
the status of a sale.order. State at this point : the status of a sale.order. State at this point :
@ -710,7 +710,7 @@ class Ecommerce(http.Controller):
return request.website.render("website_sale.confirmation", {'order': order}) return request.website.render("website_sale.confirmation", {'order': order})
@website.route(['/shop/change_sequence/'], type='json', auth="public") @http.route(['/shop/change_sequence/'], type='json', auth="public", website=True)
def change_sequence(self, id, sequence): def change_sequence(self, id, sequence):
product_obj = request.registry.get('product.template') product_obj = request.registry.get('product.template')
if sequence == "top": if sequence == "top":
@ -722,7 +722,7 @@ class Ecommerce(http.Controller):
elif sequence == "down": elif sequence == "down":
product_obj.set_sequence_down(request.cr, request.uid, [id], context=request.context) product_obj.set_sequence_down(request.cr, request.uid, [id], context=request.context)
@website.route(['/shop/change_styles/'], type='json', auth="public") @http.route(['/shop/change_styles/'], type='json', auth="public", website=True)
def change_styles(self, id, style_id): def change_styles(self, id, style_id):
product_obj = request.registry.get('product.template') product_obj = request.registry.get('product.template')
product = product_obj.browse(request.cr, request.uid, id, context=request.context) product = product_obj.browse(request.cr, request.uid, id, context=request.context)
@ -744,7 +744,7 @@ class Ecommerce(http.Controller):
return not active return not active
@website.route(['/shop/change_size/'], type='json', auth="public") @http.route(['/shop/change_size/'], type='json', auth="public", website=True)
def change_size(self, id, x, y): def change_size(self, id, x, y):
product_obj = request.registry.get('product.template') product_obj = request.registry.get('product.template')
product = product_obj.browse(request.cr, request.uid, id, context=request.context) product = product_obj.browse(request.cr, request.uid, id, context=request.context)

View File

@ -1,13 +1,13 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from openerp.addons.website_sale.controllers.main import Ecommerce from openerp.addons.website_sale.controllers.main import Ecommerce
from openerp.addons.web import http
from openerp.addons.web.http import request from openerp.addons.web.http import request
from openerp.addons.website.models import website
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
class Ecommerce(Ecommerce): class Ecommerce(Ecommerce):
@website.route(['/shop/payment/'], type='http', auth="public", multilang=True) @http.route(['/shop/payment/'], type='http', auth="public", website=True, multilang=True)
def payment(self, **post): def payment(self, **post):
cr, uid, context = request.cr, request.uid, request.context cr, uid, context = request.cr, request.uid, request.context
order = self.get_order() order = self.get_order()