summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/keywords.py64
1 files changed, 52 insertions, 12 deletions
diff --git a/indoteknik_custom/models/keywords.py b/indoteknik_custom/models/keywords.py
index 487e58e5..2ee217f7 100644
--- a/indoteknik_custom/models/keywords.py
+++ b/indoteknik_custom/models/keywords.py
@@ -160,16 +160,50 @@ class Keywords(models.Model):
return True
+ # Old
+ # def _sync_keywords_queue_callback(self):
+ # """Callback method executed by apache.solr.queue - syncs keyword data to Solr"""
+ # documents = []
+ # for keyword in self:
+ # # 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 = {
+ # 'id': keyword.id,
+ # 'category_id_i': keyword.category_id.id,
+ # 'keywords_s': searchkey,
+ # 'url_s': keyword.url,
+ # 'product_ids_is': [p.product_tmpl_id.id for p in keyword.product_ids],
+ # }
+ # documents.append(doc)
+ # except Exception as e:
+ # _logger.error('failed %s', e)
+ # _logger.error('doc data: %s', doc)
+
+ # if documents:
+ # solr.add(documents)
+
+ # self.write({'solr_flag': 0})
+
+ # 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:
- # 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)
+ 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,
@@ -178,13 +212,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
@@ -233,7 +273,7 @@ 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:
for record in self: