diff options
| -rw-r--r-- | indoteknik_custom/models/find_page.py | 62 | ||||
| -rw-r--r-- | indoteknik_custom/views/find_page.xml | 15 |
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> |
