diff options
| author | chm@openerp.com <> | 2014-03-14 17:23:46 +0100 |
|---|---|---|
| committer | chm@openerp.com <> | 2014-03-14 17:23:46 +0100 |
| commit | 353bbdc2c3d0e019561eb60aacb36b68b4ed935a (patch) | |
| tree | 3edf0d86cb82f1579552b30c54cc5ed2dd0bc22c /addons | |
| parent | 9bc57fdc08660ae426e0d5910af58ae3cbe432cb (diff) | |
[FIX] website: route and redirect: remove all backslash from url
bzr revid: chm@openerp.com-20140314162346-25vohj6ayp65tgiy
Diffstat (limited to 'addons')
39 files changed, 164 insertions, 164 deletions
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index eff28b61fcd..abc64fee6e0 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -296,7 +296,7 @@ class Website(openerp.addons.web.controllers.main.Home): #------------------------------------------------------ # Helpers #------------------------------------------------------ - @http.route(['/website/kanban/'], type='http', auth="public", methods=['POST'], website=True) + @http.route(['/website/kanban'], type='http', auth="public", methods=['POST'], website=True) def kanban(self, **post): return request.website.kanban_col(**post) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 966810297ea..d4af418309c 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -248,7 +248,7 @@ class website(osv.osv): pmin = pmax - scope if pmax - scope > 0 else 1 def get_url(page): - _url = "%spage/%s/" % (url, page) if page > 1 else url + _url = "%s/page/%s" % (url, page) if page > 1 else url if url_args: _url = "%s?%s" % (_url, werkzeug.url_encode(url_args)) return _url diff --git a/addons/website/static/src/js/website.editor.newpage.js b/addons/website/static/src/js/website.editor.newpage.js index b475223ecd9..77a086790fa 100644 --- a/addons/website/static/src/js/website.editor.newpage.js +++ b/addons/website/static/src/js/website.editor.newpage.js @@ -48,7 +48,7 @@ } }).then(function (val, field, $dialog) { if (val) { - var url = '/website/add/' + encodeURI(val); + var url = '/website/add' + encodeURI(val); if ($dialog.find('input[type="checkbox"]').is(':checked')) url +="?add_menu=1"; document.location = url; } diff --git a/addons/website/static/src/js/website.js b/addons/website/static/src/js/website.js index 249058d91fb..eec815ed8c7 100644 --- a/addons/website/static/src/js/website.js +++ b/addons/website/static/src/js/website.js @@ -103,7 +103,7 @@ var page = +$a.attr("href").split(",").pop().split('-')[1]; data['page'] = page; - $.post('/website/kanban/', data, function (col) { + $.post('/website/kanban', data, function (col) { $col.find("> .thumbnail").remove(); $pagination.last().before(col); }); diff --git a/addons/website/static/src/js/website.mobile.js b/addons/website/static/src/js/website.mobile.js index 59c2328e09b..88a558f5094 100644 --- a/addons/website/static/src/js/website.mobile.js +++ b/addons/website/static/src/js/website.mobile.js @@ -18,9 +18,9 @@ }, start: function () { if (!window.location.origin) { // fix for ie9 - window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: '') + '/'; + window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port: ''); } - document.getElementById("mobile-viewport").src = window.location.origin + window.location.pathname + "#mobile-preview"; + document.getElementById("mobile-viewport").src = window.location.origin + (window.location.pathname.length ? '/' : '') + window.location.pathname + "#mobile-preview"; this.$el.modal(); }, destroy: function () { diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index 2e1477e8f2d..10a43be1bef 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -42,7 +42,7 @@ class WebsiteBlog(http.Controller): @http.route([ '/blog', - '/blog/page/<int:page>/', + '/blog/page/<int:page>', ], type='http', auth="public", website=True, multilang=True) def blogs(self, page=1): BYPAGE = 60 @@ -50,7 +50,7 @@ class WebsiteBlog(http.Controller): blog_obj = request.registry['blog.post'] total = blog_obj.search(cr, uid, [], count=True, context=context) pager = request.website.pager( - url='/blog/', + url='/blog', total=total, page=page, step=BYPAGE, @@ -63,14 +63,14 @@ class WebsiteBlog(http.Controller): }) @http.route([ - '/blog/<model("blog.blog"):blog>/', - '/blog/<model("blog.blog"):blog>/page/<int:page>/', - '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/', - '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/page/<int:page>/', - '/blog/<model("blog.blog"):blog>/date/<string(length=21):date>/', - '/blog/<model("blog.blog"):blog>/date/<string(length=21):date>/page/<int:page>/', - '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/', - '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/page/<int:page>/', + '/blog/<model("blog.blog"):blog>', + '/blog/<model("blog.blog"):blog>/page/<int:page>', + '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>', + '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/page/<int:page>', + '/blog/<model("blog.blog"):blog>/date/<string(length=21):date>', + '/blog/<model("blog.blog"):blog>/date/<string(length=21):date>/page/<int:page>', + '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>', + '/blog/<model("blog.blog"):blog>/tag/<model("blog.tag"):tag>/date/<string(length=21):date>/page/<int:page>', ], type='http', auth="public", website=True, multilang=True) def blog(self, blog=None, tag=None, date=None, page=1, **opt): """ Prepare all values to display the blog. @@ -106,13 +106,13 @@ class WebsiteBlog(http.Controller): domain = [] if blog: - path_filter += "%s/" % blog.id + path_filter += "%s" % blog.id domain += [("id", "in", [post.id for post in blog.blog_post_ids])] if tag: - path_filter += 'tag/%s/' % tag.id + path_filter += 'tag/%s' % tag.id domain += [("id", "in", [post.id for post in tag.blog_post_ids])] if date: - path_filter += "date/%s/" % date + path_filter += "date/%s" % date domain += [("create_date", ">=", date.split("_")[0]), ("create_date", "<=", date.split("_")[1])] blog_post_ids = blog_post_obj.search(cr, uid, domain, context=context) @@ -147,7 +147,7 @@ class WebsiteBlog(http.Controller): return request.website.render("website_blog.blog_post_short", values) @http.route([ - '/blogpost/<model("blog.post"):blog_post>/', + '/blogpost/<model("blog.post"):blog_post>', ], type='http', auth="public", website=True, multilang=True) def blog_post(self, blog_post, tag=None, date=None, page=1, enable_editor=None, **post): """ Prepare all values to display the blog. diff --git a/addons/website_blog/views/website_blog_templates.xml b/addons/website_blog/views/website_blog_templates.xml index 203dcc3bb71..4ca762456f1 100644 --- a/addons/website_blog/views/website_blog_templates.xml +++ b/addons/website_blog/views/website_blog_templates.xml @@ -12,7 +12,7 @@ <!-- Layout add nav and footer --> <template id="header_footer_custom" inherit_id="website.layout" name="Footer News Blog Link"> <xpath expr="//footer//div[@name='info']/ul" position="inside"> - <li><a t-attf-href="/blog/%(website_blog.blog_blog_1)d/">News</a></li> + <li><a t-attf-href="/blog/%(website_blog.blog_blog_1)d">News</a></li> </xpath> </template> diff --git a/addons/website_crm_partner_assign/controllers/main.py b/addons/website_crm_partner_assign/controllers/main.py index fbfb1908a14..6d6dda59a99 100644 --- a/addons/website_crm_partner_assign/controllers/main.py +++ b/addons/website_crm_partner_assign/controllers/main.py @@ -13,21 +13,21 @@ class WebsiteCrmPartnerAssign(http.Controller): _references_per_page = 20 @http.route([ - '/partners/', - '/partners/page/<int:page>/', + '/partners', + '/partners/page/<int:page>', '/partners/grade/<int:grade_id>', - '/partners/grade/<int:grade_id>/page/<int:page>/', + '/partners/grade/<int:grade_id>/page/<int:page>', '/partners/country/<int:country_id>', '/partners/country/<country_name>-<int:country_id>', - '/partners/country/<int:country_id>/page/<int:page>/', - '/partners/country/<country_name>-<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/grade/<int:grade_id>/country/<int:country_id>/', + '/partners/grade/<int:grade_id>/country/<int:country_id>', '/partners/grade/<int:grade_id>/country/<country_name>-<int:country_id>', - '/partners/grade/<int:grade_id>/country/<int:country_id>/page/<int:page>/', - '/partners/grade/<int:grade_id>/country/<country_name>-<int:country_id>/page/<int:page>/', + '/partners/grade/<int:grade_id>/country/<int:country_id>/page/<int:page>', + '/partners/grade/<int:grade_id>/country/<country_name>-<int:country_id>/page/<int:page>', ], type='http', auth="public", website=True, multilang=True) def partners(self, country_id=0, grade_id=0, page=0, **post): @@ -72,7 +72,7 @@ class WebsiteCrmPartnerAssign(http.Controller): partner_ids = partner_obj.search( request.cr, openerp.SUPERUSER_ID, partner_domain, context=request.context) - pager = request.website.pager(url="/partners/", total=len(partner_ids), page=page, step=self._references_per_page, scope=7, url_args=post) + pager = request.website.pager(url="/partners", total=len(partner_ids), page=page, step=self._references_per_page, scope=7, url_args=post) # search for partners to display partners_data = partner_obj.search_read(request.cr, openerp.SUPERUSER_ID, @@ -110,7 +110,7 @@ class WebsiteCrmPartnerAssign(http.Controller): } return request.website.render("website_crm_partner_assign.index", values) - @http.route(['/partners/<int:partner_id>/', '/partners/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, 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): partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) values = website_partner.get_partner_template_value(partner) diff --git a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml index cd2e3cb58bd..56ac22d1eee 100644 --- a/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml +++ b/addons/website_crm_partner_assign/views/website_crm_partner_assign.xml @@ -5,7 +5,7 @@ <!-- Layout add nav and footer --> <template id="footer_custom" inherit_id="website.layout" name="Footer Partners Link"> <xpath expr="//footer//div[@name='info']/ul" position="inside"> - <li><a href="/partners/">Resellers</a></li> + <li><a href="/partners">Resellers</a></li> </xpath> </template> @@ -55,7 +55,7 @@ <t t-foreach="countries" t-as="country_dict"> <t t-if="country_dict['country_id']"> <li t-att-class="country_dict['country_id'][0] == current_country_id and 'active' or ''"> - <a t-attf-href="#{ country_dict['country_id'][0] and ('/partners/country/%s' % slug(country_dict['country_id'])) or '/partners/' }#{ search_path }"> + <a t-attf-href="#{ country_dict['country_id'][0] and ('/partners/country/%s' % slug(country_dict['country_id'])) or '/partners' }#{ search_path }"> <span class="badge pull-right" t-esc="country_dict['country_id_count'] or ''"/> <t t-esc="country_dict['country_id'][1]"/> </a> @@ -93,11 +93,11 @@ <t t-set="internal_gid" t-value="partner_data['grade_id'][1]"/> </t> <div class="media"> - <a class="pull-left" t-attf-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> + <a class="pull-left" t-attf-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data['image_small']}"/> </a> <div class="media-body" style="min-height: 64px;"> - <a class="media-heading" t-attf-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"><t t-if="partner_data['parent_id']"><span t-esc="partner_data['parent_id'][1]"/></t> <span t-esc="partner_data['name']"/></a> - <span t-esc="partner_data['grade_id'][1]"/> + <a class="media-heading" t-attf-href="/partners/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"><t t-if="partner_data['parent_id']"><span t-esc="partner_data['parent_id'][1]"/></t> <span t-esc="partner_data['name']"/></a> - <span t-esc="partner_data['grade_id'][1]"/> <div t-esc="partner_data['website_short_description']"/> </div> </div> @@ -112,7 +112,7 @@ <xpath expr="//ul[@id='reseller_countries']" position="after"> <h3>World Map</h3> <ul class="nav"> - <iframe t-attf-src="/google_map/?width=320&height=240&partner_ids=#{ google_map_partner_ids }&partner_url=/partners/" + <iframe t-attf-src="/google_map/?width=320&height=240&partner_ids=#{ google_map_partner_ids }&partner_url=/partners" style="width:320px; height:260px; border:0; padding:0; margin:0;"></iframe> </ul> </xpath> diff --git a/addons/website_customer/controllers/main.py b/addons/website_customer/controllers/main.py index 173b0871dbe..5f0825e132c 100644 --- a/addons/website_customer/controllers/main.py +++ b/addons/website_customer/controllers/main.py @@ -12,12 +12,12 @@ class WebsiteCustomer(http.Controller): _references_per_page = 20 @http.route([ - '/customers/', - '/customers/page/<int:page>/', + '/customers', + '/customers/page/<int:page>', '/customers/country/<int:country_id>', '/customers/country/<country_name>-<int:country_id>', - '/customers/country/<int:country_id>/page/<int:page>/', - '/customers/country/<country_name>-<int:country_id>/page/<int:page>/', + '/customers/country/<int:country_id>/page/<int:page>', + '/customers/country/<country_name>-<int:country_id>/page/<int:page>', ], type='http', auth="public", website=True, multilang=True) def customers(self, country_id=0, page=0, **post): cr, uid, context = request.cr, request.uid, request.context @@ -62,7 +62,7 @@ class WebsiteCustomer(http.Controller): # pager pager = request.website.pager( - url="/customers/", total=len(partner_ids), page=page, step=self._references_per_page, + url="/customers", total=len(partner_ids), page=page, step=self._references_per_page, scope=7, url_args=post ) @@ -83,7 +83,7 @@ class WebsiteCustomer(http.Controller): } return request.website.render("website_customer.index", values) - @http.route(['/customers/<int:partner_id>/', '/customers/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, 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): partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) values = website_partner.get_partner_template_value(partner) diff --git a/addons/website_customer/views/website_customer.xml b/addons/website_customer/views/website_customer.xml index ad924cba55d..ba89f456e23 100644 --- a/addons/website_customer/views/website_customer.xml +++ b/addons/website_customer/views/website_customer.xml @@ -5,7 +5,7 @@ <!-- Layout add nav and footer --> <template id="footer_custom" inherit_id="website.layout" name="Footer Customer References Link"> <xpath expr="//footer//div[@name='info']/ul" position="inside"> - <li><a href="/customers/">Our References</a></li> + <li><a href="/customers">Our References</a></li> </xpath> </template> @@ -44,11 +44,11 @@ </t> <t t-foreach="partners_data" t-as="partner_data" class="media"> <div class="media"> - <a class="pull-left" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> + <a class="pull-left" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> </a> <div class="media-body" style="min-height: 64px;"> - <a t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/" t-esc="partner_data.get('name')"/> + <a t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }" t-esc="partner_data.get('name')"/> <div t-raw="partner_data.get('website_short_description') or ''"/> </div> </div> @@ -68,7 +68,7 @@ <template id="opt_country" inherit_option_id="website_customer.index" name="Show Map"> <xpath expr="//div[@id='ref_left_column']" position="inside"> - <iframe t-attf-src="/google_map/?partner_ids=#{ google_map_partner_ids }&partner_url=/customers/&output=embed/" + <iframe t-attf-src="/google_map/?partner_ids=#{ google_map_partner_ids }&partner_url=/customers/&output=embed" style="width:100%; border:0; padding:0; margin:0;"></iframe> </xpath> </template> @@ -80,7 +80,7 @@ <t t-foreach="countries" t-as="country_dict"> <t t-if="country_dict['country_id']"> <li t-att-class="country_dict['country_id'][0] == current_country_id and 'active' or ''"> - <a t-attf-href="/customers/#{ country_dict['country_id'][0] and 'country/%s/' % slug(country_dict['country_id']) or '' }#{ search_path }"> + <a t-attf-href="/customers/#{ country_dict['country_id'][0] and 'country/%s' % slug(country_dict['country_id']) or '' }#{ search_path }"> <span class="badge pull-right" t-esc="country_dict['country_id_count'] or '0'"/> <t t-esc="country_dict['country_id'][1]"/> </a> @@ -143,7 +143,7 @@ </div> </address> <div> - <a t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/#references/" t-if="implemented_partner_ids"> + <a t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/#references" t-if="implemented_partner_ids"> <t t-esc="len(implemented_partner_ids)"/> references </a> </div> @@ -158,11 +158,11 @@ <t t-if="implemented_partners_data"> <h3 id="references">References</h3> <div t-foreach="implemented_partners_data" t-as="partner_data" class="media"> - <a class="pull-left" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> + <a class="pull-left" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> </a> <div class="media-body" style="min-height: 64px;"> - <a class="media-heading" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> + <a class="media-heading" t-attf-href="/customers/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"> <t t-if="partner_data.get('parent_id')"><span t-esc="partner_data.get('parent_id')[1]"/></t> <span t-esc="partner_data.get('name')"/> </a> <div t-if="partner_data.get('website_short_description')" t-raw="partner_data.get('website_short_description')"/> diff --git a/addons/website_event/controllers/main.py b/addons/website_event/controllers/main.py index eb38e2dbe55..c410536a0b5 100644 --- a/addons/website_event/controllers/main.py +++ b/addons/website_event/controllers/main.py @@ -33,7 +33,7 @@ from openerp import tools import werkzeug.urls class website_event(http.Controller): - @http.route(['/event/', '/event/page/<int:page>'], type='http', auth="public", website=True, multilang=True) + @http.route(['/event', '/event/page/<int:page>'], type='http', auth="public", website=True, multilang=True) def events(self, page=1, **searches): cr, uid, context = request.cr, request.uid, request.context event_obj = request.registry['event.event'] @@ -134,7 +134,7 @@ class website_event(http.Controller): event_count = event_obj.search( request.cr, request.uid, dom_without("none"), count=True, context=request.context) - pager = request.website.pager(url="/event/", total=event_count, page=page, step=step, scope=5) + pager = request.website.pager(url="/event", total=event_count, page=page, step=step, scope=5) order = 'website_published desc, date_begin' if searches.get('date','all') == 'old': diff --git a/addons/website_event/views/website_event.xml b/addons/website_event/views/website_event.xml index e490b1a0687..1096287bb3b 100644 --- a/addons/website_event/views/website_event.xml +++ b/addons/website_event/views/website_event.xml @@ -50,7 +50,7 @@ <li t-foreach="event_ids" t-as="event" class="media"> <div itemscope="itemscope" itemtype="http://schema.org/Event" class="media-body"> <h4 class="media-heading"> - <a itemprop="url" t-att-class="event.state == 'done' and 'text-success'" t-attf-href="/event/#{ slug(event) }/#{(not event.menu_id) and 'register/' or ''}"><span itemprop="name" t-field="event.name"> </span></a> + <a itemprop="url" t-att-class="event.state == 'done' and 'text-success'" t-attf-href="/event/#{ slug(event) }/#{(not event.menu_id) and 'register' or ''}"><span itemprop="name" t-field="event.name"> </span></a> <small t-if="not event.website_published" class="label label-danger">not published</small> </h4> <div> @@ -243,7 +243,7 @@ <div class="container"> <h1 class="mt32">Event not found!</h1> <p>Sorry, the requested event is not available anymore.</p> - <p><a t-attf-href="/event/">Return to the event list.</a></p> + <p><a t-attf-href="/event">Return to the event list.</a></p> </div> </div> </div> diff --git a/addons/website_event_sale/controllers/main.py b/addons/website_event_sale/controllers/main.py index cc9ddc0ad56..2db874cf5b7 100644 --- a/addons/website_event_sale/controllers/main.py +++ b/addons/website_event_sale/controllers/main.py @@ -78,7 +78,7 @@ class website_event(website_event): order_obj.write(request.cr, SUPERUSER_ID, [order.id], {'order_line': [(4, order_line_id)]}, context=request.context) if not _values: - return request.redirect("/event/%s/" % event_id) + return request.redirect("/event/%s" % event_id) return request.redirect("/shop/checkout") def _add_event(self, event_name="New Event", context={}, **kwargs): diff --git a/addons/website_event_sale/static/src/js/website.tour.event_sale.js b/addons/website_event_sale/static/src/js/website.tour.event_sale.js index 3c74cc2317e..c67c412d7d2 100644 --- a/addons/website_event_sale/static/src/js/website.tour.event_sale.js +++ b/addons/website_event_sale/static/src/js/website.tour.event_sale.js @@ -44,7 +44,7 @@ { title: "Complete checkout", waitFor: '#top_menu .my_cart_quantity:contains(5)', - element: 'form[action="/shop/confirm_order/"] .btn:contains("Confirm")', + element: 'form[action="/shop/confirm_order"] .btn:contains("Confirm")', onload: function (tour) { if ($("input[name='name']").val() === "") $("input[name='name']").val("website_sale-test-shoptest"); diff --git a/addons/website_event_track/controllers/event.py b/addons/website_event_track/controllers/event.py index d4b7177814d..466e3d37a40 100644 --- a/addons/website_event_track/controllers/event.py +++ b/addons/website_event_track/controllers/event.py @@ -38,7 +38,7 @@ class website_event(http.Controller): return request.website.render("website_event_track.track_view", values) # TODO: not implemented - @http.route(['/event/<model("event.event"):event>/agenda/'], type='http', auth="public", website=True, 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): values = { 'event': event, @@ -47,7 +47,7 @@ class website_event(http.Controller): return request.website.render("website_event_track.agenda", values) @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>' ], type='http', auth="public", website=True, multilang=True) def event_tracks(self, event, tag=None, **post): @@ -74,7 +74,7 @@ class website_event(http.Controller): } return request.website.render("website_event_track.tracks", values) - @http.route(['/event/<model("event.event"):event>/track_proposal/'], type='http', auth="public", website=True, 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): values = { 'event': event } return request.website.render("website_event_track.event_track_proposal", values) diff --git a/addons/website_event_track/models/event.py b/addons/website_event_track/models/event.py index cfba63cfc6b..1c098232a2e 100644 --- a/addons/website_event_track/models/event.py +++ b/addons/website_event_track/models/event.py @@ -142,12 +142,12 @@ class event_event(osv.osv): context = context or {} result = super(event_event, self)._get_new_menu_pages(cr, uid, event, context=context) if event.show_tracks: - result.append( (_('Talks'), '/event/%s/track/' % slug(event))) - result.append( (_('Agenda'), '/event/%s/agenda/' % slug(event))) + result.append( (_('Talks'), '/event/%s/track' % slug(event))) + result.append( (_('Agenda'), '/event/%s/agenda' % slug(event))) if event.blog_id: - result.append( (_('News'), '/blogpost/'+slug(event.blog_ig))) + result.append( (_('News'), '/blogpost'+slug(event.blog_ig))) if event.show_track_proposal: - result.append( (_('Talk Proposals'), '/event/%s/track_proposal/' % slug(event))) + result.append( (_('Talk Proposals'), '/event/%s/track_proposal' % slug(event))) return result # diff --git a/addons/website_event_track/views/website_event.xml b/addons/website_event_track/views/website_event.xml index 03f6f750b6f..3eb2a4bbbde 100644 --- a/addons/website_event_track/views/website_event.xml +++ b/addons/website_event_track/views/website_event.xml @@ -174,7 +174,7 @@ <template id="tracks_filter" inherit_id="website_event_track.tracks" inherit_option_id="website_event_track.tracks" name="Filter on Tags"> <xpath expr="//div[@id='left_column']" position="inside"> <ul class="nav nav-pills nav-stacked"> - <li t-att-class="'' if searches.get('tag') else 'active'"><a t-attf-href="/event/#{ slug(event) }/track/">All Tags</a></li> + <li t-att-class="'' if searches.get('tag') else 'active'"><a t-attf-href="/event/#{ slug(event) }/track">All Tags</a></li> <t t-foreach="tags" t-as="tag"> <li t-att-class="searches.get('tag') == tag.id and 'active' or ''"> <a t-attf-href="/event/#{ slug(event) }/track/tag/#{ slug(tag) }"> diff --git a/addons/website_google_map/controllers/main.py b/addons/website_google_map/controllers/main.py index 98a86230d7e..01a0cc3b85e 100644 --- a/addons/website_google_map/controllers/main.py +++ b/addons/website_google_map/controllers/main.py @@ -7,7 +7,7 @@ from datetime import datetime class google_map(http.Controller): - @http.route(['/google_map/'], type='http', auth="public", website=True) + @http.route(['/google_map'], type='http', auth="public", website=True) def google_map(self, *arg, **post): values = { 'partner_ids': post.get('partner_ids', ""), @@ -28,7 +28,7 @@ class google_map(http.Controller): return partner_obj.google_map_json(request.cr, openerp.SUPERUSER_ID, partner_ids, request.context) - @http.route(['/google_map/set_partner_position/'], type='http', auth="public", website=True) + @http.route(['/google_map/set_partner_position'], type='http', auth="public", website=True) def google_map_set_partner_position(self, *arg, **post): partner_obj = request.registry['res.partner'] diff --git a/addons/website_google_map/static/src/js/google_map.js b/addons/website_google_map/static/src/js/google_map.js index df5b7011ed7..19f4a5e6423 100644 --- a/addons/website_google_map/static/src/js/google_map.js +++ b/addons/website_google_map/static/src/js/google_map.js @@ -38,7 +38,7 @@ function initialize(pt) { if (status == google.maps.GeocoderStatus.OK) { var location = results[0].geometry.location; - $.post("/google_map/set_partner_position/", { + $.post("/google_map/set_partner_position", { 'partner_id': partner.id, 'latitude': location.ob, 'longitude': location.pb diff --git a/addons/website_hr_recruitment/models/hr_job.py b/addons/website_hr_recruitment/models/hr_job.py index 26036350004..26aad8ae1b8 100644 --- a/addons/website_hr_recruitment/models/hr_job.py +++ b/addons/website_hr_recruitment/models/hr_job.py @@ -9,7 +9,7 @@ class hr_job(osv.osv): def _website_url(self, cr, uid, ids, field_name, arg, context=None): res = dict.fromkeys(ids, '') for job in self.browse(cr, uid, ids, context=context): - res[job.id] = "/jobs/detail/%s/" % job.id + res[job.id] = "/jobs/detail/%s" % job.id return res def job_open(self, cr, uid, ids, context=None): diff --git a/addons/website_hr_recruitment/views/templates.xml b/addons/website_hr_recruitment/views/templates.xml index 9dab6c6accc..3246eb19931 100644 --- a/addons/website_hr_recruitment/views/templates.xml +++ b/addons/website_hr_recruitment/views/templates.xml @@ -236,7 +236,7 @@ <li t-att-class=" '' if department_id else 'active' "><a href="/jobs">All Departments</a></li> <t t-foreach="departments" t-as="department"> <li t-att-class="'active' if department_id == department.id else ''"> - <a t-attf-href="/jobs/department/#{ slug(department) }/" ><span t-field="department.name"/></a> + <a t-attf-href="/jobs/department/#{ slug(department) }" ><span t-field="department.name"/></a> </li> </t> </ul> @@ -255,7 +255,7 @@ <li t-att-class=" '' if office_id else 'active' "><a href="/jobs">All Offices</a></li> <t t-foreach="offices" t-as="thisoffice"> <li t-att-class=" 'active' if office_id == thisoffice.id else '' "> - <a t-attf-href="/jobs/office/#{ slug(thisoffice) }/" > + <a t-attf-href="/jobs/office/#{ slug(thisoffice) }" > <span t-field="thisoffice.city"/><t t-if="thisoffice.country_id">, <span t-field="thisoffice.country_id.name"/> </t> diff --git a/addons/website_mail/controllers/email_designer.py b/addons/website_mail/controllers/email_designer.py index 3eb3c32ac96..fc10abccf2a 100644 --- a/addons/website_mail/controllers/email_designer.py +++ b/addons/website_mail/controllers/email_designer.py @@ -7,7 +7,7 @@ from openerp.addons.web.http import request class WebsiteEmailDesigner(http.Controller): - @http.route('/website_mail/email_designer/<model("email.template"):template>/', type='http', auth="user", website=True, multilang=True) + @http.route('/website_mail/email_designer/<model("email.template"):template>', type='http', auth="user", website=True, multilang=True) def index(self, template, **kw): values = { 'template': template, diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 601e1387f0a..f6d35078b22 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -39,7 +39,7 @@ class WebsiteMail(http.Controller): partner_ids = [user_obj.browse(request.cr, request.uid, request.uid, request.context).partner_id.id] return partner_ids - @http.route(['/website_mail/follow/'], type='json', auth="public", website=True) + @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): _id = int(id) _message_is_follower = message_is_follower == 'on' @@ -57,7 +57,7 @@ class WebsiteMail(http.Controller): return partner_ids[0] in follower_ids and 1 or 0 - @http.route(['/website_mail/is_follower/'], type='json', auth="public", website=True) + @http.route(['/website_mail/is_follower'], type='json', auth="public", website=True) def call(self, model, id, **post): email = request.registry['res.users'].browse(request.cr, request.uid, request.uid, request.context).partner_id.email value = request.registry.get(model).read(request.cr, request.uid, [id], ['message_is_follower'], request.context) diff --git a/addons/website_mail/static/src/js/website_mail.js b/addons/website_mail/static/src/js/website_mail.js index 672a21324a8..99a2f6df2c5 100644 --- a/addons/website_mail/static/src/js/website_mail.js +++ b/addons/website_mail/static/src/js/website_mail.js @@ -9,7 +9,7 @@ var self = this; // set value and display button - openerp.jsonRpc('/website_mail/is_follower/', 'call', { + openerp.jsonRpc('/website_mail/is_follower', 'call', { model: this.$target.data('object'), id: +this.$target.data('id'), }).always(function (data) { diff --git a/addons/website_membership/controllers/main.py b/addons/website_membership/controllers/main.py index a4932c1b46c..11e764f0eac 100644 --- a/addons/website_membership/controllers/main.py +++ b/addons/website_membership/controllers/main.py @@ -14,20 +14,20 @@ class WebsiteMembership(http.Controller): _references_per_page = 20 @http.route([ - '/members/', - '/members/page/<int:page>/', - '/members/association/<int:membership_id>/', - '/members/association/<int:membership_id>/page/<int:page>/', + '/members', + '/members/page/<int:page>', + '/members/association/<int:membership_id>', + '/members/association/<int:membership_id>/page/<int:page>', '/members/country/<int:country_id>', '/members/country/<country_name>-<int:country_id>', - '/members/country/<int:country_id>/page/<int:page>/', - '/members/country/<country_name>-<int:country_id>/page/<int:page>/', + '/members/country/<int:country_id>/page/<int:page>', + '/members/country/<country_name>-<int:country_id>/page/<int:page>', '/members/association/<int:membership_id>/country/<country_name>-<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/<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>', ], type='http', auth="public", website=True, multilang=True) def members(self, membership_id=None, country_name=None, country_id=0, page=0, **post): cr, uid, context = request.cr, request.uid, request.context @@ -88,7 +88,7 @@ class WebsiteMembership(http.Controller): memberships = product_obj.browse(cr, uid, membership_ids, context=context) # request pager for lines - pager = request.website.pager(url="/members/", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post) + pager = request.website.pager(url="/members", total=len(membership_line_ids), page=page, step=self._references_per_page, scope=7, url_args=post) values = { 'partners_data': partners_data, @@ -105,7 +105,7 @@ class WebsiteMembership(http.Controller): } return request.website.render("website_membership.index", values) - @http.route(['/members/<int:partner_id>/', '/members/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, 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): partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) values = website_partner.get_partner_template_value(partner) diff --git a/addons/website_membership/views/website_membership.xml b/addons/website_membership/views/website_membership.xml index 94a7c95fb5d..afd7181a062 100644 --- a/addons/website_membership/views/website_membership.xml +++ b/addons/website_membership/views/website_membership.xml @@ -5,7 +5,7 @@ <!-- Layout add nav and footer --> <template id="footer_custom" inherit_id="website.layout" name="Footer Associations Link"> <xpath expr="//footer//div[@name='info']/ul" position="inside"> - <li><a href="/members/">Members</a></li> + <li><a href="/members">Members</a></li> </xpath> </template> @@ -31,10 +31,10 @@ <div class="col-md-4 mb32" id="left_column"> <ul class="nav nav-pills nav-stacked mt16"> <li class="nav-header"><h3>Associations</h3></li> - <li t-att-class="'' if membership else 'active'"><a href="/members/">All</a></li> + <li t-att-class="'' if membership else 'active'"><a href="/members">All</a></li> <t t-foreach="memberships" t-as="membership_id"> <li t-att-class="membership and membership_id.id == membership.id and 'active' or ''"> - <a t-attf-href="/members/association/#{ membership_id.id }/#{current_country and 'country/%s/' % slug(current_country) or ''}#{ search }"><t t-esc="membership_id.name"/></a> + <a t-attf-href="/members/association/#{ membership_id.id }/#{current_country and 'country/%s' % slug(current_country) or ''}#{ search }"><t t-esc="membership_id.name"/></a> </li> </t> </ul> @@ -61,11 +61,11 @@ </t> <t t-set="partner_data" t-value="partners_data[membership_line_id.partner.id]"/> <div class="media"> - <a class="pull-left" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"> + <a class="pull-left" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"> <img class="media-object" t-attf-src="data:image/png;base64,#{partner_data.get('image_small')}"/> </a> <div class="media-body" style="min-height: 64px;"> - <a class="media-heading" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }/"><t t-if="partner_data.get('parent_id')"><span t-esc="partner_data.get('parent_id')[1]"/></t> <span t-esc="partner_data.get('name')"/></a> + <a class="media-heading" t-attf-href="/members/#{ slug([partner_data.get('id'), partner_data.get('name')]) }"><t t-if="partner_data.get('parent_id')"><span t-esc="partner_data.get('parent_id')[1]"/></t> <span t-esc="partner_data.get('name')"/></a> <div t-raw="partner_data.get('website_short_description')"/> </div> </div> @@ -87,7 +87,7 @@ <li class="nav-header"><h3>Location</h3></li> <t t-foreach="countries"> <li t-if="country_id" t-att-class="country_id[0] == current_country_id and 'active' or ''"> - <a t-attf-href="/members/#{ membership and 'association/%s/' % membership.id or '' }#{ country_id[0] and 'country/%s/' % slug(country_id) or '' }#{ search }"><t t-esc="country_id[1]"/> + <a t-attf-href="/members/#{ membership and 'association/%s' % membership.id or '' }#{ country_id[0] and 'country/%s' % slug(country_id) or '' }#{ search }"><t t-esc="country_id[1]"/> <span class="badge pull-right"><t t-esc="country_id_count or '0'"/></span> </a> </li> @@ -103,7 +103,7 @@ <ul class="nav nav-pills nav-stacked mt16"> <li class="nav-header"><h3>World Map</h3></li> <ul class="nav"> - <iframe t-attf-src="/google_map/?width=320&height=240&partner_ids=#{ google_map_partner_ids }&partner_url=/members/" + <iframe t-attf-src="/google_map/?width=320&height=240&partner_ids=#{ google_map_partner_ids }&partner_url=/members" style="width:320px; height:260px; border:0; padding:0; margin:0;"></iframe> </ul> </ul> diff --git a/addons/website_partner/controllers/main.py b/addons/website_partner/controllers/main.py index 6b0dc18a1f8..1e6cb9afb61 100644 --- a/addons/website_partner/controllers/main.py +++ b/addons/website_partner/controllers/main.py @@ -33,7 +33,7 @@ def get_partner_template_value(partner): return values class WebsitePartner(http.Controller): - @http.route(['/partners/<int:partner_id>/', '/partners/<partner_name>-<int:partner_id>/'], type='http', auth="public", website=True, 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): """ Route for displaying a single partner / customer. """ partner = request.registry['res.partner'].browse(request.cr, SUPERUSER_ID, partner_id, context=request.context) diff --git a/addons/website_project/controllers/main.py b/addons/website_project/controllers/main.py index 4940a521072..e487a981996 100644 --- a/addons/website_project/controllers/main.py +++ b/addons/website_project/controllers/main.py @@ -40,7 +40,7 @@ class Website(osv.Model): class website_project(http.Controller): - @http.route(['/project/<model("project.project"):project>/'], type='http', auth="public", website=True, multilang=True) + @http.route(['/project/<model("project.project"):project>'], type='http', auth="public", website=True, multilang=True) def project(self, project=None, **post): cr, uid, context = request.cr, request.uid, request.context render_values = { diff --git a/addons/website_project/views/website_project.xml b/addons/website_project/views/website_project.xml index 514194083f2..1d511ba3ef1 100644 --- a/addons/website_project/views/website_project.xml +++ b/addons/website_project/views/website_project.xml @@ -6,7 +6,7 @@ <template id="footer_custom" inherit_id="website.layout" name="Footer Project's Links"> <xpath expr="//footer//ul[@name='products']" position="inside"> <li t-foreach="website_project_ids" t-as="project"> - <a t-attf-href="/project/#{ project.id }/"><span t-field="project.name"/></a> + <a t-attf-href="/project/#{ project.id }"><span t-field="project.name"/></a> </li> </xpath> </template> diff --git a/addons/website_quote/static/src/js/website_quotation.js b/addons/website_quote/static/src/js/website_quotation.js index b24ab58a3fb..646cbe25375 100644 --- a/addons/website_quote/static/src/js/website_quotation.js +++ b/addons/website_quote/static/src/js/website_quotation.js @@ -6,7 +6,7 @@ $(document).ready(function () { var order_id = href.match(/order_id=([0-9]+)/); var line_id = href.match(/update_line\/([0-9]+)/); var token = href.match(/token=(.*)/); - openerp.jsonRpc("/quote/update_line/", 'call', { + openerp.jsonRpc("/quote/update_line", 'call', { 'line_id': line_id[1], 'order_id': parseInt(order_id[1]), 'token': token[1], @@ -52,7 +52,7 @@ $(document).ready(function () { if (is_empty || ! signer_name) return false; - openerp.jsonRpc("/quote/accept/", 'call', { + openerp.jsonRpc("/quote/accept", 'call', { 'order_id': parseInt(order_id[1]), 'token': token, 'signer': signer_name, diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index d8a314ad609..66422767af4 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -151,7 +151,7 @@ class Ecommerce(http.Controller): return key_val return False - @http.route(['/shop/filters/'], type='http', auth="public", methods=['POST'], website=True, multilang=True) + @http.route(['/shop/filters'], type='http', auth="public", methods=['POST'], website=True, multilang=True) def filters(self, category=None, **post): index = [] filters = [] @@ -177,10 +177,10 @@ class Ecommerce(http.Controller): filters[index.index(cat_id)].append( cat[2] ) post.pop(key) - url = "/shop/" + url = "/shop" if category: category_obj = request.registry.get('product.public.category') - url = "%scategory/%s/" % (url, slug(category_obj.browse(request.cr, request.uid, int(category), context=request.context))) + url = "%scategory/%s" % (url, slug(category_obj.browse(request.cr, request.uid, int(category), context=request.context))) if filters: url = "%s?filters=%s" % (url, simplejson.dumps(filters)) if post.get("search"): @@ -215,13 +215,13 @@ class Ecommerce(http.Controller): @http.route(['/shop/pricelist'], type='http', auth="public", website=True, multilang=True) def shop_promo(self, promo=None, **post): request.registry['website']._ecommerce_change_pricelist(request.cr, request.uid, code=promo, context=request.context) - return request.redirect("/shop/mycart/") + return request.redirect("/shop/mycart") @http.route([ - '/shop/', - '/shop/page/<int:page>/', - '/shop/category/<model("product.public.category"):category>/', - '/shop/category/<model("product.public.category"):category>/page/<int:page>/' + '/shop', + '/shop/page/<int:page>', + '/shop/category/<model("product.public.category"):category>', + '/shop/category/<model("product.public.category"):category>/page/<int:page>' ], type='http', auth="public", website=True, multilang=True) def shop(self, category=None, page=0, filters='', search='', **post): cr, uid, context = request.cr, request.uid, request.context @@ -241,14 +241,14 @@ class Ecommerce(http.Controller): ids = self.attributes_to_ids(cr, uid, filters) domain.append(('id', 'in', ids or [0])) - url = "/shop/" + url = "/shop" product_count = product_obj.search_count(cr, uid, domain, context=context) if search: post["search"] = search if filters: post["filters"] = filters if category: - url = "/shop/category/%s/" % slug(category) + url = "/shop/category/%s" % slug(category) pager = request.website.pager(url=url, total=product_count, page=page, step=PPG, scope=7, url_args=post) request.context['pricelist'] = self.get_pricelist() @@ -288,7 +288,7 @@ class Ecommerce(http.Controller): } return request.website.render("website_sale.products", values) - @http.route(['/shop/product/<model("product.template"):product>/'], type='http', auth="public", website=True, 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): if category: category_obj = request.registry.get('product.public.category') @@ -333,7 +333,7 @@ class Ecommerce(http.Controller): return request.redirect("/shop/product/%s/?enable_editor=1" % product.product_tmpl_id.id) - @http.route(['/shop/mycart/'], type='http', auth="public", website=True, multilang=True) + @http.route(['/shop/mycart'], type='http', auth="public", website=True, multilang=True) def mycart(self, **post): cr, uid, context = request.cr, request.uid, request.context prod_obj = request.registry.get('product.product') @@ -342,7 +342,7 @@ class Ecommerce(http.Controller): order = self.get_order() if order and order.state != 'draft': request.registry['website'].ecommerce_reset(cr, uid, context=context) - return request.redirect('/shop/') + return request.redirect('/shop') self.get_pricelist() @@ -370,21 +370,21 @@ class Ecommerce(http.Controller): } return request.website.render("website_sale.mycart", values) - @http.route(['/shop/add_cart/'], type='http', auth="public", methods=['POST'], website=True, multilang=True) + @http.route(['/shop/add_cart'], type='http', auth="public", methods=['POST'], website=True, multilang=True) def add_cart(self, product_id, remove=None, **kw): request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, product_id=int(product_id), context=request.context) - return request.redirect("/shop/mycart/") + return request.redirect("/shop/mycart") - @http.route(['/shop/change_cart/<int:order_line_id>/'], type='http', auth="public", website=True, 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): request.registry['website']._ecommerce_add_product_to_cart(request.cr, request.uid, order_line_id=order_line_id, number=(remove and -1 or 1), context=request.context) - return request.redirect("/shop/mycart/") + return request.redirect("/shop/mycart") - @http.route(['/shop/add_cart_json/'], type='json', auth="public", website=True, multilang=True) + @http.route(['/shop/add_cart_json'], type='json', auth="public", website=True, multilang=True) 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, product_id=product_id, order_line_id=order_line_id, number=(remove and -1 or 1), @@ -395,14 +395,14 @@ class Ecommerce(http.Controller): order.amount_total, request.website._render("website_sale.total", {'website_sale_order': order})] - @http.route(['/shop/set_cart_json/'], type='json', auth="public") + @http.route(['/shop/set_cart_json'], type='json', auth="public") def set_cart_json(self, path=None, product_id=None, order_line_id=None, set_number=0, json=None): quantity = 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, context=request.context) return quantity - @http.route(['/shop/checkout/'], type='http', auth="public", website=True, multilang=True) + @http.route(['/shop/checkout'], type='http', auth="public", website=True, multilang=True) def checkout(self, **post): cr, uid, context, registry = request.cr, request.uid, request.context, request.registry @@ -410,7 +410,7 @@ class Ecommerce(http.Controller): order = self.get_order() if not order or order.state != 'draft' or not order.order_line: request.registry['website'].ecommerce_reset(cr, uid, context=context) - return request.redirect('/shop/') + return request.redirect('/shop') # if transaction pending / done: redirect to confirmation tx = context.get('website_sale_transaction') if tx and tx.state != 'draft': @@ -457,7 +457,7 @@ class Ecommerce(http.Controller): return request.website.render("website_sale.checkout", values) - @http.route(['/shop/confirm_order/'], type='http', auth="public", website=True, multilang=True) + @http.route(['/shop/confirm_order'], type='http', auth="public", website=True, multilang=True) def confirm_order(self, **post): cr, uid, context, registry = request.cr, request.uid, request.context, request.registry order_line_obj = request.registry.get('sale.order') @@ -466,7 +466,7 @@ class Ecommerce(http.Controller): order = self.get_order() if not order or order.state != 'draft' or not order.order_line: request.registry['website'].ecommerce_reset(cr, uid, context=context) - return request.redirect('/shop/') + return request.redirect('/shop') # if transaction pending / done: redirect to confirmation tx = context.get('website_sale_transaction') if tx and tx.state != 'draft': @@ -561,9 +561,9 @@ class Ecommerce(http.Controller): order_line_obj.write(cr, SUPERUSER_ID, [order.id], order_info, context=context) - return request.redirect("/shop/payment/") + return request.redirect("/shop/payment") - @http.route(['/shop/payment/'], type='http', auth="public", website=True, multilang=True) + @http.route(['/shop/payment'], type='http', auth="public", website=True, multilang=True) def payment(self, **post): """ Payment step. This page proposes several payment means based on available payment.acquirer. State at this point : @@ -581,7 +581,7 @@ class Ecommerce(http.Controller): order = self.get_order() if not order or order.state != 'draft' or not order.order_line: request.registry['website'].ecommerce_reset(cr, uid, context=context) - return request.redirect("/shop/") + return request.redirect("/shop") # alread a transaction: forward to confirmation tx = context.get('website_sale_transaction') if tx and tx.state != 'draft': @@ -640,7 +640,7 @@ class Ecommerce(http.Controller): order = self.get_order() if not order or not order.order_line or acquirer_id is None: - return request.redirect("/shop/checkout/") + return request.redirect("/shop/checkout") # find an already existing transaction tx = context.get('website_sale_transaction') @@ -712,7 +712,7 @@ class Ecommerce(http.Controller): 'validation': validation } - @http.route('/shop/payment/validate/', type='http', auth="public", website=True, 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): """ Method that should be called by the server when receiving an update for a transaction. State at this point : @@ -735,7 +735,7 @@ class Ecommerce(http.Controller): assert order.website_session_id == request.session['website_session_id'] if not order: - return request.redirect('/shop/') + return request.redirect('/shop') elif order.amount_total and not tx: return request.redirect('/shop/mycart') @@ -784,7 +784,7 @@ class Ecommerce(http.Controller): return request.website.render("website_sale.confirmation", {'order': order}) - @http.route(['/shop/change_sequence/'], type='json', auth="public") + @http.route(['/shop/change_sequence'], type='json', auth="public") def change_sequence(self, id, sequence): product_obj = request.registry.get('product.template') if sequence == "top": @@ -796,7 +796,7 @@ class Ecommerce(http.Controller): elif sequence == "down": product_obj.set_sequence_down(request.cr, request.uid, [id], context=request.context) - @http.route(['/shop/change_styles/'], type='json', auth="public") + @http.route(['/shop/change_styles'], type='json', auth="public") def change_styles(self, id, style_id): product_obj = request.registry.get('product.template') product = product_obj.browse(request.cr, request.uid, id, context=request.context) @@ -818,7 +818,7 @@ class Ecommerce(http.Controller): return not active - @http.route(['/shop/change_size/'], type='json', auth="public") + @http.route(['/shop/change_size'], type='json', auth="public") def change_size(self, id, x, y): product_obj = request.registry.get('product.template') product = product_obj.browse(request.cr, request.uid, id, context=request.context) diff --git a/addons/website_sale/models/product.py b/addons/website_sale/models/product.py index 1cdc206c4af..bfb3c142ca1 100644 --- a/addons/website_sale/models/product.py +++ b/addons/website_sale/models/product.py @@ -38,7 +38,7 @@ class product_template(osv.Model): res = dict.fromkeys(ids, '') base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') for product in self.browse(cr, uid, ids, context=context): - res[product.id] = "%s/shop/product/%s/" % (base_url, product.id) + res[product.id] = "%s/shop/product/%s" % (base_url, product.id) return res _columns = { @@ -139,7 +139,7 @@ class product_product(osv.Model): res = {} base_url = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url') for product in self.browse(cr, uid, ids, context=context): - res[product.id] = "%s/shop/product/%s/" % (base_url, product.product_tmpl_id.id) + res[product.id] = "%s/shop/product/%s" % (base_url, product.product_tmpl_id.id) return res _columns = { diff --git a/addons/website_sale/static/src/js/website.tour.sale.js b/addons/website_sale/static/src/js/website.tour.sale.js index f85a8b22ad7..0ffc6f6e966 100644 --- a/addons/website_sale/static/src/js/website.tour.sale.js +++ b/addons/website_sale/static/src/js/website.tour.sale.js @@ -22,11 +22,11 @@ { title: "click on add to cart", waitFor: 'input[name="product_id"]:eq(1)[checked]', - element: 'form[action="/shop/add_cart/"] .btn', + element: 'form[action="/shop/add_cart"] .btn', }, { title: "add suggested", - element: 'form[action="/shop/add_cart/"] .btn-link:contains("Add to Cart")', + element: 'form[action="/shop/add_cart"] .btn-link:contains("Add to Cart")', }, { title: "add one more iPod", @@ -47,19 +47,19 @@ { title: "go to checkout", waitFor: '#mycart_products input.js_quantity[value=1]', - element: 'a[href="/shop/checkout/"]', + element: 'a[href="/shop/checkout"]', }, { title: "test with input error", - element: 'form[action="/shop/confirm_order/"] .btn:contains("Confirm")', + element: 'form[action="/shop/confirm_order"] .btn:contains("Confirm")', onload: function (tour) { $("input[name='phone']").val(""); }, }, { title: "test without input error", - waitFor: 'form[action="/shop/confirm_order/"] .has-error', - element: 'form[action="/shop/confirm_order/"] .btn:contains("Confirm")', + waitFor: 'form[action="/shop/confirm_order"] .has-error', + element: 'form[action="/shop/confirm_order"] .btn:contains("Confirm")', onload: function (tour) { if ($("input[name='name']").val() === "") $("input[name='name']").val("website_sale-test-shoptest"); diff --git a/addons/website_sale/static/src/js/website_sale.editor.js b/addons/website_sale/static/src/js/website_sale.editor.js index bb21c300fca..fc1fb4e1165 100644 --- a/addons/website_sale/static/src/js/website_sale.editor.js +++ b/addons/website_sale/static/src/js/website_sale.editor.js @@ -44,7 +44,7 @@ sequence = "up"; else if ($a.hasClass('js_go_down')) sequence = "down"; - openerp.jsonRpc('/shop/change_sequence/', 'call', {'id': $data.data('id'), 'sequence': sequence}) + openerp.jsonRpc('/shop/change_sequence', 'call', {'id': $data.data('id'), 'sequence': sequence}) .then(reload_enable_editor); }); @@ -55,7 +55,7 @@ var $product = $a.parents(".oe_product:first"); $li.parent().removeClass("active"); - openerp.jsonRpc('/shop/change_styles/', 'call', {'id': $data.data('id'), 'style_id': $a.data("id")}) + openerp.jsonRpc('/shop/change_styles', 'call', {'id': $data.data('id'), 'style_id': $a.data("id")}) .then(function (result) { $product.toggleClass($a.data("class")); $li.toggleClass("active", result); @@ -89,7 +89,7 @@ var $data = $td.parents(".js_options:first"); var x = $td.index()+1; var y = $td.parent().index()+1; - openerp.jsonRpc('/shop/change_size/', 'call', {'id': $data.data('id'), 'x': x, 'y': y}) + openerp.jsonRpc('/shop/change_size', 'call', {'id': $data.data('id'), 'x': x, 'y': y}) .then(reload_enable_editor); }); diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index 8298f6b22c0..21113326c7d 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -24,7 +24,7 @@ $(document).ready(function () { var $input = $(this); var value = parseInt($input.val(), 10); if (isNaN(value)) value = 0; - openerp.jsonRpc("/shop/set_cart_json/", 'call', {'order_line_id': $input.data('id'), 'set_number': value}) + openerp.jsonRpc("/shop/set_cart_json", 'call', {'order_line_id': $input.data('id'), 'set_number': value}) .then(function (data) { if (!data) { location.reload(); @@ -46,7 +46,7 @@ $(document).ready(function () { var change_cart = href.match(/change_cart\/([0-9]+)/); var order_line_id = change_cart && +change_cart[1] || false; - openerp.jsonRpc("/shop/add_cart_json/", 'call', { + openerp.jsonRpc("/shop/add_cart_json", 'call', { 'product_id': product_id, 'order_line_id': order_line_id, 'remove': $link.is('[href*="remove"]')}) diff --git a/addons/website_sale/static/src/js/website_sale_validate.js b/addons/website_sale/static/src/js/website_sale_validate.js index da917eb1298..6e139468cbc 100644 --- a/addons/website_sale/static/src/js/website_sale_validate.js +++ b/addons/website_sale/static/src/js/website_sale_validate.js @@ -8,7 +8,7 @@ $(document).ready(function () { return; } var order_id = order_node.data('orderId'); - return openerp.jsonRpc('/shop/payment/get_status/' + order_id, 'call', { + return openerp.jsonRpc('/shop/payment/get_status' + order_id, 'call', { }).then(function (result) { var tx_node = $('div.oe_website_sale_tx_status'); _poll_nbr += 1; diff --git a/addons/website_sale/views/website_sale.xml b/addons/website_sale/views/website_sale.xml index 31517b8bfbb..0d7c41706e5 100644 --- a/addons/website_sale/views/website_sale.xml +++ b/addons/website_sale/views/website_sale.xml @@ -20,7 +20,7 @@ <template id="header" inherit_id="website.layout" name="Header Shop My Cart Link"> <xpath expr="//header//ul[@id='top_menu']/li" position="before"> <li t-att-class="(not website_sale_order or not website_sale_order.get_number_of_products()) and 'hidden' or ''"> - <a href="/shop/mycart/"> + <a href="/shop/mycart"> <i class="fa fa-shopping-cart"></i> My cart <sup t-attf-class="my_cart_quantity label label-primary" t-esc="website_sale_order and website_sale_order.get_number_of_products() or ''"/> @@ -33,7 +33,7 @@ <template id="categories_recursive" name="Category list"> <li t-att-class="int(categ) == int(category or 0) and 'active' or ''"> - <a t-attf-href="/shop/category/#{ slug(categ) }/" t-field="categ.name"></a> + <a t-attf-href="/shop/category/#{ slug(categ) }" t-field="categ.name"></a> <ul t-if="categ.child_id" class="nav nav-pills nav-stacked nav-hierarchy"> <t t-foreach="categ.child_id" t-as="categ"> <t t-call="website_sale.categories_recursive"/> @@ -45,7 +45,7 @@ <!-- Product list --> <template id="search" name="Search hidden fields"> - <form t-attf-action="/shop/{{'category/%s/' % slug(category) if category else ''}}" method="get" t-att-class="search_class"> + <form t-attf-action="/shop/{{'category/%s' % slug(category) if category else ''}}" method="get" t-att-class="search_class"> <input t-if="search.get('filters')" type="hidden" name="filters" t-att-value="search.get('filters')"/> <div class="input-group"> <input type="text" name="search" class="search-query form-control" placeholder="Search..." t-att-value="search.get('search') or ''"/> @@ -231,7 +231,7 @@ <template id="add_to_basket" inherit_option_id="website_sale.products_cart" name="Add to Cart"> <xpath expr="//div[@class='product_price']" position="inside"> - <form action="/shop/add_cart/" method="post" style="display: inline-block;"> + <form action="/shop/add_cart" method="post" style="display: inline-block;"> <input name="product_id" t-att-value="product.product_variant_ids[0].id" type="hidden"/> <a class="btn btn-default btn-xs fa fa-shopping-cart a-submit"/> </form> @@ -259,7 +259,7 @@ <div class="container"> <h1 class="mt32">Product not found!</h1> <p>Sorry, this product is not available anymore.</p> - <p><a t-attf-href="/shop/">Return to the product list.</a></p> + <p><a t-attf-href="/shop">Return to the product list.</a></p> </div> </div> </div> @@ -305,7 +305,7 @@ </div><div class="col-sm-5 col-md-5 col-lg-4 col-lg-offset-1"> <h1 itemprop="name" t-field="product.name">Product Name</h1> <span itemprop="url" style="display:none;" t-esc="'/shop/product/%s' % slug(product)"/> - <form action="/shop/add_cart/" class="js_add_cart_json" method="POST"> + <form action="/shop/add_cart" class="js_add_cart_json" method="POST"> <input type="hidden" t-if="len(product.product_variant_ids) == 1" name="product_id" t-att-value="product.product_variant_ids[0].id"/> <t t-if="len(product.product_variant_ids) > 1"> <label label-default="label-default" class="radio" t-foreach="product.product_variant_ids" t-as="variant_id"> @@ -369,7 +369,7 @@ <div class='mt16 text-center'> <span t-field="product.image_small" t-field-options='{"widget": "image", "class": "img-rounded shadow" }'/> <h5> - <a t-attf-href="/shop/product/#{ slug(product) }/" + <a t-attf-href="/shop/product/#{ slug(product) }" style="display: block"> <span t-field='product.name' style="display: block"/> @@ -428,7 +428,7 @@ class='oe_attachment_embedded'></img> </t> <t t-if="attachment.file_type_icon != 'webimage'"> - <img t-att-src="'/mail/static/src/img/mimetypes/' + attachment.file_type + '.png'" + <img t-att-src="'/mail/static/src/img/mimetypes' + attachment.file_type + '.png'" class='oe_attachment_webimage'></img> </t> <div class='oe_attachment_name'><t t-raw='attachment.name' /></div> @@ -495,7 +495,7 @@ </td> <td t-if="line.product_id.product_tmpl_id"> <div> - <a t-attf-href="/shop/product/#{ slug(line.product_id.product_tmpl_id) }/"> + <a t-attf-href="/shop/product/#{ slug(line.product_id.product_tmpl_id) }"> <strong t-field="line.name"/> </a> </div> @@ -524,7 +524,7 @@ <input type="text" class="js_quantity form-control" t-att-data-id="line.id" t-att-value="int(line.product_uom_qty)"/> <span class="input-group-addon"> - <a t-attf-href="../change_cart/#{ line.id }/" class="mb8 float_left js_add_cart_json"> + <a t-attf-href="../change_cart/#{ line.id }" class="mb8 float_left js_add_cart_json"> <i class="fa fa-plus"></i> </a> </span> @@ -536,7 +536,7 @@ </table> <t t-call="website_sale.total"/> <div class="clearfix"/> - <a t-if="website_sale_order and website_sale_order.website_order_line" href="/shop/checkout/" class="btn btn-primary pull-right mb32">Process Checkout <span class="fa fa-long-arrow-right"/></a> + <a t-if="website_sale_order and website_sale_order.website_order_line" href="/shop/checkout" class="btn btn-primary pull-right mb32">Process Checkout <span class="fa fa-long-arrow-right"/></a> <div class="oe_structure"/> </div> <div class="col-lg-3 col-lg-offset-1 col-sm-3 col-md-3 text-muted" id="right_column"> @@ -561,7 +561,7 @@ <template id="continue_shopping" inherit_id="website_sale.mycart" inherit_option_id="website_sale.mycart" name="Continue Shopping Button"> - <xpath expr="//a[@href='/shop/checkout/']" position="before"> + <xpath expr="//a[@href='/shop/checkout']" position="before"> <a href="/shop" class="btn btn-default mb32"><span class="fa fa-long-arrow-left"/> Continue Shopping</a> </xpath> </template> @@ -572,7 +572,7 @@ <template id="products_categories" inherit_option_id="website_sale.products" name="Product Categories"> <xpath expr="//div[@id='products_grid_before']" position="inside"> <ul class="nav nav-pills nav-stacked mt16"> - <li t-att-class=" '' if category else 'active' "><a href="/shop/">All Products</a></li> + <li t-att-class=" '' if category else 'active' "><a href="/shop">All Products</a></li> <t t-foreach="categories" t-as="categ"> <t t-call="website_sale.categories_recursive"/> </t> @@ -648,14 +648,14 @@ <tr t-foreach="suggested_products" t-as="product"> <td> - <a t-attf-href="/shop/product/#{ slug(product.product_tmpl_id) }/"> + <a t-attf-href="/shop/product/#{ slug(product.product_tmpl_id) }"> <span t-field="product.image_small" t-field-options='{"widget": "image", "class": "img-rounded"}'/> </a> </td> <td> <div> - <a t-attf-href="/shop/product/#{ slug(product.product_tmpl_id) }/"> + <a t-attf-href="/shop/product/#{ slug(product.product_tmpl_id) }"> <strong t-field="product.name"/> </a> </div> @@ -675,7 +675,7 @@ }'/> </td> <td class="text-center"> - <form action="/shop/add_cart/" method="post"> + <form action="/shop/add_cart" method="post"> <input name="product_id" t-att-value="product.product_variant_ids[0].id" type="hidden"/> <a class="btn btn-link a-submit"><strong>Add to Cart</strong></a> </form> @@ -692,7 +692,7 @@ <p> Have a coupon code? Fill in this field and apply. </p> - <form t-if="website_sale_order and website_sale_order.website_order_line" action="/shop/pricelist/" method="post" class="mb32"> + <form t-if="website_sale_order and website_sale_order.website_order_line" action="/shop/pricelist" method="post" class="mb32"> <div class="input-group"> <input name="promo" class='form-control' type="text" placeholder="code..." t-att-value="website_sale_order.pricelist_id.code or ''"/> <div class="input-group-btn"> @@ -723,7 +723,7 @@ <li class="text-muted">Confirmation<span class="chevron"></span></li> </ul> <h1>Your Address</h1> - <form action="/shop/confirm_order/" method="post"> + <form action="/shop/confirm_order" method="post"> <div class="row"> <div class="col-md-8 oe_mycart"> @@ -897,7 +897,7 @@ <tr t-foreach="website_sale_order.website_order_line" t-as="line"> <td colspan="2" t-if="not line.product_id.product_tmpl_id"></td> <td t-if="line.product_id.product_tmpl_id"> - <a t-attf-href="/shop/product/#{ slug(line.product_id.product_tmpl_id) }/"> + <a t-attf-href="/shop/product/#{ slug(line.product_id.product_tmpl_id) }"> <span t-field="line.product_id.image_small" t-field-options='{"widget": "image", "class": "img-rounded"}'/> </a> @@ -972,7 +972,7 @@ </div> <div class="js_payment mb64 row" t-if="not website_sale_order.amount_total" id="payment_method"> <div class="col-lg-8 col-sm-8"> - <form target="_self" action="/shop/payment/validate/" method="post" class="pull-right"> + <form target="_self" action="/shop/payment/validate" method="post" class="pull-right"> <a style="width:100px;" class="btn btn-primary a-submit"> <span>Pay Now <span class="fa fa-long-arrow-right"></span></span> </a> diff --git a/addons/website_sale_delivery/controllers/main.py b/addons/website_sale_delivery/controllers/main.py index 73da87b549d..b5402c3e285 100644 --- a/addons/website_sale_delivery/controllers/main.py +++ b/addons/website_sale_delivery/controllers/main.py @@ -7,7 +7,7 @@ from openerp import SUPERUSER_ID class Ecommerce(Ecommerce): - @http.route(['/shop/payment/'], type='http', auth="public", website=True, multilang=True) + @http.route(['/shop/payment'], type='http', auth="public", website=True, multilang=True) def payment(self, **post): cr, uid, context = request.cr, request.uid, request.context order = self.get_order() @@ -16,7 +16,7 @@ class Ecommerce(Ecommerce): if order and carrier_id: # recompute delivery costs request.registry['website']._check_carrier_quotation(cr,uid,order,carrier_id,context=context) - return request.redirect("/shop/payment/") + return request.redirect("/shop/payment") res = super(Ecommerce, self).payment(**post) return res |
