summaryrefslogtreecommitdiff
path: root/addons/website_sale_wishlist/controllers/main.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/website_sale_wishlist/controllers/main.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/website_sale_wishlist/controllers/main.py')
-rw-r--r--addons/website_sale_wishlist/controllers/main.py59
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