[IMP] website_sale: login and complete information

bzr revid: chm@openerp.com-20130710142908-c9xr4pk38zhu7cn1
This commit is contained in:
Christophe Matthieu 2013-07-10 16:29:08 +02:00
parent 1bf0661f69
commit 5f0b723525
5 changed files with 64 additions and 36 deletions

View File

@ -12,13 +12,16 @@ class Ecommerce(http.Controller):
def get_cr_uid(self):
cr = request.cr
uid = request.session._uid or openerp.SUPERUSER_ID
partner_id = request.httprequest.session.get('ecommerce_partner_id', False)
if uid != 1:
request.httprequest.session['ecommerce_partner_id'] = False
partner_id = None
else:
partner_id = request.httprequest.session.get('ecommerce_partner_id', False)
if partner_id and not request.registry.get('res.partner').search(cr, uid, [('id', '=', partner_id)]):
partner_id = None
if not partner_id:
partner_id = request.registry.get('res.users').browse(cr, uid, uid).partner_id.id
if uid != 1:
request.httprequest.session['ecommerce_partner_id'] = partner_id
return (cr, uid, partner_id)
def get_values(self):
@ -42,14 +45,14 @@ class Ecommerce(http.Controller):
order_id = order_obj.create(cr, uid, order_value, context=context)
request.httprequest.session['ecommerce_order'] = order_id
category_ids = category_obj.search(cr, uid, [('parent_id', '=', False)])
category_ids = category_obj.search(cr, openerp.SUPERUSER_ID, [('parent_id', '=', False)])
values = template_values()
values.update({
'temp': 0,
'res_company': request.registry['res.company'].browse(request.cr, uid, 1, context=context),
'order': order_obj.browse(cr, uid, order_id),
'categories': category_obj.browse(cr, uid, category_ids),
'categories': category_obj.browse(cr, openerp.SUPERUSER_ID, category_ids),
})
return values
@ -61,13 +64,13 @@ class Ecommerce(http.Controller):
cat_id = cat_id and int(cat_id) or 0
category_obj = request.registry.get('pos.category')
product_obj = request.registry.get('product.product')
category_ids = category_obj.search(cr, uid, [('parent_id', '=', False)])
product_ids = product_obj.search(cr, uid, cat_id and [('pos_categ_id.id', 'child_of', cat_id)] or [(1, '=', 1)], limit=20, offset=offset)
category_ids = category_obj.search(cr, openerp.SUPERUSER_ID, [('parent_id', '=', False)])
product_ids = product_obj.search(cr, openerp.SUPERUSER_ID, cat_id and [('pos_categ_id.id', 'child_of', cat_id)] or [(1, '=', 1)], limit=20, offset=offset)
values.update({
'current_category': cat_id,
'categories': category_obj.browse(cr, uid, category_ids),
'products': product_obj.browse(cr, uid, product_ids),
'categories': category_obj.browse(cr, openerp.SUPERUSER_ID, category_ids),
'products': product_obj.browse(cr, openerp.SUPERUSER_ID, product_ids),
})
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.products", values)
return html
@ -81,7 +84,7 @@ class Ecommerce(http.Controller):
product_obj = request.registry.get('product.product')
values.update({
'product': product_obj.browse(cr, uid, product_id),
'product': product_obj.browse(cr, openerp.SUPERUSER_ID, product_id),
})
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.product", values)
return html
@ -145,14 +148,20 @@ class Ecommerce(http.Controller):
cr, uid, partner_id = self.get_cr_uid()
values = self.get_values()
partner_obj = request.registry.get('res.partner')
user_obj = request.registry.get('res.users')
values['partner'] = False
partner_id = request.httprequest.session.get('ecommerce_partner_id')
partner_id = uid != 1 and partner_id or request.httprequest.session.get('ecommerce_partner_id')
if post.get("login"):
user_id = user_obj.login(cr, post.get("login"), post.get("password"))
partner_id = user_obj.browse(cr, uid, user_id).partner_id.id
request.httprequest.session['ecommerce_partner_id'] = partner_id
if partner_id:
values['partner'] = partner_obj.browse(cr, uid, partner_id)
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.customer", values)
return html
return request.registry.get("ir.ui.view").render(cr, uid, "website_sale.customer", values)
@http.route(['/shop/confirm_cart'], type='http', auth="db")
def confirm_cart(self, *arg, **post):
@ -161,9 +170,9 @@ class Ecommerce(http.Controller):
partner_obj = request.registry.get('res.partner')
values['partner'] = False
partner_id = request.httprequest.session.get('ecommerce_partner_id')
partner_id = uid != 1 and partner_id or request.httprequest.session.get('ecommerce_partner_id')
if post:
post['country_id'] = (request.registry.get('res.country').search(cr, uid, [('name', 'ilike', post.pop('country'))]) + [None])[0]
post['country_id'] = (request.registry.get('res.country').search(cr, openerp.SUPERUSER_ID, [('name', 'ilike', post.pop('country'))]) + [None])[0]
post['state_id'] = (request.registry.get('res.country.state').search(cr, uid, [('name', 'ilike', post.pop('state'))]) + [None])[0]
if partner_id:
@ -174,12 +183,13 @@ class Ecommerce(http.Controller):
request.httprequest.session['ecommerce_partner_id'] = partner_id
values['partner'] = partner_obj.browse(cr, uid, partner_id)
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.order", values)
return html
return request.registry.get("ir.ui.view").render(cr, uid, "website_sale.order", values)
@http.route(['/shop/confirm_order'], type='http', auth="db")
def confirm_order(self, *arg, **post):
cr, uid, partner_id = self.get_cr_uid()
if uid == 1:
return customer()
values = self.get_values()
values['order'].write({'state': 'progress'})
values['partner'] = request.registry.get('res.partner').browse(cr, uid, partner_id)

