74 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			74 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
import odoo
 | 
						|
from odoo import http
 | 
						|
from odoo import fields
 | 
						|
from odoo.http import request
 | 
						|
from odoo.addons.website_sale.controllers.main import WebsiteSale
 | 
						|
from odoo.addons.website_sale_wishlist.controllers.main import WebsiteSaleWishlist
 | 
						|
 | 
						|
class claricoRecentlyViewed(WebsiteSale):
 | 
						|
    
 | 
						|
    @http.route(['/shop/product/<model("product.template"):product>'], type='http', auth="public", website=True)
 | 
						|
    def product(self, product, category='', search='', **post):
 | 
						|
        response = super(claricoRecentlyViewed, self).product(product=product, category=category, search=search, **post)
 | 
						|
        recently_viewed_product_ids = self.update_recently_viewed_items(product.id)
 | 
						|
        response.qcontext.update(active_id=product.id)
 | 
						|
        if request.session['recently_viewed_product_ids'] :
 | 
						|
            product = request.env['product.template'].search([('id','in',request.session['recently_viewed_product_ids'])])
 | 
						|
            response.qcontext['recently_viewed_product'] = product
 | 
						|
        return response
 | 
						|
    
 | 
						|
    @http.route(['/shop/cart'], type='http', auth="public", website=True)
 | 
						|
    def cart(self, **post):
 | 
						|
        response = super(claricoRecentlyViewed, self).cart(**post)
 | 
						|
        recently_viewed_product_ids = request.session.get( 'recently_viewed_product_ids', False)
 | 
						|
        if recently_viewed_product_ids :
 | 
						|
            product = request.env['product.template'].search([('id','in',request.session['recently_viewed_product_ids'])])
 | 
						|
            response.qcontext['recently_viewed_product'] = product
 | 
						|
        return response
 | 
						|
    
 | 
						|
 | 
						|
    def update_recently_viewed_items(self,product_id):
 | 
						|
        recently_viewed_product_ids = request.session.get( 'recently_viewed_product_ids', False)
 | 
						|
        if recently_viewed_product_ids :
 | 
						|
            if product_id not in request.session['recently_viewed_product_ids'] :
 | 
						|
                tmp = recently_viewed_product_ids
 | 
						|
                tmp.append(product_id)    
 | 
						|
                request.session['recently_viewed_product_ids'] = tmp
 | 
						|
        else :
 | 
						|
            request.session['recently_viewed_product_ids'] = [product_id]
 | 
						|
        return request.session['recently_viewed_product_ids']
 | 
						|
    
 | 
						|
 | 
						|
 | 
						|
class claricoWishlist_RecentlyViewed(WebsiteSaleWishlist):
 | 
						|
    def _get_compute_currency_and_context(self):
 | 
						|
        pricelist_context = dict(request.env.context)
 | 
						|
        pricelist = False
 | 
						|
        if not pricelist_context.get('pricelist'):
 | 
						|
            pricelist = request.website.get_current_pricelist()
 | 
						|
            pricelist_context['pricelist'] = pricelist.id
 | 
						|
        else:
 | 
						|
            pricelist = request.env['product.pricelist'].browse(pricelist_context['pricelist'])
 | 
						|
 | 
						|
        from_currency = request.env.user.company_id.currency_id
 | 
						|
        to_currency = pricelist.currency_id
 | 
						|
        compute_currency = lambda price: from_currency.compute(price, to_currency)
 | 
						|
 | 
						|
        return compute_currency, pricelist_context, pricelist
 | 
						|
    
 | 
						|
    @http.route(['/shop/wishlist'], type='http', auth="public", website=True)
 | 
						|
    def get_wishlist(self, count=False, **kw):
 | 
						|
        response = super(claricoWishlist_RecentlyViewed, self).get_wishlist(count=count,**kw)
 | 
						|
        recently_viewed_product_ids = request.session.get('recently_viewed_product_ids', False)
 | 
						|
        compute_currency, pricelist_context, pricelist = self._get_compute_currency_and_context()
 | 
						|
        if recently_viewed_product_ids :
 | 
						|
            product = request.env['product.template'].search([('id','in',request.session['recently_viewed_product_ids'])])
 | 
						|
            response.qcontext['recently_viewed_product'] = product
 | 
						|
            response.qcontext['compute_currency'] =  compute_currency
 | 
						|
            response.qcontext['pricelist'] =  pricelist
 | 
						|
        return response
 | 
						|
        
 | 
						|
 | 
						|
 | 
						|
   
 |