diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-24 09:17:29 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-24 09:17:29 +0700 |
| commit | b173abf78bd52ba0cd10829e1a2b31efc371f3cf (patch) | |
| tree | db2318154308ab8d65a7b8e403c3a457f4151599 /indoteknik_custom/models/product_template.py | |
| parent | b8356524ab2d381affe438a85e1662a08fcd3026 (diff) | |
Refactor update solr sync
Diffstat (limited to 'indoteknik_custom/models/product_template.py')
| -rwxr-xr-x | indoteknik_custom/models/product_template.py | 101 |
1 files changed, 32 insertions, 69 deletions
diff --git a/indoteknik_custom/models/product_template.py b/indoteknik_custom/models/product_template.py index 1283a5cb..3caa3125 100755 --- a/indoteknik_custom/models/product_template.py +++ b/indoteknik_custom/models/product_template.py @@ -58,11 +58,6 @@ class ProductTemplate(models.Model): self.desc_update_solr = desc self.last_update_solr = current_time - # def write(self, vals): - # if 'solr_flag' not in vals and self.solr_flag == 1: - # vals['solr_flag'] = 2 - # return super().write(vals) - def _compute_virtual_rating(self): for product in self: rate = 0 @@ -126,12 +121,6 @@ class ProductTemplate(models.Model): product.default_code = 'ITV.'+str(product.id) _logger.info('Updated Variant %s' % product.name) - @api.onchange('name','default_code','x_manufacture','product_rating','website_description','image_1920','weight','public_categ_ids') - def update_solr_flag(self): - for tmpl in self: - if tmpl.solr_flag == 1: - tmpl.solr_flag = 2 - def _compute_qty_stock_vendor(self): for product_template in self: product_template.qty_stock_vendor = 0 @@ -264,38 +253,34 @@ class ProductTemplate(models.Model): return values @api.constrains( - 'name', - 'default_code', - 'virtual_rating', - 'product_variant_count', - 'weight', - 'x_manufacture', - 'public_categ_ids', - 'product_variant_ids.display_name', - 'product_variant_ids.default_code', - 'search_rank', - 'search_rank_weekly', - 'image_1920' - ) + 'name', + 'default_code', + 'weight', + 'x_manufacture', + 'public_categ_ids', + 'product_variant_ids.display_name', + 'product_variant_ids.default_code', + 'search_rank', + 'search_rank_weekly', + 'image_1920' + ) def _sync_product_template_to_solr(self, limit=500): template = self if not template.active or template.type != 'product': return - - variants_name = variants_code = '' - if template.product_variant_count > 1: - for variant in template.product_variant_ids: - variants_name += variant.display_name or ''+', ' - variants_code += variant.default_code or ''+', ' - category_id = '' + variant_names = ', '.join([x.display_name or '' for x in template.product_variant_ids]) + variant_codes = ', '.join([x.default_code or '' for x in template.product_variant_ids]) + + category_id = 0 category_name = '' for category in template.public_categ_ids: - category_id = category.id - category_name = category.name + category_id, category_name = category.id, category.name + break + solr_model = self.env['apache.solr'] solr = solr_model.connect('product') - document = solr_model.get_single_doc(solr, template.id) + document = solr_model.get_single_doc('product', template.id) document.update({ 'id': template.id, 'display_name_s': template.display_name, @@ -312,13 +297,13 @@ class ProductTemplate(models.Model): 'manufacture_name': template.x_manufacture.x_name or '', 'image_promotion_1_s': self.env['ir.attachment'].api_image('x_manufactures', 'image_promotion_1', template.x_manufacture.id), 'image_promotion_2_s': self.env['ir.attachment'].api_image('x_manufactures', 'image_promotion_2', template.x_manufacture.id), - 'variants_name_t': variants_name, - 'variants_code_t': variants_code, + 'variants_name_t': variant_names, + 'variants_code_t': variant_codes, 'search_rank_i': template.search_rank, 'search_rank_weekly_i': template.search_rank_weekly, - 'category_id_i': category_id or 0, - 'category_name_s': category_name or '', - 'category_name': category_name or '', + 'category_id_i': category_id, + 'category_name_s': category_name, + 'category_name': category_name, }) solr.add([document]) self.change_solr_data('Perubahan pada data product') @@ -371,14 +356,6 @@ class ProductProduct(models.Model): qty = sum(qty_onhand.mapped('quantity')) product.qty_onhand_bandengan = qty - # def write(self, vals): - # if 'solr_flag' not in vals: - # for variant in self: - # if variant.solr_flag == 1: - # variant.product_tmpl_id.solr_flag = 2 - # vals['solr_flag'] = 2 - # return super().write(vals) - def _compute_web_price(self): for product in self: product_pricelist_item = self.env['product.pricelist.item'].search( @@ -416,27 +393,22 @@ class ProductProduct(models.Model): 'search_rank', 'search_rank_weekly', 'image_1920' - ) + ) def _sync_variants_to_solr(self): variant = self if not variant.product_tmpl_id.active and variant.product_tmpl_id.type != 'product': return - price_excl_after_disc = price_excl = discount = tax = 0 - price_excl = variant._get_website_price_exclude_tax() - price_excl_after_disc = variant._get_website_price_after_disc_and_tax() - discount = variant._get_website_disc(0) - tax = variant._get_website_tax() - flashsale_data = variant._get_flashsale_price() - - category_id = '' + category_id = 0 category_name = '' for category in variant.product_tmpl_id.public_categ_ids: category_id = category.id category_name = category.name + break + solr_model = self.env['apache.solr'] solr = solr_model.connect('variants') - document = solr_model.get_single_doc(solr, variant.id) + document = solr_model.get_single_doc('variants', variant.id) document.update({ 'id': variant.id, 'display_name_s': variant.display_name, @@ -446,10 +418,6 @@ class ProductProduct(models.Model): 'product_id_i': variant.id, 'template_id_i': variant.product_tmpl_id.id, 'image_s': self.env['ir.attachment'].api_image('product.template', 'image_512', variant.product_tmpl_id.id), - 'price_f': price_excl, - 'discount_f': discount, - 'price_discount_f': price_excl_after_disc, - 'tax_f': tax, 'stock_total_f': variant.qty_stock_vendor, 'weight_f': variant.product_tmpl_id.weight, 'manufacture_id_i': variant.product_tmpl_id.x_manufacture.id or 0, @@ -457,16 +425,11 @@ class ProductProduct(models.Model): 'manufacture_name': variant.product_tmpl_id.x_manufacture.x_name or '', 'image_promotion_1_s': self.env['ir.attachment'].api_image('x_manufactures', 'image_promotion_1', variant.product_tmpl_id.x_manufacture.id), 'image_promotion_2_s': self.env['ir.attachment'].api_image('x_manufactures', 'image_promotion_2', variant.product_tmpl_id.x_manufacture.id), - 'category_id_i': category_id or 0, - 'category_name_s': category_name or '', - 'category_name': category_name or '', + 'category_id_i': category_id, + 'category_name_s': category_name, + 'category_name': category_name, 'search_rank_i': variant.product_tmpl_id.search_rank, 'search_rank_weekly_i': variant.product_tmpl_id.search_rank_weekly, - 'flashsale_id_i': flashsale_data['flashsale_id'] or 0, - 'flashsale_name_s': flashsale_data['flashsale_name'] or '', - 'flashsale_base_price_f': flashsale_data['flashsale_base_price'] or 0, - 'flashsale_discount_f': flashsale_data['flashsale_discount'] or 0, - 'flashsale_price_f': flashsale_data['flashsale_price'] or 0, }) solr.add([document]) self.change_solr_data('Perubahan pada data product')
\ No newline at end of file |
