| 
						
						
							
								
							
						
						
					 | 
					@ -21,32 +21,73 @@ | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					############################################################################# | 
					 | 
					 | 
					############################################################################# | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import requests | 
					 | 
					 | 
					import requests | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					import base64 | 
					 | 
					 | 
					import base64 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					from odoo import models, fields, api | 
					 | 
					 | 
					from odoo import models, fields, api, _ | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					from odoo.exceptions import UserError | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					class ProductImage(models.Model): | 
					 | 
					 | 
					class ProductImage(models.Model): | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _inherit = 'product.template' | 
					 | 
					 | 
					    _inherit = 'product.template' | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    image_url = fields.Char(string='Image URL') | 
					 | 
					 | 
					    image_url = fields.Char(string='Image URL') | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    image_added = fields.Binary("Image (1920x1920)", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                compute='_compute_image_added', store=True) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    @api.onchange('image_url') | 
					 | 
					 | 
					    @api.depends('image_url') | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    def _onchange_image_url(self): | 
					 | 
					 | 
					    def _compute_image_added(self): | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        """ function to load image from URL """ | 
					 | 
					 | 
					        """ Function to load an image from URL or local file path """ | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        image = False | 
					 | 
					 | 
					        image = False | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if self.image_url: | 
					 | 
					 | 
					        if self.image_url: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            image = base64.b64encode(requests.get(self.image_url).content) | 
					 | 
					 | 
					            if self.image_url.startswith(('http://', 'https://')): | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        self.image_1920 = image | 
					 | 
					 | 
					                # Load image from URL | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                try: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    image = base64.b64encode( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        requests.get(self.image_url).content) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                except Exception as e: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    # Handle URL loading errors | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    raise UserError(_(f"Error loading image from URL: {str(e)}")) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            else: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                # Load image from local file path | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                try: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    with open(self.image_url, 'rb') as image_file: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        image = base64.b64encode(image_file.read()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                except Exception as e: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    # Handle local file loading errors | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    raise UserError( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        _(f"Error loading image from local path: {str(e)}")) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        image_added = image | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if image_added: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.image_1920 = image_added | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					class ProductVariantImage(models.Model): | 
					 | 
					 | 
					class ProductVariantImage(models.Model): | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    _inherit = 'product.product' | 
					 | 
					 | 
					    _inherit = 'product.product' | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					    image_url = fields.Char(string='Image URL') | 
					 | 
					 | 
					    image_url = fields.Char(string='Image URL') | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					    image_added = fields.Binary("Image (1920x1920)", | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                                compute='_compute_image_added', store=True) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					
 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					    @api.onchange('image_url') | 
					 | 
					 | 
					    @api.depends('image_url') | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					    def _onchange_image_url(self): | 
					 | 
					 | 
					    def _compute_image_added(self): | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        """ function to load image from URL in product variant""" | 
					 | 
					 | 
					        """ Function to load an image from URL or local file path """ | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					        image = False | 
					 | 
					 | 
					        image = False | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					        if self.image_url: | 
					 | 
					 | 
					        if self.image_url: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					            image = base64.b64encode(requests.get(self.image_url).content) | 
					 | 
					 | 
					            if self.image_url.startswith(('http://', 'https://')): | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					        self.image_1920 = image | 
					 | 
					 | 
					                # Load image from URL | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                try: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    image = base64.b64encode( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        requests.get(self.image_url).content) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                except Exception as e: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    # Handle URL loading errors | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    raise UserError(_(f"Error loading image from URL: {str(e)}")) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            else: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                # Load image from local file path | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                try: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    with open(self.image_url, 'rb') as image_file: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        image = base64.b64encode(image_file.read()) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                except Exception as e: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    # Handle local file loading errors | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                    raise UserError( | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					                        _(f"Error loading image from local path: {str(e)}")) | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        image_added = image | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					        if image_added: | 
				
			
			
		
	
		
		
			
				
					 | 
					 | 
					 | 
					 | 
					 | 
					            self.image_1920 = image_added | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					
  |