summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/keywords.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/keywords.py')
-rw-r--r--indoteknik_custom/models/keywords.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/indoteknik_custom/models/keywords.py b/indoteknik_custom/models/keywords.py
new file mode 100644
index 00000000..38b6e2fe
--- /dev/null
+++ b/indoteknik_custom/models/keywords.py
@@ -0,0 +1,52 @@
+from itertools import product
+from odoo import fields, models, api, tools, _
+import logging
+import re
+import pysolr
+from odoo.exceptions import UserError
+import base64
+import xlrd, xlwt
+import io
+
+
+_logger = logging.getLogger(__name__)
+
+class Keywords(models.Model):
+ _name = 'keywords'
+ _order= 'id desc'
+
+ category_id = fields.Many2one('product.public.category', string='Category')
+ keywords = fields.Char('Keywords')
+ product_ids = fields.One2many('product.product', 'keyword_id', string='Products')
+
+ @api.constrains('product_ids', 'keywords', 'category_id')
+ def action_generate_products(self):
+ for record in self:
+ if not record.keywords:
+ continue
+
+ domain = [
+ ('name', 'ilike', record.keywords),
+ ('product_rating', '>=', 8),
+ ('unpublish', '=', False)
+ ]
+
+ # if record.category_id:
+ # domain += [(record.product_ids.id, 'in', record.category_id.id)]
+
+ matched_products = self.env['product.product'].search(domain)
+
+ record.product_ids = [(6, 0, matched_products.ids)]
+
+ _logger.info('Generated %s products for keyword "%s"', len(matched_products), record.keywords)
+
+ @api.model
+ def create(self, vals):
+ record = super().create(vals)
+ record.action_generate_products()
+ return record
+
+ def write(self, vals):
+ result = super().write(vals)
+ self.action_generate_products()
+ return result