diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2023-09-08 16:35:17 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2023-09-08 16:35:17 +0700 |
| commit | 439f7252866ae30b548326ad25f241e513f0fe85 (patch) | |
| tree | 9c47ae576cd2689529032c27dd15f270aa88bd8f | |
| parent | 330aab84fc75eb89340d1910b2af8ec5bba7b45d (diff) | |
Buat SOLR untuk brand website
| -rw-r--r-- | indoteknik_custom/models/solr/__init__.py | 3 | ||||
| -rw-r--r-- | indoteknik_custom/models/solr/apache_solr.py | 2 | ||||
| -rw-r--r-- | indoteknik_custom/models/solr/website_categories_homepage.py | 18 | ||||
| -rw-r--r-- | indoteknik_custom/models/solr/x_manufactures.py | 69 | ||||
| -rwxr-xr-x | indoteknik_custom/views/x_manufactures.xml | 8 |
5 files changed, 88 insertions, 12 deletions
diff --git a/indoteknik_custom/models/solr/__init__.py b/indoteknik_custom/models/solr/__init__.py index 45ef4299..9a13de77 100644 --- a/indoteknik_custom/models/solr/__init__.py +++ b/indoteknik_custom/models/solr/__init__.py @@ -3,4 +3,5 @@ from . import apache_solr_queue from . import product_pricelist_item from . import product_product from . import product_template -from . import website_categories_homepage
\ No newline at end of file +from . import website_categories_homepage +from . import x_manufactures
\ No newline at end of file diff --git a/indoteknik_custom/models/solr/apache_solr.py b/indoteknik_custom/models/solr/apache_solr.py index 518280ac..f05357bf 100644 --- a/indoteknik_custom/models/solr/apache_solr.py +++ b/indoteknik_custom/models/solr/apache_solr.py @@ -23,7 +23,7 @@ class ApacheSolr(models.Model): if env == 'development': url = 'http://192.168.23.5:8983/solr/' elif env == 'production': - url = 'http://10.148.0.5:8983/solr/' + url = 'http://34.101.189.218:8983/solr/' return pysolr.Solr(url + schema, always_commit=True, timeout=30) diff --git a/indoteknik_custom/models/solr/website_categories_homepage.py b/indoteknik_custom/models/solr/website_categories_homepage.py index 1b517ae6..68a9eb7b 100644 --- a/indoteknik_custom/models/solr/website_categories_homepage.py +++ b/indoteknik_custom/models/solr/website_categories_homepage.py @@ -38,11 +38,9 @@ class WebsiteCategoriesHomepage(models.Model): def unlink(self): res = super(WebsiteCategoriesHomepage, self).unlink() for rec in self: - self.env['apache.solr.queue'].create_unique({ - 'res_model': self._name, - 'res_id': rec.id, - 'function_name': '_sync_delete_solr' - }) + self.solr().delete(rec.id) + self.solr().optimize() + self.solr().commit() return res def _sync_status_category_homepage_solr(self): @@ -74,8 +72,8 @@ class WebsiteCategoriesHomepage(models.Model): self.solr().commit() - def _sync_delete_solr(self): - for rec in self: - self.solr().delete(rec.id) - self.solr().optimize() - self.solr().commit()
\ No newline at end of file + # def _sync_delete_solr(self): + # for rec in self: + # self.solr().delete(rec.id) + # self.solr().optimize() + # self.solr().commit()
\ No newline at end of file diff --git a/indoteknik_custom/models/solr/x_manufactures.py b/indoteknik_custom/models/solr/x_manufactures.py new file mode 100644 index 00000000..b2f0cde0 --- /dev/null +++ b/indoteknik_custom/models/solr/x_manufactures.py @@ -0,0 +1,69 @@ +from odoo import models, fields, api +import logging +from datetime import datetime + +_logger = logging.getLogger(__name__) + +class XManufactures(models.Model): + _inherit = "x_manufactures" + + last_update_solr = fields.Datetime(string='Last Update Solr') + + def update_last_update_solr(self): + self.last_update_solr = datetime.utcnow() + + def solr(self): + return self.env['apache.solr'].connect('brands') + + def _create_solr_queue(self, function_name): + for rec in self: + self.env['apache.solr.queue'].create_unique({ + 'res_model': self._name, + 'res_id': rec.id, + 'function_name': function_name + }) + + @api.constrains('x_name', 'x_logo_manufacture', 'sequence', 'x_negara_asal', 'x_manufacture_level', 'x_short_desc', 'x_produk_aksesoris_sparepart','category_ids') + def _create_solr_queue_sync_brands(self): + self._create_solr_queue('_sync_brands_to_solr') + + def action_sync_to_solr(self): + template_ids = self.env.context.get('active_ids', []) + templates = self.search([('id', 'in', template_ids)]) + templates._create_solr_queue('_sync_brands_to_solr') + + def _sync_brands_to_solr(self): + solr_model = self.env['apache.solr'] + + for brands in self: + document = {} + document.update({ + 'id': brands.id, + 'display_name_s': brands.display_name, + 'name_s': brands.x_name, + 'sequence_i': brands.sequence or '', + 'negara_asal_s': brands.x_negara_asal or '', + 'short_desc_s': brands.x_short_desc or '', + 'image_s': self.env['ir.attachment'].api_image('x_manufactures', 'x_logo_manufacture', brands.id), + 'produk_aksesoris_sparepart_s': brands.x_produk_aksesoris_sparepart or '', + 'categories': [x.id for x in brands.category_ids], + 'banners': [x.id for x in brands.x_manufactures_banners], + }) + self.solr().add([document]) + brands.update_last_update_solr() + + self.solr().commit() + + # def _sync_delete_solr(self): + # for rec in self: + # self.solr().delete(rec.id) + # self.solr().optimize() + # self.solr().commit() + + def unlink(self): + res = super(XManufactures, self).unlink() + for rec in self: + self.solr().delete(rec.id) + self.solr().optimize() + self.solr().commit() + return res
\ No newline at end of file diff --git a/indoteknik_custom/views/x_manufactures.xml b/indoteknik_custom/views/x_manufactures.xml index dd896179..f68a0e00 100755 --- a/indoteknik_custom/views/x_manufactures.xml +++ b/indoteknik_custom/views/x_manufactures.xml @@ -81,6 +81,14 @@ </field> </record> + <record id="ir_actions_server_x_manufactures_sync_to_solr" model="ir.actions.server"> + <field name="name">Sync to solr</field> + <field name="model_id" ref="indoteknik_custom.model_x_manufactures"/> + <field name="binding_model_id" ref="indoteknik_custom.model_x_manufactures"/> + <field name="state">code</field> + <field name="code">model.action_sync_to_solr()</field> + </record> + <menuitem id="x_manufactures_sale" name="Manufactures" parent="sale.product_menu_catalog" |
