main.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # -*- coding: utf-8 -*-
  2. import json
  3. from odoo.http import request, route
  4. from odoo.addons.website_sale.controllers.main import WebsiteSale
  5. class WebsiteSaleWishlist(WebsiteSale):
  6. @route(['/shop/wishlist/add'], type='json', auth="public", website=True)
  7. def add_to_wishlist(self, product_id, **kw):
  8. website = request.website
  9. pricelist = website.pricelist_id
  10. product = request.env['product.product'].browse(product_id)
  11. price = product._get_combination_info_variant(
  12. pricelist=website.pricelist_id,
  13. )['price']
  14. Wishlist = request.env['product.wishlist']
  15. if request.website.is_public_user():
  16. Wishlist = Wishlist.sudo()
  17. partner_id = False
  18. else:
  19. partner_id = request.env.user.partner_id.id
  20. wish = Wishlist._add_to_wishlist(
  21. pricelist.id,
  22. pricelist.currency_id.id,
  23. request.website.id,
  24. price,
  25. product_id,
  26. partner_id
  27. )
  28. if not partner_id:
  29. request.session['wishlist_ids'] = request.session.get('wishlist_ids', []) + [wish.id]
  30. return wish
  31. @route(['/shop/wishlist'], type='http', auth="public", website=True, sitemap=False)
  32. def get_wishlist(self, count=False, **kw):
  33. values = request.env['product.wishlist'].with_context(display_default_code=False).current()
  34. if count:
  35. return request.make_response(json.dumps(values.mapped('product_id').ids))
  36. if not len(values):
  37. return request.redirect("/shop")
  38. return request.render("website_sale_wishlist.product_wishlist", dict(wishes=values))
  39. @route(['/shop/wishlist/remove/<model("product.wishlist"):wish>'], type='json', auth="public", website=True)
  40. def rm_from_wishlist(self, wish, **kw):
  41. if request.website.is_public_user():
  42. wish_ids = request.session.get('wishlist_ids') or []
  43. if wish.id in wish_ids:
  44. request.session['wishlist_ids'].remove(wish.id)
  45. request.session.touch()
  46. wish.sudo().unlink()
  47. else:
  48. wish.unlink()
  49. return True