[FIX] website: route and redirect: remove all backslash from url
bzr revid: chm@openerp.com-20140314162346-25vohj6ayp65tgiy
This commit is contained in:
parent
9bc57fdc08
commit
353bbdc2c3
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
|
|
@ -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 () {
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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')"/>
|
||||
|
|
|
@ -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':
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
#
|
||||
|
|
|
@ -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) }">
|
||||
|
|
|
@ -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']
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 = {
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
|
||||
|
|
|
@ -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"]')})
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue