From 8424fbdfd66c6eca58d546c256d57a61e258e930 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 24 Aug 2023 14:47:44 +0700 Subject: solr categories homepage --- .../models/website_categories_homepage.py | 32 ++++++++++++++++++++-- .../views/website_categories_homepage.xml | 8 ++++++ 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/indoteknik_custom/models/website_categories_homepage.py b/indoteknik_custom/models/website_categories_homepage.py index a0fc1011..2f5b3d92 100644 --- a/indoteknik_custom/models/website_categories_homepage.py +++ b/indoteknik_custom/models/website_categories_homepage.py @@ -1,4 +1,5 @@ -from odoo import fields, models +from odoo import fields, models, api +import json class WebsiteCategoriesHomepage(models.Model): @@ -13,4 +14,31 @@ class WebsiteCategoriesHomepage(models.Model): ('tayang', 'Tayang'), ('tidak_tayang', 'Tidak Tayang') ], string='Status') - product_ids = fields.Many2many('product.template', string='Product Template') + product_ids = fields.Many2many('product.template', string='Product category') + + + @api.constrains('category_id', 'image', 'url', 'sequence', 'status', 'product_ids') + def _sync_category_homepage_to_solr(self): + solr_model = self.env['apache.solr'] + solr = solr_model.connect('product_category_homepage') + + for category in self: + document = solr_model.get_single_doc(solr, category.id) + result = [self.env['product.template'].api_single_response(x) for x in category.product_ids] + products = json.dumps(result, indent=None) + + document.update({ + 'id': category.id, + 'category_id_i': category.category_id.id, + 'name_s': category.category_id.name, + 'image_s': self.env['ir.attachment'].api_image('website.categories.homepage', 'image', category.id), + 'sequence_i': category.sequence or '', + 'url_s': category.url or '', + 'products_s': products, + }) + solr.add([document]) + + def sync_to_solr(self): + categories_ids = self.env.context.get('active_ids', []) + categories = self.env['website.categories.homepage'].search([('id', 'in', categories_ids)]) + categories._sync_category_homepage_to_solr() diff --git a/indoteknik_custom/views/website_categories_homepage.xml b/indoteknik_custom/views/website_categories_homepage.xml index 0a7ef2c2..0a3f684b 100644 --- a/indoteknik_custom/views/website_categories_homepage.xml +++ b/indoteknik_custom/views/website_categories_homepage.xml @@ -49,6 +49,14 @@ + + Sync To Solr + + + code + model.sync_to_solr() + +