summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2023-09-08 16:35:17 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2023-09-08 16:35:17 +0700
commit439f7252866ae30b548326ad25f241e513f0fe85 (patch)
tree9c47ae576cd2689529032c27dd15f270aa88bd8f
parent330aab84fc75eb89340d1910b2af8ec5bba7b45d (diff)
Buat SOLR untuk brand website
-rw-r--r--indoteknik_custom/models/solr/__init__.py3
-rw-r--r--indoteknik_custom/models/solr/apache_solr.py2
-rw-r--r--indoteknik_custom/models/solr/website_categories_homepage.py18
-rw-r--r--indoteknik_custom/models/solr/x_manufactures.py69
-rwxr-xr-xindoteknik_custom/views/x_manufactures.xml8
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"