summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2024-09-05 16:43:11 +0700
committerit-fixcomart <it@fixcomart.co.id>2024-09-05 16:43:11 +0700
commit4252e1b1b58499443a29c4a9fcf7d8ea8c2d2d31 (patch)
tree9c17b82f4e65aa41d4f4e782108e72f0187b8e6f /indoteknik_custom/models
parent013a3e4d73327c138ede6f224b32969dc8f85c1f (diff)
<iman> update category management slinder
Diffstat (limited to 'indoteknik_custom/models')
-rwxr-xr-xindoteknik_custom/models/__init__.py1
-rw-r--r--indoteknik_custom/models/website_categories_management.py36
-rw-r--r--indoteknik_custom/models/website_categories_management_line.py22
3 files changed, 44 insertions, 15 deletions
diff --git a/indoteknik_custom/models/__init__.py b/indoteknik_custom/models/__init__.py
index e9ce587c..ad7b1d09 100755
--- a/indoteknik_custom/models/__init__.py
+++ b/indoteknik_custom/models/__init__.py
@@ -39,6 +39,7 @@ from . import website_brand_homepage
from . import website_categories_homepage
from . import website_categories_lob
from . import website_categories_management
+from . import website_categories_management_line
from . import website_content
from . import website_page_content
from . import website_user_cart
diff --git a/indoteknik_custom/models/website_categories_management.py b/indoteknik_custom/models/website_categories_management.py
index 208b07a2..e430ef5f 100644
--- a/indoteknik_custom/models/website_categories_management.py
+++ b/indoteknik_custom/models/website_categories_management.py
@@ -6,8 +6,8 @@ class WebsiteCategoriesManagement(models.Model):
_rec_name = 'category_id'
category_id = fields.Many2one('product.public.category', string='Category Level 1', help='table ecommerce category', domain=lambda self: self._get_default_category_domain())
- category_id2 = fields.Many2many(comodel_name='product.public.category', relation='website_categories_category_id2_rel',column1='website_categories_homepage_id', column2='product_public_category_id', string='Category Level 2', copy=False)
sequence = fields.Integer(string='Sequence')
+ line_ids = fields.One2many('website.categories.management.line', 'management_id', string='Category Level 2 Lines', auto_join=True)
status = fields.Selection([
('tayang', 'Tayang'),
('tidak_tayang', 'Tidak Tayang')
@@ -17,11 +17,11 @@ class WebsiteCategoriesManagement(models.Model):
def _onchange_category_id(self):
domain = {}
if self.category_id != self._origin.category_id: # Check if the category_id has changed
- self.category_id2 = [(5, 0, 0)] # Clear the category_id2 field if category_id has changed
+ self.line_ids = [(5, 0, 0)] # Clear the lines if category_id has changed
if self.category_id:
- domain['category_id2'] = [('parent_frontend_id', '=', self.category_id.id)]
+ domain['line_ids'] = [('parent_frontend_id', '=', self.category_id.id)]
else:
- domain['category_id2'] = []
+ domain['line_ids'] = []
return {'domain': domain}
@@ -42,24 +42,30 @@ class WebsiteCategoriesManagement(models.Model):
def _check_category_consistency(self):
for record in self:
- category_ids = record.category_id2.ids
- for category in record.category_id2:
- for child_category in category.child_frontend_id2:
- if child_category.parent_frontend_id.id not in category_ids:
+ category_level2_ids = record.line_ids.mapped('category_id2.id') # Get all Category Level 2 IDs
+ for line in record.line_ids:
+ for category_level3 in line.category_id3_ids: # Loop through selected Category Level 3
+ if category_level3.parent_frontend_id.id not in category_level2_ids:
raise ValidationError(
- f"Category Level 3 {child_category.name} bukan bagian dari category Level 2 {category.name}")
+ f"Category Level 3 '{category_level3.name}' bukan bagian dari Category Level 2 '{line.category_id2.name}'")
def unlink(self):
- for record in self.category_id2:
- if record.id:
+ for record in self.line_ids:
+ if record.category_id2:
related_categories = self.env['product.public.category'].search([
- ('id', 'in', record.ids)
+ ('id', '=', record.category_id2.id)
])
for category in related_categories:
- for category3 in record.child_frontend_id2.ids:
- if category3 in category.child_frontend_id2.ids:
+ # Iterate through the Category Level 3 related to the current Category Level 2
+ for category3 in record.category_id3_ids:
+ # If Category Level 3 is linked to Category Level 2, remove the link
+ if category3.id in category.child_frontend_id2.ids:
category.write({
- 'child_frontend_id2': [(3, category3)]
+ 'child_frontend_id2': [(3, category3.id)]
+ # Remove the link between Category Level 2 and Category Level 3
})
+
return super(WebsiteCategoriesManagement, self).unlink()
+
+
diff --git a/indoteknik_custom/models/website_categories_management_line.py b/indoteknik_custom/models/website_categories_management_line.py
new file mode 100644
index 00000000..2f97ddfa
--- /dev/null
+++ b/indoteknik_custom/models/website_categories_management_line.py
@@ -0,0 +1,22 @@
+from odoo import fields, models, api
+from odoo.exceptions import ValidationError
+
+class WebsiteCategoriesManagementLine(models.Model):
+ _name = 'website.categories.management.line'
+ _order = 'sequence'
+
+ sequence = fields.Integer(string='Sequence')
+ management_id = fields.Many2one('website.categories.management', string='Management Reference', required=True, ondelete='cascade')
+ category_id2 = fields.Many2one('product.public.category', string='Category Level 2', required=True,)
+ category_id3_ids = fields.Many2many('product.public.category', string='Category Level 3')
+
+ @api.onchange('category_id2')
+ def _onchange_category_id2(self):
+ """ Update domain for category_id3_ids based on category_id2 """
+ if self.category_id2:
+ domain_category_id3_ids = [('parent_frontend_id', '=', self.category_id2.id)]
+ else:
+ domain_category_id3_ids = []
+
+ return {'domain': {'category_id3_ids': domain_category_id3_ids}}
+