View File

@ -18,7 +18,7 @@
margin-top: 10px;
}
.oe_ecommerce .oe_total td {
padding: 10px;
padding: 5px 10px;
}
.oe_ecommerce .oe_products .oe_product {
text-align: center;
@ -139,3 +139,6 @@
background: -o-linear-gradient(#51a351, #418541);
background: linear-gradient(#51a351, #418541);
}
.oe_ecommerce form.oe_signup {
display: none;
}

View File

@ -11,7 +11,7 @@
.oe_total
margin-top: 10px
td
padding: 10px
padding: 5px 10px
font-family: "Lato"
font-size: 13px
.oe_products
@ -98,3 +98,5 @@
@include background(linear-gradient(#0088cc,#0076b1))
&.btn-success
@include background(linear-gradient(#51a351, #418541))
form.oe_signup
display: none

View File

@ -18,4 +18,8 @@ $(document).ready(function (){
$('.oe_ecommerce .oe_total').replaceWith(''+result.totalHTML);
});
});
$('.oe_ecommerce form').on('click', '.oe_toggleform', function (ev) {
ev.preventDefault();
$('.oe_ecommerce form').toggle();
});
});

View File

@ -154,7 +154,7 @@
<field name="type">qweb</field>
<field name="arch" type="xml">
<div class="oe_total">
<div class="media well">
<div class="media well well-small">
<table t-if="order.order_line">
<tr><td>Untaxed Amount</td><td><t t-esc="order.amount_untaxed"/></td></tr>
<tr><td>Taxes</td><td><t t-esc="order.amount_tax"/></td></tr>
@ -175,23 +175,32 @@
<t t-call="website_sale.page">
<t t-set="title">Your informations</t>
<t t-set="shop_content">
<form action="/shop/confirm_cart" method="post">
<div>Please enter your informations</div>
<input name="name" required="True" placeholder="Name..." t-att-value="partner and partner.name or ''"/><br/>
<input name="phone" type="tel" required="True" placeholder="Phone number..." t-att-value="partner and partner.phone or ''"/>
<input name="email" type="email" required="True" placeholder="Email..." t-att-value="partner and partner.email or ''"/>
<div>Please enter your address</div>
<address>
<input name="street" required="True" placeholder="Street..." t-att-value="partner and partner.street or ''"/><br/>
<input name="street2" placeholder="Street..." t-att-value="partner and partner.street2 or ''"/><br/>
<input name="zip" required="True" placeholder="Zip-code..." t-att-value="partner and partner.zip or ''"/>
<input name="city" required="True" placeholder="City..." t-att-value="partner and partner.city or ''"/><br/>
<input name="country" required="True" placeholder="Country..." t-att-value="partner and partner.country_id and partner.country_id.name_get()[0][1] or ''"/>
<input name="state" placeholder="State..." t-att-value="partner and partner.state_id and partner.state_id.name_get()[0][1] or ''"/>
</address>
<button class="btn btn-success">Next stage</button>
<t t-call="website_sale.total"/>
<form action="/shop/customer" class="oe_signin" method="post" t-if="not partner">
<h5>Please Sign in or enter your informations</h5>
<input name="login" type="text" placeholder="Login..."/><br/>
<input name="password" type="password" placeholder="Password..."/><br/>
<button type="submit" class="btn btn-success">Next stage</button> or <button type="reset" class="btn btn-primary oe_toggleform">Complete your address</button>
</form>
<form action="/shop/confirm_cart" class="oe_signup" method="post" t-att-style="partner and 'display:block' or ''">
<h5 t-if="partner">Please confirm your informations</h5>
<h5 t-if="not partner">Please enter your informations</h5>
<input name="name" type="text" required="True" placeholder="Name..." t-att-value="partner and partner.name or ''"/><br/>
<input name="phone" type="tel"
required="True" placeholder="Phone number..." t-att-value="partner and partner.phone or ''"/>
<input name="email" type="email" required="True" placeholder="Email..." t-att-value="partner and partner.email or ''"/>
<h5 t-if="partner">Please confirm your address</h5>
<h5 t-if="not partner">Please enter your address</h5>
<address>
<input name="street" type="text" required="True" placeholder="Street..." t-att-value="partner and partner.street or ''"/><br/>
<input name="street2" type="text" placeholder="Street..." t-att-value="partner and partner.street2 or ''"/><br/>
<input name="zip" type="text" required="True" placeholder="Zip-code..." t-att-value="partner and partner.zip or ''"/>
<input name="city" type="text" required="True" placeholder="City..." t-att-value="partner and partner.city or ''"/><br/>
<input name="country" type="text" required="True" placeholder="Country..." t-att-value="partner and partner.country_id and partner.country_id.name_get()[0][1] or ''"/>
<input name="state" type="text" placeholder="State..." t-att-value="partner and partner.state_id and partner.state_id.name_get()[0][1] or ''"/>
</address>
<button type="submit" class="btn btn-success">Next stage</button><t t-if="not partner"> or <button type="reset" class="btn btn-primary oe_toggleform">Sign in</button></t>
</form>
<t t-call="website_sale.total"/>
</t>
</t>
</field>