summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2025-12-16 09:39:32 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2025-12-16 09:39:32 +0700
commitdcfbed94e24f7bf6fd06bd0404c1424af2a840be (patch)
treeb5aaca02fdb57d962a24f009194f7904a8c39e5e
parent274a067754ae67bc0f7f77c4c079aa2634b8000c (diff)
<Miqdad> fix quey
-rw-r--r--indoteknik_custom/models/keywords.py38
1 files changed, 19 insertions, 19 deletions
diff --git a/indoteknik_custom/models/keywords.py b/indoteknik_custom/models/keywords.py
index 3602be15..e0c7705c 100644
--- a/indoteknik_custom/models/keywords.py
+++ b/indoteknik_custom/models/keywords.py
@@ -71,31 +71,31 @@ class Keywords(models.Model):
def generate_products(self):
for record in self:
- if not record.keywords:
- continue
- if record.skip:
+ if not record.keywords or record.skip:
continue
- keyword = "%" + record.keywords.strip() + "%"
+ keyword = f"%{record.keywords.strip()}%"
- # Query dasar
sql = """
- SELECT pp.id
+ SELECT DISTINCT pp.id
FROM product_product pp
JOIN product_template pt ON pt.id = pp.product_tmpl_id
- LEFT JOIN product_public_category_product_template_rel rel
+ JOIN product_public_category_product_template_rel rel
ON rel.product_template_id = pt.id
- WHERE (
- pt.name ILIKE %s
- OR pt.website_description ILIKE %s
- AND pt.unpublished = False
- AND pt.product_rating >= 8
- )
+ WHERE
+ pp.active = true
+ AND COALESCE(pt.product_rating, 0) >= 8
+ AND (
+ pt.name ILIKE %s
+ OR COALESCE(pt.website_description, '') ILIKE %s
+ )
"""
- params = [keyword, keyword]
+ params = [
+ keyword,
+ keyword,
+ ]
- # Filter kategori ke child
if record.category_id:
child_categs = self.env['product.public.category'].search([
('id', 'child_of', record.category_id.id)
@@ -103,14 +103,15 @@ class Keywords(models.Model):
sql += " AND rel.product_public_category_id = ANY(%s)"
params.append(child_categs.ids)
- # Exec SQL
self.env.cr.execute(sql, params)
- rows = self.env.cr.fetchall()
+ rows = self.env.cr.fetchall()
product_ids = [r[0] for r in rows]
if not product_ids:
- raise UserError("Tidak berhasil menemukan barang")
+ raise UserError(
+ f"Tidak berhasil menemukan barang untuk keyword '{record.keywords}'"
+ )
record.with_context(skip_generate=True).write({
'product_ids': [(6, 0, product_ids)]
@@ -121,7 +122,6 @@ class Keywords(models.Model):
len(product_ids),
record.keywords
)
-
def sync_solr(self):
# solr_model = self.env['apache.solr']
documents = []