summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2025-12-30 16:19:05 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2025-12-30 16:19:05 +0700
commitea309ccb34ed588e91198cde98074c77ed1b2bef (patch)
treed1eb8e19af746cdf6f076d35953c284b188307a6
parentb0c16534780cc69320f16e7d3bbec29a811a6215 (diff)
<Miqdad> add brands
-rw-r--r--indoteknik_custom/models/keywords.py26
-rw-r--r--indoteknik_custom/views/keywords.xml140
2 files changed, 87 insertions, 79 deletions
diff --git a/indoteknik_custom/models/keywords.py b/indoteknik_custom/models/keywords.py
index 47546c1f..ef3715c9 100644
--- a/indoteknik_custom/models/keywords.py
+++ b/indoteknik_custom/models/keywords.py
@@ -20,6 +20,10 @@ class Keywords(models.Model):
category_id = fields.Many2one('product.public.category', string='Category', required=True, help="Category to filter products when generating products for this keyword and to throw to solr")
keywords = fields.Char('Keywords', required=True)
+ brand_id = fields.Many2one(
+ comodel_name="x_manufactures",
+ string="Brand"
+ )
product_ids = fields.Many2many(
'product.product',
'keywords_product_rel',
@@ -53,15 +57,15 @@ class Keywords(models.Model):
if not record.name:
record.name = record.keywords
- def check_already_exist(self):
- model = self.env['keywords']
- for record in self:
- match = model.search([
- ('keywords', '=', record.keywords),
- ('category_id.id', '=', record.category_id.id)
- ])
- if match:
- raise UserError("Tidak bisa create karena keywords sudah dipakai")
+ # def check_already_exist(self):
+ # model = self.env['keywords']
+ # for record in self:
+ # match = model.search([
+ # ('keywords', '=', record.keywords),
+ # ('category_id.id', '=', record.category_id.id)
+ # ])
+ # if match:
+ # raise UserError("Tidak bisa create karena keywords sudah dipakai")
def copy(self):
raise UserError("Duplicate Record not allowed")
@@ -158,13 +162,13 @@ class Keywords(models.Model):
@api.model
def create(self, vals):
record = super().create(vals)
- self.check_already_exist()
+ # self.check_already_exist()
# record.generate_products()
return record
def write(self, vals):
result = super().write(vals)
- self.check_already_exist()
+ # self.check_already_exist()
# if not self.env.context.get("skip_generate") and not self.skip:
# self.generate_products()
return result
diff --git a/indoteknik_custom/views/keywords.xml b/indoteknik_custom/views/keywords.xml
index 6f1a675f..febd6d39 100644
--- a/indoteknik_custom/views/keywords.xml
+++ b/indoteknik_custom/views/keywords.xml
@@ -1,77 +1,81 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
-<record id="keywords_tree" model="ir.ui.view">
- <field name="name">keywords.tree</field>
- <field name="model">keywords</field>
- <field name="arch" type="xml">
- <tree >
- <field name="category_id" />
- <field name="keywords" />
- <field name="url" />
- <field name="sum" />
- <field name="product_ids" widget="many2many_tags" />
- </tree>
- </field>
-</record>
+ <record id="keywords_tree" model="ir.ui.view">
+ <field name="name">keywords.tree</field>
+ <field name="model">keywords</field>
+ <field name="arch" type="xml">
+ <tree >
+ <field name="category_id" />
+ <field name="brand_id" />
+ <field name="keywords" />
+ <field name="url" />
+ <field name="sum" />
+ <field name="product_ids" widget="many2many_tags" />
+ </tree>
+ </field>
+ </record>
-<record id="keywords_form" model="ir.ui.view">
+ <record id="keywords_form" model="ir.ui.view">
<field name="name">keywords.form</field>
<field name="model">keywords</field>
<field name="arch" type="xml">
- <form>
- <header>
- <button name="generate_products" string="Generate Product Manual" type="object" class="oe_highlight"/>
- <button name="clear_products" string="Clear Generated Products" type="object" />
- </header>
- <sheet>
- <div class="oe_title">
- <h1>
- <field name="name" readonly="1" class="oe_inline"/>
- </h1>
- </div>
- <group>
- <field name="category_id" />
- <field name="keywords" />
- <field name="url" />
- <field name="sum" />
- <field name="product_ids" widget="many2many_tags" />
- <field name="skip" />
- </group>
- </sheet>
- </form>
- </field>
-</record>
+ <form>
+ <header>
+ <button name="generate_products" string="Generate Product Manual" type="object" class="oe_highlight"/>
+ <button name="clear_products" string="Clear Generated Products" type="object" />
+ </header>
+ <sheet>
+ <div class="oe_title">
+ <h1>
+ <field name="name" readonly="1" class="oe_inline"/>
+ </h1>
+ </div>
+ <group>
+ <field name="category_id" />
+ <field name="brand_id" />
+ <field name="keywords" />
+ <field name="url" />
+ <field name="sum" />
+ <field name="product_ids" widget="many2many_tags" />
+ <field name="skip" />
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
-<record id="view_keywords_filter" model="ir.ui.view">
- <field name="name">keywords.list.select</field>
- <field name="model">keywords</field>
- <field name="priority" eval="15"/>
- <field name="arch" type="xml">
- <search string="Search Keywords">
- <field name="category_id"/>
- <field name="keywords"/>
- <field name="product_ids" widget="many2many_tags"/>
- </search>
- </field>
-</record>
- <record id="action_keywords" model="ir.actions.act_window">
- <field name="name">Keywords</field>
- <field name="type">ir.actions.act_window</field>
- <field name="res_model">keywords</field>
- <field name="search_view_id" ref="view_keywords_filter"/>
- <field name="view_mode">tree,form</field>
- </record>
+ <record id="view_keywords_filter" model="ir.ui.view">
+ <field name="name">keywords.list.select</field>
+ <field name="model">keywords</field>
+ <field name="priority" eval="15"/>
+ <field name="arch" type="xml">
+ <search string="Search Keywords">
+ <field name="category_id"/>
+ <field name="brand_id" />
+ <field name="keywords"/>
+ <field name="sum"/>
+ <field name="product_ids" widget="many2many_tags"/>
+ </search>
+ </field>
+ </record>
+ <record id="action_keywords" model="ir.actions.act_window">
+ <field name="name">Keywords</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">keywords</field>
+ <field name="search_view_id" ref="view_keywords_filter"/>
+ <field name="view_mode">tree,form</field>
+ </record>
- <record id="ir_actions_server_keywords_sync_to_solr" model="ir.actions.server">
- <field name="name">Sync to solr</field>
- <field name="model_id" ref="indoteknik_custom.model_keywords"/>
- <field name="binding_model_id" ref="indoteknik_custom.model_keywords"/>
- <field name="state">code</field>
- <field name="code">model.sync_solr()</field>
- </record>
-<menuitem id="menu_keywords"
- name="Keywords"
- parent="website_sale.menu_orders"
- action="action_keywords"
- sequence="100"/>
+ <record id="ir_actions_server_keywords_sync_to_solr" model="ir.actions.server">
+ <field name="name">Sync to solr</field>
+ <field name="model_id" ref="indoteknik_custom.model_keywords"/>
+ <field name="binding_model_id" ref="indoteknik_custom.model_keywords"/>
+ <field name="state">code</field>
+ <field name="code">model.sync_solr()</field>
+ </record>
+ <menuitem id="menu_keywords"
+ name="Keywords"
+ parent="website_sale.menu_orders"
+ action="action_keywords"
+ sequence="100"/>
</odoo>