summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indoteknik_custom/models/find_page.py62
-rw-r--r--indoteknik_custom/views/find_page.xml15
2 files changed, 62 insertions, 15 deletions
diff --git a/indoteknik_custom/models/find_page.py b/indoteknik_custom/models/find_page.py
index 467e30d1..c31b8334 100644
--- a/indoteknik_custom/models/find_page.py
+++ b/indoteknik_custom/models/find_page.py
@@ -2,10 +2,15 @@ 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__)
-_cat_brand_solr = pysolr.Solr('http://10.148.0.5:8983/solr/url_category_brand/', always_commit=True, timeout=30)
-# _cat_brand_solr_dev = pysolr.Solr('http://127.0.0.1:8983/solr/url_category_brand/', always_commit=True, timeout=30)
+# _cat_brand_solr = pysolr.Solr('http://10.148.0.5:8983/solr/url_category_brand/', always_commit=True, timeout=30)
+_cat_brand_solr_dev = pysolr.Solr('http://127.0.0.1:8983/solr/url_category_brand/', always_commit=True, timeout=30)
class BrandProductCategory(models.Model):
@@ -34,6 +39,7 @@ class FindPage(models.Model):
_inherit = ['mail.thread']
_rec_name = 'url'
+ keywords = fields.Char('Keywords')
brand_id = fields.Many2one('x_manufactures', string='Brand')
category_id = fields.Many2one('product.public.category', string='Category', help='Bisa semua level Category')
url = fields.Char(string='Url')
@@ -50,12 +56,14 @@ class FindPage(models.Model):
'brand_id_i': url.brand_id.id,
'url_s': url.url
}
+ if url.keywords:
+ document['keywords_s']= url.keywords
documents.append(document)
catch = document
except Exception as e:
_logger.error('Failed to add document to Solr URL Category Brand: %s', e)
_logger.error('Document Data: %s', catch)
- _cat_brand_solr.add(documents)
+ _cat_brand_solr_dev.add(documents)
return True
def _get_category_hierarchy(self, category):
@@ -67,49 +75,77 @@ class FindPage(models.Model):
return categories
def _generate_url(self):
- categories = self.env['v.brand.product.category'].search([])
+ keyword = self.keywords
list_url = []
- for category in categories:
- category_hierarchy = self._get_category_hierarchy(category.category_id)
+ if not keyword:
+ categories = self.env['v.brand.product.category'].search([])
+
+ for category in categories:
+ category_hierarchy = self._get_category_hierarchy(category.category_id)
- for level, cat in enumerate(reversed(category_hierarchy), start=1):
- list_url.append(self._generate_mod_url(cat, category.brand_id))
- # print(f"Level {level}: {cat.name} {category.brand_id.x_name}")
+ for level, cat in enumerate(reversed(category_hierarchy), start=1):
+ list_url.append(
+ self._generate_mod_url(cat, category.brand_id) # keywords=None otomatis
+ )
+ else:
+ brands = self.env['x_manufactures'].search([('x_name', 'ilike', keyword)])
+ categories = self.env['product.public.category'].search([('name', 'ilike', keyword)])
+ for brand in brands:
+ for category in categories:
+ list_url.append(
+ self._generate_mod_url(category, brand, keywords=keyword)
+ )
unique_list = []
for item in list_url:
if item not in unique_list:
unique_list.append(item)
+
count = 0
for item in unique_list:
- self._create_find_page(item['url'], item['category_id'], item['brand_id'])
+ self._create_find_page(
+ item['url'],
+ item['category_id'],
+ item['brand_id'],
+ item.get('keywords')
+ )
count += 1
print(f"Total categories processed: {count}")
- def _create_find_page(self, url, category_id, brand_id):
+ def _create_find_page(self, url, category_id, brand_id, keywords=None):
param = {
'url': url,
'category_id': category_id,
'brand_id': brand_id,
}
+ if keywords:
+ param['keywords'] = keywords
find_page = self.env['web.find.page'].create(param)
_logger.info('Created Web Find Page %s' % find_page.id)
- def _generate_mod_url(self, category, brand):
+ def _generate_mod_url(self, category, brand, keywords=None):
# generate_url = 'https://indoteknik.com/shop/find/category-brand' example
cleaned_category = re.sub(r'[^\w\s]', '', category.name)
cleaned_brand = re.sub(r'[^\w\s]', '', brand.x_name)
cleaned_combined = cleaned_category+' '+cleaned_brand
cleaned_combined = cleaned_combined.replace(' ', '-')
cleaned_combined = cleaned_combined.replace('--', '-')
- url = 'https://indoteknik.com/shop/find/'+cleaned_combined
+ if keywords:
+ clean_keyword = re.sub(r'\s+', '-', keywords.strip().lower())
+ # url = f"https://indoteknik.com/shop/find/key={clean_keyword}"
+ url = f"http://localhost:2100/shop/find/key={clean_keyword}"
+ else:
+ url = 'http://localhost:2100/shop/find/'+cleaned_combined
+ # url = 'https://indoteknik.com/shop/find/'+cleaned_combined
url = url.lower()
result = {
'url': url,
'category_id': category.id,
'brand_id': brand.id
}
+ if keywords:
+ result['keywords'] = keywords
# print(url)
# param = {
# 'brand_id': brand.id,
diff --git a/indoteknik_custom/views/find_page.xml b/indoteknik_custom/views/find_page.xml
index c752aa98..e333559e 100644
--- a/indoteknik_custom/views/find_page.xml
+++ b/indoteknik_custom/views/find_page.xml
@@ -7,6 +7,7 @@
<tree>
<field name="category_id"/>
<field name="brand_id"/>
+ <field name="keywords"/>
<field name="url"/>
<field name="create_uid"/>
<field name="write_uid"/>
@@ -25,7 +26,8 @@
<group>
<field name="category_id"/>
<field name="brand_id"/>
- <field name="url"/>
+ <field name="keywords"/>
+ <field name="url" />
</group>
<group>
<field name="create_uid"/>
@@ -62,9 +64,18 @@
<field name="view_mode">tree,form</field>
</record>
+
+ <record id="ir_actions_server_find_page_sync_to_solr" model="ir.actions.server">
+ <field name="name">Sync to solr</field>
+ <field name="model_id" ref="indoteknik_custom.model_web_find_page"/>
+ <field name="binding_model_id" ref="indoteknik_custom.model_web_find_page"/>
+ <field name="state">code</field>
+ <field name="code">model._sync_to_solr()</field>
+ </record>
+
<menuitem id="menu_web_find_page"
name="Web Find Page"
action="web_find_page_action"
parent="website_sale.menu_orders"
sequence="8"/>
-</odoo> \ No newline at end of file
+</odoo>