From 345d45f5fae0f152ca39e9ba491513582a5c6791 Mon Sep 17 00:00:00 2001 From: Mqdd Date: Sat, 21 Feb 2026 09:41:57 +0700 Subject: fix solr queue keywords --- indoteknik_custom/models/keywords.py | 64 +++++++++++++++++++++++++++++------- 1 file 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: -- cgit v1.2.3