from .. import controller from odoo import http from odoo.http import request class BrandHomepage(controller.Controller): prefix = '/api/v1/' @http.route(prefix + 'brand_homepage', auth='public', methods=['GET', 'OPTIONS']) @controller.Controller.must_authorized() def get_brand_homepage(self, **kw): base_url = request.env['ir.config_parameter'].get_param('web.base.url') query = [('status', '=', 'tayang')] brands_homepage = request.env['website.brand.homepage'].search(query, order='sequence') data = [] for brand_homepage in brands_homepage: query_product = [ ('active', '=', True), ('type', '=', 'product'), ('product_rating', '>', 0), ('x_manufacture', '=', brand_homepage.manufacture_id.id) ] products = request.env['product.template'].search(query_product, order='product_rating desc', limit=12) categories = [] # for product in products: # for c in product.public_categ_ids: # categories.append(c.name) # categories = list(dict.fromkeys(categories)) # product_categories = request.env['product.template'].read_group([ # ('public_categ_ids', '!=', False), # ('x_manufacture', '=', brand_homepage.manufacture_id.id) # ], fields=['public_categ_ids'], groupby=['public_categ_ids'], limit=10) # for product_category in product_categories: # for c in product_category.public_categ_ids: # categories.append(c.name) # categories = list(dict.fromkeys(categories)) commerce_categories = request.env['product.public.category'].search([ ('product_tmpl_ids.x_manufacture', '=', brand_homepage.manufacture_id.id) ], limit=8) data.append({ 'id': brand_homepage.id, 'sequence': brand_homepage.sequence, 'manufacture_id': brand_homepage.manufacture_id.id, 'name': brand_homepage.manufacture_id.x_name, 'image': base_url + 'api/image/website.brand.homepage/image/' + str( brand_homepage.id) if brand_homepage.image else '', 'url': brand_homepage.url, 'categories': [y.name for y in commerce_categories], 'products': [request.env['product.template'].api_single_response(x) for x in products] }) return self.response(data)