diff options
| author | Jeremy Kersten <jke@odoo.com> | 2018-08-28 18:16:12 +0200 |
|---|---|---|
| committer | Jeremy Kersten <jke@odoo.com> | 2018-08-29 11:56:27 +0200 |
| commit | 2bc2ea0039fea11cb6d66c490a88d4d98233435c (patch) | |
| tree | dac5e51573046532d42694be1acf72fbdd0f8ff8 | |
| parent | f9b7104f7cdb3fda2de700bc28f83cfa1f737278 (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.py | 9 | ||||
| -rw-r--r-- | addons/website_sale_wishlist/models/product_wishlist.py | 6 |
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() |
