diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2024-10-23 10:21:27 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2024-10-23 10:21:27 +0700 |
| commit | 943ee3ca2e3b8469d1f3969fa6ea45710e532fc0 (patch) | |
| tree | 0bc8c1ca048f7b853a4c5b25240ae69a98e4b5e7 | |
| parent | 3e609fe132724bc8d477f48ebe3abc1a90aacfa0 (diff) | |
fix web find page
| -rwxr-xr-x | indoteknik_custom/__manifest__.py | 1 | ||||
| -rw-r--r-- | indoteknik_custom/models/find_page.py | 56 | ||||
| -rw-r--r-- | indoteknik_custom/views/find_page.xml | 70 |
3 files changed, 116 insertions, 11 deletions
diff --git a/indoteknik_custom/__manifest__.py b/indoteknik_custom/__manifest__.py index 116c64ec..c8a658b5 100755 --- a/indoteknik_custom/__manifest__.py +++ b/indoteknik_custom/__manifest__.py @@ -144,6 +144,7 @@ 'views/vendor_payment_term.xml', 'views/approval_unreserve.xml', 'views/vendor_approval.xml', + 'views/find_page.xml', 'report/report.xml', 'report/report_banner_banner.xml', 'report/report_banner_banner2.xml', diff --git a/indoteknik_custom/models/find_page.py b/indoteknik_custom/models/find_page.py index b7ad7f49..697fd275 100644 --- a/indoteknik_custom/models/find_page.py +++ b/indoteknik_custom/models/find_page.py @@ -1,5 +1,6 @@ from odoo import fields, models, api, tools, _ import logging +import re _logger = logging.getLogger(__name__) @@ -27,6 +28,8 @@ class BrandProductCategory(models.Model): class FindPage(models.Model): _name = 'web.find.page' + _inherit = ['mail.thread'] + _rec_name = 'url' brand_id = fields.Many2one('x_manufactures', string='Brand') category_id = fields.Many2one('product.public.category', string='Category', help='Bisa semua level Category') @@ -42,23 +45,54 @@ class FindPage(models.Model): def _generate_url(self): categories = self.env['v.brand.product.category'].search([]) - count = 0 + + list_url = [] for category in categories: category_hierarchy = self._get_category_hierarchy(category.category_id) for level, cat in enumerate(reversed(category_hierarchy), start=1): - print(f"Level {level}: {cat.name} {category.brand_id.x_name}") + list_url.append(self._generate_mod_url(cat, category.brand_id)) + # print(f"Level {level}: {cat.name} {category.brand_id.x_name}") + 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']) count += 1 print(f"Total categories processed: {count}") - # def _generate_url(self): - # categories = self.env['v.brand.product.category'].search([]) - # count = 0 - # for category in categories: - # print(category.brand_id.x_name+' '+category.category_id.name) - # count += 1 - # print(count) + def _create_find_page(self, url, category_id, brand_id): + param = { + 'url': url, + 'category_id': category_id, + 'brand_id': brand_id, + } + find_page = self.env['web.find.page'].create(param) + _logger.info('Created Web Find Page %s' % find_page.id) - def _generate_url_parent(self): - print(1) + def _generate_mod_url(self, category, brand): + # 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 + url = url.lower() + result = { + 'url': url, + 'category_id': category.id, + 'brand_id': brand.id + } + # print(url) + # param = { + # 'brand_id': brand.id, + # 'category_id': category.id, + # 'url':'' + # } + # self.env['web.find.page'].create() + # print(1) + return result diff --git a/indoteknik_custom/views/find_page.xml b/indoteknik_custom/views/find_page.xml new file mode 100644 index 00000000..c752aa98 --- /dev/null +++ b/indoteknik_custom/views/find_page.xml @@ -0,0 +1,70 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<odoo> + <record id="web_find_page_tree" model="ir.ui.view"> + <field name="name">web.find.page.tree</field> + <field name="model">web.find.page</field> + <field name="arch" type="xml"> + <tree> + <field name="category_id"/> + <field name="brand_id"/> + <field name="url"/> + <field name="create_uid"/> + <field name="write_uid"/> + </tree> + </field> + </record> + + <record id="web_find_page_form" model="ir.ui.view"> + <field name="name">web.find.page.form</field> + <field name="model">web.find.page</field> + <field name="arch" type="xml"> + <form> + <sheet string="Web Find Page"> + <div class="oe_button_box" name="button_box"/> + <group> + <group> + <field name="category_id"/> + <field name="brand_id"/> + <field name="url"/> + </group> + <group> + <field name="create_uid"/> + <field name="write_uid"/> + </group> + </group> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" widget="mail_followers"/> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> + </record> + + <record id="view_web_find_page_filter" model="ir.ui.view"> + <field name="name">web.find.page.list.select</field> + <field name="model">web.find.page</field> + <field name="priority" eval="15"/> + <field name="arch" type="xml"> + <search string="Search Web Find Page"> + <field name="category_id"/> + <field name="brand_id"/> + <field name="url"/> + </search> + </field> + </record> + + <record id="web_find_page_action" model="ir.actions.act_window"> + <field name="name">Web Find Page</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">web.find.page</field> + <field name="search_view_id" ref="view_web_find_page_filter"/> + <field name="view_mode">tree,form</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 |
