# -*- coding: utf-8 -*- ############################################################################# # # Cybrosys Technologies Pvt. Ltd. # # Copyright (C) 2025-TODAY Cybrosys Technologies() # Author: Ashwin T () # # You can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. # # You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE # (LGPL v3) along with this program. # If not, see . # ############################################################################# from odoo import api, models, fields class ProductTemplate(models.Model): _inherit = 'product.template' is_popular = fields.Boolean( string='Is Popular', default=False, help='This product is popular' ) popular_product_count = fields.Integer( string="Displayed Product Count", compute='_compute_popular_product_count', store=True, help='Count of published variants for this product' ) @api.depends('product_variant_ids', 'product_variant_ids.website_published', 'product_variant_ids.active') def _compute_popular_product_count(self): """This function is used for counting the number of published variants for this product""" for product in self: product.popular_product_count = len(product.product_variant_ids.filtered( lambda v: v.website_published and v.active )) def _compute_rating_count(self): """This function is used for counting the number of rating""" for rec in self: reviews = rec.rating_get_stats() count_avg = reviews.get('avg') rec.rating_count = count_avg def _compute_rating_total(self): """This function is used for counting the total rating""" for rec in self: reviews = rec.rating_get_stats() count_total = reviews.get('total') rec.rating_total = count_total rating_count = fields.Float(compute='_compute_rating_count', string='Average Rating', help='helps to know ' 'the Average Rating') rating_total = fields.Integer(compute='_compute_rating_total', string='Total Rating', help='Helps to know the Total Rating')