summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/website_categories_homepage.py32
-rw-r--r--indoteknik_custom/views/website_categories_homepage.xml8
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 @@
</field>
</record>
+ <record id="website_categories_homepage_ir_actions_server" model="ir.actions.server">
+ <field name="name">Sync To Solr</field>
+ <field name="model_id" ref="indoteknik_custom.model_website_categories_homepage"/>
+ <field name="binding_model_id" ref="indoteknik_custom.model_website_categories_homepage"/>
+ <field name="state">code</field>
+ <field name="code">model.sync_to_solr()</field>
+ </record>
+
<menuitem
id="website_categories_homepage"
name="Website Categories Homepage"