[IMP] website: add auth_method_public
bzr revid: chm@openerp.com-20130801124850-9ycc9j77wphiiww6
This commit is contained in:
parent
c672dfb6d9
commit
bd23b31721
|
@ -6,45 +6,31 @@ from openerp.addons.web.controllers import main
|
|||
from openerp.addons.web.http import request
|
||||
|
||||
|
||||
class website(http.Controller):
|
||||
public_user_id = None
|
||||
def auth_method_public():
|
||||
registry = openerp.modules.registry.RegistryManager.get(request.db)
|
||||
with registry.cursor() as cr:
|
||||
request.public_uid = request.registry['ir.model.data'].get_object_reference(cr, openerp.SUPERUSER_ID, 'website', 'public_user')[1]
|
||||
if not request.session.uid:
|
||||
request.uid = request.public_uid
|
||||
else:
|
||||
request.uid = request.session.uid
|
||||
http.auth_methods['public'] = auth_method_public
|
||||
|
||||
def get_uid(self):
|
||||
try:
|
||||
request.session.check_security()
|
||||
uid = request.session._uid
|
||||
except http.SessionExpiredException:
|
||||
if not website.public_user_id:
|
||||
data_obj = request.registry['ir.model.data']
|
||||
website.public_user_id = data_obj.get_object_reference(request.cr, openerp.SUPERUSER_ID, 'website', 'public_user')[1]
|
||||
uid = website.public_user_id
|
||||
|
||||
return uid
|
||||
|
||||
def isloggued(self):
|
||||
return website.public_user_id != self.get_uid()
|
||||
|
||||
def render(self, cr, uid, template, add_values={}):
|
||||
class website(object):
|
||||
def render(self, template, add_values={}):
|
||||
script = "\n".join(['<script type="text/javascript" src="%s"></script>' % i for i in main.manifest_list('js', db=request.db)])
|
||||
css = "\n".join('<link rel="stylesheet" href="%s">' % i for i in main.manifest_list('css', db=request.db))
|
||||
_values = {
|
||||
'editable': self.isloggued(),
|
||||
'editable': request.uid != request.public_uid,
|
||||
'request': request,
|
||||
'registry': request.registry,
|
||||
'cr': cr,
|
||||
'uid': uid,
|
||||
'cr': request.cr,
|
||||
'uid': request.uid,
|
||||
'script': script,
|
||||
'css': css,
|
||||
'host_url': request.httprequest.host_url,
|
||||
}
|
||||
_values.update(add_values)
|
||||
return request.registry.get("ir.ui.view").render(cr, uid, template, _values)
|
||||
|
||||
@staticmethod
|
||||
def route(*args, **kwargs):
|
||||
def wrap(_funct):
|
||||
@http.route(*args, **kwargs)
|
||||
def wrapper(self, *a, **k):
|
||||
return _funct(self, request.cr, self.get_uid(), *a, **k)
|
||||
return wrapper
|
||||
return wrap
|
||||
return request.registry.get("ir.ui.view").render(request.cr, request.uid, template, _values)
|
||||
website = website()
|
|
@ -1,19 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
|
||||
class website_hr(website):
|
||||
class website_hr(http.Controller):
|
||||
|
||||
@website.route(['/team'], type='http', auth="admin")
|
||||
def blog(self, cr, uid, **post):
|
||||
@http.route(['/team'], type='http', auth="public")
|
||||
def blog(self, **post):
|
||||
hr_obj = request.registry['hr.employee']
|
||||
|
||||
employee_ids = hr_obj.search(cr, uid, [(1, "=", 1)])
|
||||
employee_ids = hr_obj.search(request.cr, request.uid, [(1, "=", 1)])
|
||||
values = {
|
||||
'res_company': request.registry['res.company'].browse(cr, uid, 1),
|
||||
'employee_ids': hr_obj.browse(cr, uid, employee_ids),
|
||||
'res_company': request.registry['res.company'].browse(request.cr, request.uid, 1),
|
||||
'employee_ids': hr_obj.browse(request.cr, request.uid, employee_ids),
|
||||
}
|
||||
|
||||
html = self.render(cr, uid, "website_hr.index", values)
|
||||
html = website.render(request.cr, request.uid, "website_hr.index", values)
|
||||
return html
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website import website
|
||||
import werkzeug
|
||||
|
@ -10,15 +11,15 @@ import simplejson
|
|||
_months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May"), 6:_("June"), 7:_("July"), 8:_("August"), 9:_("September"), 10:_("October"), 11:_("November"), 12:_("December")}
|
||||
|
||||
|
||||
class website_mail(website):
|
||||
class website_mail(http.Controller):
|
||||
|
||||
@website.route(['/blog', '/blog/<int:mail_group_id>', '/blog/<int:mail_group_id>/<int:blog_id>'], type='http', auth="admin")
|
||||
def blog(self, cr, uid, mail_group_id=None, blog_id=None, **post):
|
||||
@http.route(['/blog', '/blog/<int:mail_group_id>', '/blog/<int:mail_group_id>/<int:blog_id>'], type='http', auth="public")
|
||||
def blog(self, mail_group_id=None, blog_id=None, **post):
|
||||
group_obj = request.registry['mail.group']
|
||||
message_obj = request.registry['mail.message']
|
||||
|
||||
values = {
|
||||
'res_company': request.registry['res.company'].browse(cr, uid, 1),
|
||||
'res_company': request.registry['res.company'].browse(request.cr, request.uid, 1),
|
||||
'blog_ids': None,
|
||||
'blog_id': None,
|
||||
'nav_list': dict(),
|
||||
|
@ -27,8 +28,8 @@ class website_mail(website):
|
|||
'mail_group_id': mail_group_id,
|
||||
}
|
||||
domain = mail_group_id and [("res_id", "=", mail_group_id)] or []
|
||||
|
||||
for group in message_obj.read_group(cr, uid, domain + group_obj.get_public_domain(cr, uid), ['subject', 'date'], groupby="date", orderby="create_date asc"):
|
||||
|
||||
for group in message_obj.read_group(request.cr, request.uid, domain + group_obj.get_public_blog(request.cr, request.uid), ['subject', 'date'], groupby="date", orderby="create_date asc"):
|
||||
year = group['date'].split(" ")[1]
|
||||
if not values['nav_list'].get(year):
|
||||
values['nav_list'][year] = {'name': year, 'date_count': 0, 'months': []}
|
||||
|
@ -36,57 +37,60 @@ class website_mail(website):
|
|||
values['nav_list'][year]['months'].append(group)
|
||||
|
||||
if post.get('date'):
|
||||
ids = group_obj.get_public_message_ids(cr, uid, domain=domain + [("date", ">", post.get('date'))], order="create_date asc", limit=10)
|
||||
ids = group_obj.get_public_message_ids(request.cr, request.uid, domain=domain + [("date", ">", post.get('date'))], order="create_date asc", limit=10)
|
||||
if ids:
|
||||
values['prev_date'] = message_obj.browse(cr, uid, ids.pop()).date
|
||||
values['prev_date'] = message_obj.browse(request.cr, request.uid, ids.pop()).date
|
||||
domain += [("date", "<=", post.get('date'))]
|
||||
|
||||
message_ids = group_obj.get_public_message_ids(cr, uid, domain=domain, order="create_date desc", limit=11)
|
||||
message_ids = group_obj.get_public_message_ids(request.cr, request.uid, domain=domain, order="create_date desc", limit=11)
|
||||
if message_ids:
|
||||
values['blog_ids'] = message_obj.browse(cr, uid, message_ids)
|
||||
values['blog_ids'] = message_obj.browse(request.cr, request.uid, message_ids)
|
||||
if len(message_ids) > 10:
|
||||
values['next_date'] = values['blog_ids'].pop().date
|
||||
|
||||
if blog_id:
|
||||
values['blog_id'] = message_obj.browse(cr, uid, blog_id)
|
||||
values['blog_id'] = message_obj.browse(request.cr, request.uid, blog_id)
|
||||
comment_ids = [child_id.id for child_id in values['blog_id'].child_ids]
|
||||
values['comments'] = message_obj.read(cr, uid, comment_ids, ['website_published', 'author_id', 'date', 'body'])
|
||||
values['comments'] = message_obj.read(request.cr, request.uid, comment_ids, ['website_published', 'author_id', 'date', 'body'])
|
||||
|
||||
html = self.render(cr, uid, "website_mail.index", values)
|
||||
html = website.render("website_mail.index", values)
|
||||
return html
|
||||
|
||||
@website.route(['/blog/nav'], type='http', auth="admin")
|
||||
def nav(self, cr, uid, **post):
|
||||
comment_ids = request.registry['mail.group'].get_public_message_ids(cr, uid, domain=safe_eval(post.get('domain')), order="create_date asc", limit=None)
|
||||
return simplejson.dumps(request.registry['mail.message'].read(cr, uid, comment_ids, ['website_published', 'subject', 'res_id']))
|
||||
@http.route(['/blog/nav'], type='http', auth="public")
|
||||
def nav(self, **post):
|
||||
request.uid = website.get_request.uid()
|
||||
comment_ids = request.registry['mail.group'].get_public_message_ids(request.cr, request.uid, domain=safe_eval(post.get('domain')), order="create_date asc", limit=None)
|
||||
return simplejson.dumps(request.registry['mail.message'].read(request.cr, request.uid, comment_ids, ['website_published', 'subject', 'res_id']))
|
||||
|
||||
@website.route(['/blog/publish'], type='http', auth="admin")
|
||||
def publish(self, cr, uid, **post):
|
||||
@http.route(['/blog/publish'], type='http', auth="public")
|
||||
def publish(self, **post):
|
||||
request.uid = website.get_request.uid()
|
||||
message_id = int(post['message_id'])
|
||||
message_obj = request.registry['mail.message']
|
||||
|
||||
blog = message_obj.browse(cr, uid, message_id)
|
||||
message_obj.write(cr, uid, [message_id], {'website_published': not blog.website_published})
|
||||
blog = message_obj.browse(cr, uid, message_id)
|
||||
blog = message_obj.browse(request.cr, request.uid, message_id)
|
||||
message_obj.write(request.cr, request.uid, [message_id], {'website_published': not blog.website_published})
|
||||
blog = message_obj.browse(request.cr, request.uid, message_id)
|
||||
|
||||
return blog.website_published and "1" or "0"
|
||||
|
||||
@website.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="admin")
|
||||
def blog_post(self, cr, uid, mail_group_id=None, blog_id=None, **post):
|
||||
@http.route(['/blog/<int:mail_group_id>/<int:blog_id>/post'], type='http', auth="public")
|
||||
def blog_post(self, mail_group_id=None, blog_id=None, **post):
|
||||
request.uid = website.get_request.uid()
|
||||
url = request.httprequest.host_url
|
||||
if post.get('body'):
|
||||
request.session.body = post.get('body')
|
||||
if not self.isloggued():
|
||||
if not request.uid != request.public_uid:
|
||||
return '%s/admin#action=redirect&url=%s/blog/%s/%s/post' % (url, url, mail_group_id, blog_id)
|
||||
|
||||
if 'body' in request.session and request.session.body:
|
||||
request.registry['mail.group'].message_post(cr, uid, mail_group_id,
|
||||
request.registry['mail.group'].message_post(request.cr, request.uid, mail_group_id,
|
||||
body=request.session.body,
|
||||
parent_id=blog_id,
|
||||
website_published=blog_id and True or False,
|
||||
type='comment',
|
||||
subtype='mt_comment',
|
||||
context={'mail_create_nosubscribe': True},
|
||||
context={'mail_create_nosubsrequest.cribe': True},
|
||||
)
|
||||
request.session.body = False
|
||||
|
||||
|
@ -95,14 +99,15 @@ class website_mail(website):
|
|||
else:
|
||||
return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
|
||||
|
||||
@website.route(['/blog/<int:mail_group_id>/new'], type='http', auth="admin")
|
||||
def new_blog_post(self, cr, uid, mail_group_id=None, **post):
|
||||
blog_id = request.registry['mail.group'].message_post(cr, uid, mail_group_id,
|
||||
@http.route(['/blog/<int:mail_group_id>/new'], type='http', auth="public")
|
||||
def new_blog_post(self, mail_group_id=None, **post):
|
||||
request.uid = website.get_request.uid()
|
||||
blog_id = request.registry['mail.group'].message_post(request.cr, request.uid, mail_group_id,
|
||||
body=_("Blog content.<br/>Please edit this content then you can publish this blog."),
|
||||
subject=_("Blog title"),
|
||||
website_published=False,
|
||||
type='comment',
|
||||
subtype='mt_comment',
|
||||
context={'mail_create_nosubscribe': True},
|
||||
context={'mail_create_nosubsrequest.cribe': True},
|
||||
)
|
||||
return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
|
||||
|
|
|
@ -32,12 +32,12 @@ class mail_message(osv.osv):
|
|||
class mail_group(osv.Model):
|
||||
_inherit = 'mail.group'
|
||||
|
||||
def get_public_domain(self, cr, uid, context=None):
|
||||
def get_public_blog(self, cr, uid, context=None):
|
||||
mail_group_ids = self.search(cr, uid, [('public', '=', 'public')], context=context)
|
||||
return [ ("type", "in", ['comment']),
|
||||
("parent_id", "=", False),
|
||||
("model", "=", 'mail.group'), ("res_id", "in", mail_group_ids)]
|
||||
|
||||
def get_public_message_ids(self, cr, uid, domain=[], order="create_date desc", limit=10, offset=0, context=None):
|
||||
domain += self.get_public_domain(cr, uid, context=context)
|
||||
domain += self.get_public_blog(cr, uid, context=context)
|
||||
return self.pool.get('mail.message').search(cr, uid, domain, order=order, limit=limit, offset=offset, context=context)
|
||||
|
|
|
@ -2,67 +2,51 @@
|
|||
|
||||
import simplejson
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.website import website
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.website.controllers.main import template_values
|
||||
|
||||
|
||||
class Ecommerce(http.Controller):
|
||||
|
||||
def get_cr_uid(self):
|
||||
cr = request.cr
|
||||
uid = request.uid
|
||||
|
||||
if request.session._uid:
|
||||
request.httprequest.session['ecommerce_partner_id'] = False
|
||||
partner_id = request.registry.get('res.users').browse(cr, uid, request.session._uid).partner_id.id
|
||||
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
|
||||
return (cr, uid, partner_id)
|
||||
|
||||
def get_categories(self):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
category_obj = request.registry.get('pos.category')
|
||||
category_ids = category_obj.search(cr, uid, [('parent_id', '=', False)])
|
||||
return category_obj.browse(cr, uid, category_ids)
|
||||
category_ids = category_obj.search(request.cr, request.uid, [('parent_id', '=', False)])
|
||||
return category_obj.browse(request.cr, request.uid, category_ids)
|
||||
|
||||
def get_current_order(self):
|
||||
order = self.get_order(request.httprequest.session.get('ecommerce_order'))
|
||||
request.httprequest.session['ecommerce_order'] = order.id
|
||||
return order
|
||||
|
||||
def get_order(self, order_id=None):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
|
||||
order_obj = request.registry.get('sale.order')
|
||||
# check if order allready exists
|
||||
if order_id:
|
||||
try:
|
||||
order_obj.browse(cr, uid, order_id).pricelist_id
|
||||
order_obj.browse(request.cr, request.uid, order_id).pricelist_id
|
||||
except:
|
||||
order_id = None
|
||||
if not order_id:
|
||||
fields = [k for k, v in order_obj._columns.items()]
|
||||
order_value = order_obj.default_get(cr, uid, fields)
|
||||
order_value['partner_id'] = partner_id or request.registry.get('res.users').browse(cr, uid, uid).partner_id.id
|
||||
order_value.update(order_obj.onchange_partner_id(cr, uid, [], uid, context={})['value'])
|
||||
order_id = order_obj.create(cr, uid, order_value)
|
||||
return order_obj.browse(cr, uid, order_id)
|
||||
order_value = order_obj.default_get(request.cr, request.uid, fields)
|
||||
order_value['partner_id'] = partner_id or request.registry.get('res.users').browse(request.cr, request.uid, request.uid).partner_id.id
|
||||
order_value.update(order_obj.onchange_partner_id(request.cr, request.uid, [], request.uid, context={})['value'])
|
||||
order_id = order_obj.create(request.cr, request.uid, order_value)
|
||||
return order_obj.browse(request.cr, request.uid, order_id)
|
||||
|
||||
def get_values(self):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
|
||||
order = self.get_order(request.httprequest.session.get('ecommerce_order'))
|
||||
request.httprequest.session['ecommerce_order'] = order.id
|
||||
|
||||
values = template_values()
|
||||
values.update({
|
||||
'temp': 0,
|
||||
'res_company': request.registry['res.company'].browse(request.cr, 1, 1),
|
||||
'order': order,
|
||||
def render(self, template, values={}):
|
||||
_values = {
|
||||
'order': self.get_current_order(),
|
||||
'categories': self.get_categories(),
|
||||
})
|
||||
return values
|
||||
}
|
||||
_values.update(values)
|
||||
return website.render(template, _values)
|
||||
|
||||
def recommended_product(self, my_pids):
|
||||
if not my_pids:
|
||||
return []
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
|
||||
my_pids = str(my_pids)[1:-1]
|
||||
product_ids = []
|
||||
query = """
|
||||
|
@ -76,99 +60,91 @@ class Ecommerce(http.Controller):
|
|||
ORDER BY COUNT(sol.order_id) DESC
|
||||
LIMIT 8
|
||||
""" % (my_pids, my_pids)
|
||||
cr.execute(query)
|
||||
for p in cr.fetchall():
|
||||
request.cr.execute(query)
|
||||
for p in request.cr.fetchall():
|
||||
product_ids.append(p[0])
|
||||
return request.registry.get('product.product').browse(cr, uid, product_ids)
|
||||
return request.registry.get('product.product').browse(request.cr, request.uid, product_ids)
|
||||
|
||||
@http.route(['/shop', '/shop/category/<cat_id>'], type='http', auth="admin")
|
||||
def category(self, cat_id=0, offset=0, **post):
|
||||
values = self.get_values()
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
|
||||
domain = []
|
||||
if post.get("search"):
|
||||
domain += ['|', '|', ('name', 'ilike', "%%%s%%" % post.get("search")), ('description', 'ilike', "%%%s%%" % post.get("search")), ('pos_categ_id.name', 'ilike', "%%%s%%" % post.get("search"))]
|
||||
domain += ['|', '|', ('name', 'ilike', "%%%s%%" % post.get("search")), ('desrequest.cription', 'ilike', "%%%s%%" % post.get("search")), ('pos_categ_id.name', 'ilike', "%%%s%%" % post.get("search"))]
|
||||
if cat_id:
|
||||
cat_id = cat_id and int(cat_id) or 0
|
||||
domain = [('pos_categ_id.id', 'child_of', cat_id)] + domain
|
||||
|
||||
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, domain or [(1, '=', 1)], limit=20, offset=offset)
|
||||
product_ids = product_obj.search(request.cr, request.uid, domain or [(1, '=', 1)], limit=20, offset=offset)
|
||||
|
||||
values.update({
|
||||
values = {
|
||||
'current_category': cat_id,
|
||||
'categories': category_obj.browse(cr, uid, category_ids),
|
||||
'products': product_obj.browse(cr, uid, product_ids),
|
||||
'products': product_obj.browse(request.cr, request.uid, product_ids),
|
||||
'search': post.get("search"),
|
||||
})
|
||||
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.products", values)
|
||||
}
|
||||
html = self.render("website_sale.products", values)
|
||||
return html
|
||||
|
||||
@http.route(['/shop/product/<product_id>'], type='http', auth="admin")
|
||||
def product(self, cat_id=0, product_id=0):
|
||||
values = self.get_values()
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
order = self.get_current_order()
|
||||
|
||||
product_id = product_id and int(product_id) or 0
|
||||
product_obj = request.registry.get('product.product')
|
||||
|
||||
line = [line for line in values['order'].order_line if line.product_id.id == product_id]
|
||||
line = [line for line in order.order_line if line.product_id.id == product_id]
|
||||
quantity = line and int(line[0].product_uom_qty) or 0
|
||||
|
||||
values.update({
|
||||
'product': product_obj.browse(cr, uid, product_id),
|
||||
values = {
|
||||
'product': product_obj.browse(request.cr, request.uid, product_id),
|
||||
'quantity': quantity,
|
||||
'recommended_products': self.recommended_product([product_id]),
|
||||
})
|
||||
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.product", values)
|
||||
}
|
||||
html = self.render("website_sale.product", values)
|
||||
return html
|
||||
|
||||
@http.route(['/shop/mycart'], type='http', auth="admin")
|
||||
def mycart(self, **post):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
values = self.get_values()
|
||||
order = self.get_current_order()
|
||||
|
||||
if post.get('code'):
|
||||
pricelist_obj = request.registry.get('product.pricelist')
|
||||
order_obj = request.registry.get('sale.order')
|
||||
pricelist_ids = pricelist_obj.search(cr, uid, [('code', '=', post.get('code'))])
|
||||
pricelist_ids = pricelist_obj.search(request.cr, request.uid, [('code', '=', post.get('code'))])
|
||||
if pricelist_ids:
|
||||
values["order"].write({'pricelist_id': pricelist_ids[0]})
|
||||
order.write({'pricelist_id': pricelist_ids[0]})
|
||||
|
||||
my_pids = [line.product_id.id for line in values['order'].order_line]
|
||||
values["recommended_products"] = self.recommended_product(my_pids)
|
||||
my_pids = [line.product_id.id for line in order.order_line]
|
||||
values= {"recommended_products": self.recommended_product(my_pids)}
|
||||
|
||||
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.mycart", values)
|
||||
html = self.render("website_sale.mycart", values)
|
||||
return html
|
||||
|
||||
@http.route(['/shop/add_cart'], type='http', auth="admin")
|
||||
def add_cart(self, product_id=0, remove=False):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
values = self.get_values()
|
||||
|
||||
context = {}
|
||||
|
||||
order_obj = request.registry.get('sale.order')
|
||||
order_line_obj = request.registry.get('sale.order.line')
|
||||
user_obj = request.registry.get('res.users')
|
||||
|
||||
product_id = product_id and int(product_id) or 0
|
||||
order = values['order']
|
||||
order = self.get_current_order()
|
||||
|
||||
quantity = 0
|
||||
|
||||
# values initialisation
|
||||
order_line_ids = order_line_obj.search(cr, uid, [('order_id', '=', order.id), ('product_id', '=', product_id)], context=context)
|
||||
order_line_ids = order_line_obj.search(request.cr, request.uid, [('order_id', '=', order.id), ('product_id', '=', product_id)], context=context)
|
||||
values = {}
|
||||
if order_line_ids:
|
||||
order_line = order_line_obj.read(cr, uid, order_line_ids, [], context=context)[0]
|
||||
order_line = order_line_obj.read(request.cr, request.uid, order_line_ids, [], context=context)[0]
|
||||
quantity = order_line['product_uom_qty'] + (remove and -1 or 1)
|
||||
if quantity <= 0:
|
||||
order_line_obj.unlink(cr, uid, order_line_ids, context=context)
|
||||
order_line_obj.unlink(request.cr, request.uid, order_line_ids, context=context)
|
||||
else:
|
||||
fields = [k for k, v in order_line_obj._columns.items()]
|
||||
values = order_line_obj.default_get(cr, uid, fields, context=context)
|
||||
values = order_line_obj.default_get(request.cr, request.uid, fields, context=context)
|
||||
quantity = 1
|
||||
values['product_uom_qty'] = quantity
|
||||
values['product_id'] = product_id
|
||||
|
@ -177,16 +153,16 @@ class Ecommerce(http.Controller):
|
|||
# change and record value
|
||||
if quantity:
|
||||
pricelist_id = order.pricelist_id and order.pricelist_id.id or False
|
||||
values.update(order_line_obj.product_id_change(cr, uid, [], pricelist_id, product_id,
|
||||
partner_id=partner_id or request.registry.get('res.users').browse(cr, uid, uid).partner_id.id,
|
||||
values.update(order_line_obj.product_id_change(request.cr, request.uid, [], pricelist_id, product_id,
|
||||
partner_id=user_obj.browse(request.cr, request.uid, request.uid).partner_id.id,
|
||||
context=context)['value'])
|
||||
if order_line_ids:
|
||||
order_line_obj.write(cr, uid, order_line_ids, values, context=context)
|
||||
order_line_obj.write(request.cr, request.uid, order_line_ids, values, context=context)
|
||||
else:
|
||||
order_line_id = order_line_obj.create(cr, uid, values, context=context)
|
||||
order_line_id = order_line_obj.create(request.cr, request.uid, values, context=context)
|
||||
order.write({'order_line': [(4, order_line_id)]}, context=context)
|
||||
|
||||
html = request.registry.get("ir.ui.view").render(cr, uid, "website_sale.total", self.get_values())
|
||||
html = self.render("website_sale.total", self.get_values())
|
||||
|
||||
return simplejson.dumps({"quantity": quantity, "totalHTML": html})
|
||||
|
||||
|
@ -196,9 +172,7 @@ class Ecommerce(http.Controller):
|
|||
|
||||
@http.route(['/shop/checkout'], type='http', auth="admin")
|
||||
def checkout(self, **post):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
values = self.get_values()
|
||||
order = values['order']
|
||||
order = self.get_current_order()
|
||||
|
||||
if order.state != 'draft':
|
||||
return self.confirmed(**post)
|
||||
|
@ -211,41 +185,38 @@ class Ecommerce(http.Controller):
|
|||
country_state_obj = request.registry.get('res.country.state')
|
||||
payment_obj = request.registry.get('portal.payment.acquirer')
|
||||
|
||||
values['partner'] = False
|
||||
values = {'partner': False}
|
||||
|
||||
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
|
||||
|
||||
if partner_id:
|
||||
values['partner'] = partner_obj.browse(cr, uid, partner_id)
|
||||
shipping_ids = partner_obj.search(cr, uid, [("parent_id", "=", partner_id), ('type', "=", 'delivery')])
|
||||
if request.uid != request.public_uid:
|
||||
values['partner'] = partner_obj.browse(request.cr, request.uid, partner_id)
|
||||
shipping_ids = partner_obj.search(request.cr, request.uid, [("parent_id", "=", partner_id), ('type', "=", 'delivery')])
|
||||
values['shipping'] = None
|
||||
if shipping_ids:
|
||||
values['shipping'] = partner_obj.browse(cr, uid, shipping_ids[0])
|
||||
values['shipping'] = partner_obj.browse(request.cr, request.uid, shipping_ids[0])
|
||||
|
||||
values['countries'] = country_obj.browse(cr, uid, country_obj.search(cr, uid, [(1, "=", 1)]))
|
||||
values['states'] = country_state_obj.browse(cr, uid, country_state_obj.search(cr, uid, [(1, "=", 1)]))
|
||||
values['countries'] = country_obj.browse(request.cr, request.uid, country_obj.search(request.cr, request.uid, [(1, "=", 1)]))
|
||||
values['states'] = country_state_obj.browse(request.cr, request.uid, country_state_obj.search(request.cr, request.uid, [(1, "=", 1)]))
|
||||
|
||||
payment_ids = payment_obj.search(cr, uid, [('visible', '=', True)])
|
||||
values['payments'] = payment_obj.browse(cr, uid, payment_ids)
|
||||
payment_ids = payment_obj.search(request.cr, request.uid, [('visible', '=', True)])
|
||||
values['payments'] = payment_obj.browse(request.cr, request.uid, payment_ids)
|
||||
for payment in values['payments']:
|
||||
content = payment_obj.render(cr, uid, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total)
|
||||
content = payment_obj.render(request.cr, request.uid, payment.id, order, order.name, order.pricelist_id.currency_id, order.amount_total)
|
||||
payment._content = content
|
||||
|
||||
return request.registry.get("ir.ui.view").render(cr, uid, "website_sale.checkout", values)
|
||||
return self.render("website_sale.checkout", values)
|
||||
|
||||
@http.route(['/shop/confirm_order'], type='http', auth="admin")
|
||||
def confirm_order(self, **post):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
values = self.get_values()
|
||||
order = self.get_current_order()
|
||||
|
||||
json = {'error': [], 'validation': False}
|
||||
partner_obj = request.registry.get('res.partner')
|
||||
user_obj = request.registry.get('res.users')
|
||||
|
||||
if values['order'].state != 'draft':
|
||||
if order.state != 'draft':
|
||||
json['validation'] = True
|
||||
return json
|
||||
if not values['order'].order_line:
|
||||
if not order.order_line:
|
||||
json['error'].append("empty_cart")
|
||||
return json
|
||||
|
||||
|
@ -262,10 +233,10 @@ class Ecommerce(http.Controller):
|
|||
# search or create company
|
||||
company_id = None
|
||||
if post['company']:
|
||||
company_ids = partner_obj.search(cr, uid, [("name", "ilike", post['company']), ('is_company', '=', True)])
|
||||
company_ids = partner_obj.search(request.cr, request.uid, [("name", "ilike", post['company']), ('is_company', '=', True)])
|
||||
company_id = company_ids and company_ids[0] or None
|
||||
if not company_id:
|
||||
company_id = partner_obj.create(cr, uid, {'name': post['company'], 'is_company': True})
|
||||
company_id = partner_obj.create(request.cr, request.uid, {'name': post['company'], 'is_company': True})
|
||||
|
||||
partner_value = {
|
||||
'fax': post['fax'],
|
||||
|
@ -279,10 +250,11 @@ class Ecommerce(http.Controller):
|
|||
'country_id': post['country_id'],
|
||||
'state_id': post['state_id'],
|
||||
}
|
||||
if partner_id:
|
||||
partner_obj.write(cr, uid, [partner_id], partner_value)
|
||||
if request.uid != request.public_uid:
|
||||
partner_id = user_obj.browse(request.cr, request.uid, request.uid).partner_id.id
|
||||
partner_obj.write(request.cr, request.uid, [partner_id], partner_value)
|
||||
else:
|
||||
partner_id = partner_obj.create(cr, uid, partner_value)
|
||||
partner_id = partner_obj.create(request.cr, 1, partner_value)
|
||||
|
||||
shipping_id = None
|
||||
if 'shipping_name' in post:
|
||||
|
@ -300,12 +272,12 @@ class Ecommerce(http.Controller):
|
|||
}
|
||||
domain = [(key, '_id' in key and '=' or 'ilike', '_id' in key and int(value) or value)
|
||||
for key, value in shipping_value.items() if key in required_field + ["type", "parent_id"]]
|
||||
shipping_ids = partner_obj.search(cr, uid, domain)
|
||||
shipping_ids = partner_obj.search(request.cr, request.uid, domain)
|
||||
if shipping_ids:
|
||||
shipping_id = shipping_ids[0]
|
||||
partner_obj.write(cr, uid, [shipping_id], shipping_value)
|
||||
partner_obj.write(request.cr, request.uid, [shipping_id], shipping_value)
|
||||
else:
|
||||
shipping_id = partner_obj.create(cr, uid, shipping_value)
|
||||
shipping_id = partner_obj.create(request.cr, request.uid, shipping_value)
|
||||
|
||||
order_value = {
|
||||
'state': 'progress',
|
||||
|
@ -313,18 +285,17 @@ class Ecommerce(http.Controller):
|
|||
'partner_invoice_id': partner_id,
|
||||
'partner_shipping_id': shipping_id or partner_id
|
||||
}
|
||||
order_value.update(request.registry.get('sale.order').onchange_partner_id(cr, uid, [], uid, context={})['value'])
|
||||
values['order'].write(order_value)
|
||||
order_value.update(request.registry.get('sale.order').onchange_partner_id(request.cr, request.uid, [], request.uid, context={})['value'])
|
||||
order.write(order_value)
|
||||
|
||||
json['validation'] = True
|
||||
return simplejson.dumps(json)
|
||||
|
||||
@http.route(['/shop/confirmed'], type='http', auth="admin")
|
||||
def confirmed(self, **post):
|
||||
cr, uid, partner_id = self.get_cr_uid()
|
||||
|
||||
if request.httprequest.session.get('ecommerce_order'):
|
||||
order = self.get_order(request.httprequest.session.get('ecommerce_order'))
|
||||
order = self.get_current_order()
|
||||
if order.state != 'draft':
|
||||
request.httprequest.session['ecommerce_order_old'] = order.id
|
||||
request.httprequest.session['ecommerce_order'] = None
|
||||
|
@ -333,13 +304,11 @@ class Ecommerce(http.Controller):
|
|||
if not order_old.order_line:
|
||||
return self.mycart(**post)
|
||||
|
||||
values = template_values()
|
||||
values.update({
|
||||
values = {
|
||||
'temp': 0,
|
||||
'res_company': request.registry['res.company'].browse(request.cr, 1, 1),
|
||||
'order': order_old,
|
||||
'categories': self.get_categories(),
|
||||
})
|
||||
return request.registry.get("ir.ui.view").render(cr, uid, "website_sale.confirmed", values)
|
||||
}
|
||||
return self.render("website_sale.confirmed", values)
|
||||
|
||||
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
Loading…
Reference in New Issue