diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-08-24 14:47:44 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-08-24 14:47:44 +0700 |
| commit | 8424fbdfd66c6eca58d546c256d57a61e258e930 (patch) | |
| tree | 15b39d461c09d25cead61486ccef355739515d59 | |
| parent | b173abf78bd52ba0cd10829e1a2b31efc371f3cf (diff) | |
solr categories homepage
| -rw-r--r-- | indoteknik_custom/models/website_categories_homepage.py | 32 | ||||
| -rw-r--r-- | indoteknik_custom/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 @@ </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" |
