
    h&                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ  eedd	      Z G d
 d      Z G d de
ee      Zy)    )settings)cached_property)gettext_lazy)get_thumbnailer)GetLinkMixin)get_related_object)FrontendUIItemDJANGOCMS_PICTURE_RATIOgS?c                   (    e Zd ZdZddZed        Zy)
ImageMixinNc                    t        | dd      }t        | dd      }t        | dd       rGt        | j                  d      }|j                  }|j                  }|j
                  }|j                  }n't        | dd       st        | dd       }t        | dd       }| j                  r-| j                  j                  | j                  j                  z  nt        }|s|r||z  }nh|s|r||z  }n^|sM|sKt        | dd       r>| j                  r-| j                  j                  }| j                  j                  }nd	}d	}n|s|sd
d
t        z  }}t        |      }t        |      }||f||dS )Nuse_cropFuse_upscalethumbnail_optionsuse_automatic_scalingwidthheightpicturer   i  )sizecropupscale)
getattrr   configr   r   r   r   	rel_imagePICTURE_RATIOint)selfr   r   r   r   r   picture_ratios          W/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_frontend/contrib/image/models.pyget_sizezImageMixin.get_size   sX   tZ/$u54,d3 24;;@S T%++E&--F$))D'//G6=D'40ET8T2F IM,,t~~/D/DD\i%]*F6]*Ev'$	4*H~~,,..v  }!46EE
VFO
 	
    c                     | j                   j                  | j                  d       r t        | j                   | j                        S y N)r   getimage_fieldr   r   s    r   r   zImageMixin.rel_image9   s4    ;;??4++T2%dkk43C3CDDr!   )NN)__name__
__module____qualname__r%   r    r   r    r!   r   r   r      s!    K&
P  r!   r   c                   ^    e Zd ZdZ G d d      ZdZed        Zed        Z	ed        Z
d Zy	)
ImagezX
    Content > "Image" Plugin
    https://getbootstrap.com/docs/5.0/content/images/
    c                        e Zd ZdZ ed      Zy)
Image.MetaTr,   N)r'   r(   r)   proxy_verbose_namer*   r!   r   Metar.   F   s    zr!   r2   r   c                 z    | j                   ry| j                  dk(  rt        t        dd      S | j                  dk(  S )NFinherit#DJANGOCMS_PICTURE_RESPONSIVE_IMAGESyes)external_pictureuse_responsive_imager   r   r&   s    r   is_responsive_imagezImage.is_responsive_imageL   s=      $$	18%JERR((E11r!   c                    | j                   r| j                  sy g }	 t        | j                        }| j	                  | j
                  | j                        }|d   d   d|d   i}t        t        dg d      }t        fd|      D ]4  }||f|d<   |j                  t        |      |j                  |      f       6 	 |S # t        $ r Y |S w xY w)Nr   r   r   8DJANGOCMS_PICTURE_RESPONSIVE_IMAGES_VIEWPORT_BREAKPOINTS)i@  i   i  c                     | k  S r#   r*   )xpicture_widths    r   <lambda>z'Image.img_srcset_data.<locals>.<lambda>g   s    ]): r!   )r   r9   r   r   r    r   r   r   r   filterappendr   get_thumbnail
ValueError)r   srcsetthumbnailerpicture_optionsr   breakpointsr   r>   s          @r   img_srcset_datazImage.img_srcset_dataT   s    !9!9	)$..9K"mmDJJDO+F3A6M!')@ A!JK :KH Y-14L!&)s4y+*C*CDU*VWXY   	 	s   B#C 	CCc                    | j                   r| j                   S | j                  sy| j                  r$| j                  r| j                  j                  S dS | j                  | j                  xs d| j                  xs d      }|d   |d   |d   | j                  r| j                  j                  ndd}	 t        | j                        }|j                  |      j                  }|S # t        $ r d}Y |S w xY w)	N r   )r   r   r   r   r   r*   )r   r   r   subject_location)r7   r   use_no_croppingr   urlr    r   r   rK   r   rB   rC   )r   rF   r   rE   rM   s        r   img_srczImage.img_srcq   s       ((( !!)-4>>%%?R?--**/;;#! ( 
 $F+#F+&y1CG>> ? ?WY	
	)$..9K++,=>BBC
 
	  	 C
		s   80C* *C98C9c                     | j                   r| j                   S | j                  r,| j                  j                  r| j                  j                  S t        d      S )Nz<file is missing>)r7   r   labelr0   r&   s    r   get_short_descriptionzImage.get_short_description   sF      (((>>dnn22>>'''$%%r!   N)r'   r(   r)   __doc__r2   r%   propertyr9   r   rH   rN   rQ   r*   r!   r   r,   r,   @   sX    
" " K2 2  8    D&r!   r,   N)django.confr   django.utils.functionalr   django.utils.translationr   r0   easy_thumbnails.filesr   &djangocms_frontend.contrib.link.modelsr   djangocms_frontend.helpersr   djangocms_frontend.modelsr	   r   r   r   r,   r*   r!   r   <module>r[      sH      3 6 1 ? 9 4 ";VD/ /dY&L*n Y&r!   