summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/keywords.py
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2026-02-24 09:57:15 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2026-02-24 09:57:15 +0700
commit0b64d465d109392cdb4e634b1ccfffa56935d5e5 (patch)
treeb19f9d47e28e7bb8dfdfd9dc0de614c5bab9385d /indoteknik_custom/models/keywords.py
parent79471b69ffc683c3c860ecd6456f638750a8c81f (diff)
parent18bdbf118d2f582ac0c520a9b4cc5b61fe88488f (diff)
Merge branch 'odoo-backup' of https://bitbucket.org/altafixco/indoteknik-addons into odoo-backup
Diffstat (limited to 'indoteknik_custom/models/keywords.py')
-rw-r--r--indoteknik_custom/models/keywords.py43
1 files changed, 32 insertions, 11 deletions
diff --git a/indoteknik_custom/models/keywords.py b/indoteknik_custom/models/keywords.py
index 5b7da705..3fa9dd72 100644
--- a/indoteknik_custom/models/keywords.py
+++ b/indoteknik_custom/models/keywords.py
@@ -133,7 +133,7 @@ class Keywords(models.Model):
def _onchange_solr_flag(self):
"""Set solr_flag=2 when tracked fields change to trigger queue sync"""
for record in self:
- if not record.skip:
+ if len(record.product_ids) > 0:
record.solr_flag = 2
def solr_flag_to_queue(self, limit=500):
@@ -161,10 +161,18 @@ class Keywords(models.Model):
return True
def _sync_keywords_queue_callback(self):
- """Callback method executed by apache.solr.queue - syncs keyword data to Solr"""
- documents = []
+ success_keywords = self.browse()
+
for keyword in self:
+ if not keyword.product_ids:
+ _logger.info(
+ 'Skipping Solr sync for keyword "%s" - no products found',
+ keyword.keywords
+ )
+ continue
+
searchkey = (keyword.keywords or '').strip().lower().replace(' ', '-')
+
try:
doc = {
'id': keyword.id,
@@ -173,13 +181,19 @@ class Keywords(models.Model):
'url_s': keyword.url,
'product_ids_is': [p.product_tmpl_id.id for p in keyword.product_ids],
}
- documents.append(doc)
+
+ solr.add([doc])
+
+ success_keywords |= keyword
+
except Exception as e:
- _logger.error('failed %s', e)
- _logger.error('doc data: %s', doc)
+ _logger.error(
+ "Solr sync failed for keyword ID %s: %s",
+ keyword.id, e
+ )
- if documents:
- solr.add(documents)
+ if success_keywords:
+ success_keywords.write({'solr_flag': 0})
return True
@@ -194,6 +208,11 @@ class Keywords(models.Model):
documents = []
for keyword in keywords:
+ # Skip syncing if product count is 0
+ if len(keyword.product_ids) == 0:
+ _logger.info('Skipping Solr sync for keyword "%s" - no products found', keyword.keywords)
+ continue
+
searchkey = (keyword.keywords or '').strip().lower().replace(' ', '-')
try:
doc = {
@@ -223,10 +242,12 @@ class Keywords(models.Model):
def write(self, vals):
result = super().write(vals)
- tracked_fields = ['keywords', 'category_id', 'product_ids']
+ tracked_fields = ['keywords', 'category_id', 'product_ids', 'skip', 'name']
neded_sync = any(field in vals for field in tracked_fields)
- if neded_sync and self.skip == False and len(self.product_ids) > 0:
+ if neded_sync:
for record in self:
- record.solr_flag = 2
+ # Only flag for sync if there are products
+ if len(record.product_ids) > 0:
+ record.solr_flag = 2
return result