summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2018-08-28 18:16:12 +0200
committerJeremy Kersten <jke@odoo.com>2018-08-29 11:56:27 +0200
commit2bc2ea0039fea11cb6d66c490a88d4d98233435c (patch)
treedac5e51573046532d42694be1acf72fbdd0f8ff8
parentf9b7104f7cdb3fda2de700bc28f83cfa1f737278 (diff)
[FIX] website_sale_wishlist: allow the public user to delete product from the wishlist
Search 'id', 'in' instead to browse old record Update session wishlist_ids when a product is deleted Garbage old archived public wishlist, now we unlink theme directly, but for previous version
-rw-r--r--addons/website_sale_wishlist/controllers/main.py9
-rw-r--r--addons/website_sale_wishlist/models/product_wishlist.py6
2 files changed, 11 insertions, 4 deletions
diff --git a/addons/website_sale_wishlist/controllers/main.py b/addons/website_sale_wishlist/controllers/main.py
index e3b91f9fca5..3df38028749 100644
--- a/addons/website_sale_wishlist/controllers/main.py
+++ b/addons/website_sale_wishlist/controllers/main.py
@@ -48,5 +48,12 @@ class WebsiteSaleWishlist(WebsiteSale):
@http.route(['/shop/wishlist/remove/<model("product.wishlist"):wish>'], type='json', auth="public", website=True)
def rm_from_wishlist(self, wish, **kw):
- wish.active = False
+ 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.active = False
return True
diff --git a/addons/website_sale_wishlist/models/product_wishlist.py b/addons/website_sale_wishlist/models/product_wishlist.py
index a61a5140979..4270b9d0225 100644
--- a/addons/website_sale_wishlist/models/product_wishlist.py
+++ b/addons/website_sale_wishlist/models/product_wishlist.py
@@ -29,7 +29,7 @@ class ProductWishlist(models.Model):
return self
if request.website.is_public_user():
- wish = self.sudo().browse(request.session.get('wishlist_ids', [])).exists()
+ wish = self.sudo().search([('id', 'in', request.session.get('wishlist_ids', []))])
else:
wish = self.search([("partner_id", "=", self.env.user.partner_id.id)])
@@ -50,7 +50,7 @@ class ProductWishlist(models.Model):
@api.model
def _check_wishlist_from_session(self):
"""Assign all wishlist withtout partner from this the current session"""
- session_wishes = self.sudo().browse(request.session.get('wishlist_ids', [])).exists()
+ session_wishes = self.sudo().search([('id', 'in', request.session.get('wishlist_ids', []))])
partner_wishes = self.sudo().search([("partner_id", "=", self.env.user.partner_id.id)])
partner_products = partner_wishes.mapped("product_id")
# Remove session products already present for the user
@@ -64,7 +64,7 @@ class ProductWishlist(models.Model):
@api.model
def _garbage_collector(self, *args, **kwargs):
"""Remove wishlists for unexisting sessions."""
- self.search([
+ self.with_context(active_test=False).search([
("create_date", "<", fields.Datetime.to_string(datetime.now() - timedelta(weeks=kwargs.get('wishlist_week', 5)))),
("partner_id", "=", False),
]).unlink()