diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/website_sale_wishlist/controllers/main.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/website_sale_wishlist/controllers/main.py')
| -rw-r--r-- | addons/website_sale_wishlist/controllers/main.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/addons/website_sale_wishlist/controllers/main.py b/addons/website_sale_wishlist/controllers/main.py new file mode 100644 index 00000000..05f1c984 --- /dev/null +++ b/addons/website_sale_wishlist/controllers/main.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +from odoo import http +from odoo.http import request +from odoo.addons.website_sale.controllers.main import WebsiteSale +import json + + +class WebsiteSaleWishlist(WebsiteSale): + + @http.route(['/shop/wishlist/add'], type='json', auth="public", website=True) + def add_to_wishlist(self, product_id, price=False, **kw): + if not price: + pricelist_context, pl = self._get_pricelist_context() + p = request.env['product.product'].with_context(pricelist_context, display_default_code=False).browse(product_id) + price = p._get_combination_info_variant()['price'] + + Wishlist = request.env['product.wishlist'] + if request.website.is_public_user(): + Wishlist = Wishlist.sudo() + partner_id = False + else: + partner_id = request.env.user.partner_id.id + + wish_id = Wishlist._add_to_wishlist( + pl.id, + pl.currency_id.id, + request.website.id, + price, + product_id, + partner_id + ) + + if not partner_id: + request.session['wishlist_ids'] = request.session.get('wishlist_ids', []) + [wish_id.id] + + return wish_id + + @http.route(['/shop/wishlist'], type='http', auth="public", website=True, sitemap=False) + def get_wishlist(self, count=False, **kw): + values = request.env['product.wishlist'].with_context(display_default_code=False).current() + if count: + return request.make_response(json.dumps(values.mapped('product_id').ids)) + + if not len(values): + return request.redirect("/shop") + + return request.render("website_sale_wishlist.product_wishlist", dict(wishes=values)) + + @http.route(['/shop/wishlist/remove/<model("product.wishlist"):wish>'], type='json', auth="public", website=True) + def rm_from_wishlist(self, wish, **kw): + if request.website.is_public_user(): + wish_ids = request.session.get('wishlist_ids') or [] + if wish.id in wish_ids: + request.session['wishlist_ids'].remove(wish.id) + request.session.modified = True + wish.sudo().unlink() + else: + wish.unlink() + return True |
