
    hG                     &   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 dd	lmZ dd
lmZ  ej&                  d      r	d dlmZ dZn) ej&                  d      r	d dlmZ dZnej0                  ZdZ G d d      Z G d dej4                        Z G d de      Z G d de      Z G d dej<                        Z G d dej@                        Z! G d de!      Z" G d dejF                        Z# G d  d!ejH                        Z$	  ejJ                  d"        e&d"      Z' G d# d$ejH                        Z) G d% d&ej0                        Z* G d' d(ejV                        Z, G d) d*ejZ                        Z.y+# e($ r
  e&       Z'Y cw xY w),    )forms)apps)ValidationError)models)	mark_safe)gettext_lazy)fields   )settings)first_choicedjangocms_text)HTMLFormFieldTdjangocms_text_ckeditorFc                   "     e Zd ZdZ fdZ xZS )TemplateChoiceMixinzUMixin that hides the template field if only one template is available and is selectedc                 <   t        |   |i | d| j                  v r~| j                  d   }|j                  }|j	                  dd       }t        |      dk(  rB|%|j                  j	                  dd      |d   d   k(  rt        j                         |_	        y y y y )Ntemplateinstancer
    r   )
super__init__r	   choicesgetlenconfigr   HiddenInputwidget)selfargskwargstemplate_fieldr   r   	__class__s         I/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_frontend/fields.pyr   zTemplateChoiceMixin.__init__   s    $)&)$![[4N$,,Gzz*d3H7|q h&6(//:M:MjZ\:]ahijaklman:n(-(9(9(;% ;o 	 %    )__name__
__module____qualname____doc__r   __classcell__r"   s   @r#   r   r      s    _< <r$   r   c                   (    e Zd ZdZdZ G d d      Zy)ButtonGroup2djangocms_frontend/admin/widgets/button_group.htmlz9djangocms_frontend/admin/widgets/button_group_option.htmlc                       e Zd ZddiZy)ButtonGroup.Mediaallz'djangocms_frontend/css/button_group.cssNr%   r&   r'   css r$   r#   Mediar/   *       BCr$   r5   N)r%   r&   r'   template_nameoption_template_namer5   r4   r$   r#   r,   r,   &   s    HMVD Dr$   r,   c                   6     e Zd ZdZ G d d      Z fdZ xZS )ColoredButtonGroupz?djangocms_frontend/admin/widgets/button_group_color_option.htmlc                   $    e Zd Zej                  Zy)ColoredButtonGroup.MediaN)r%   r&   r'   r   	ADMIN_CSSr3   r4   r$   r#   r5   r<   1   s      r$   r5   c                     |j                  di |j                  di       t        d      i       t        |   |i | y )Nattrscolorpropertyupdater   dictr   r   r   r   r    r"   s      r#   r   zColoredButtonGroup.__init__4   sA    w U6::gr#: UdG>T UVW$)&)r$   )r%   r&   r'   r8   r5   r   r)   r*   s   @r#   r:   r:   .   s    \! !* *r$   r:   c                   "     e Zd ZdZ fdZ xZS )	IconGroup7djangocms_frontend/admin/widgets/icon_group_option.htmlc                     |j                  di t        d      |j                  di       i       t        |   |i | y Nr?   iconrA   )rD   rE   r   r   r   rF   s      r#   r   zIconGroup.__init__<   sB    w T4#8 TFJJwPR<S TUV$)&)r$   )r%   r&   r'   r8   r   r)   r*   s   @r#   rH   rH   9   s    T* *r$   rH   c                   :     e Zd ZdZdZ G d d      Z fdZ xZS )IconMultiselectr-   rI   c                       e Zd ZddiZy)IconMultiselect.Mediar0   r1   Nr2   r4   r$   r#   r5   rP   E   r6   r$   r5   c                     |j                  di |j                  di       t        d      i       t        |   |i | y rK   rC   rF   s      r#   r   zIconMultiselect.__init__H   sA    w T6::gr#: TdF>S TUV$)&)r$   )r%   r&   r'   r7   r8   r5   r   r)   r*   s   @r#   rN   rN   A   s$    HMTD D* *r$   rN   c                   2     e Zd Z fdZ fdZ fdZ xZS )OptionalDeviceChoiceFieldc                     |j                  dt        j                         |j                  dd        |j                  dt                      t	        |   di | y )Nr   initialr   r4   )
setdefaultr   DEVICE_CHOICESrN   r   r   )r   r    r"   s     r#   r   z"OptionalDeviceChoiceField.__init__N   sL    )X%<%<=)T*(O$56"6"r$   c                 v    |"t         j                  D cg c]  \  }}|	 }}}t        |   |      S c c}}w N)r   rW   r   prepare_value)r   valuesize_r"   s       r#   rZ   z'OptionalDeviceChoiceField.prepare_valueT   s;    =)1)@)@AgdATAEAw$U++ Bs   5c                 r    t         |   |      }t        |      t        t        j                        k(  ry |S rY   )r   cleanr   r   rW   r   r[   r"   s     r#   r_   zOptionalDeviceChoiceField.cleanY   s0    e$u:X4455r$   )r%   r&   r'   r   rZ   r_   r)   r*   s   @r#   rS   rS   M   s    #,
 r$   rS   c                        e Zd Z fdZ xZS )DeviceChoiceFieldc                     t         |   |      }t        |t              r$t	        |      dk(  rt        t        d      d      |S )Nr   z&Please select at least one device sizeinvalidcode)r   r_   
isinstancelistr   r   r]   r`   s     r#   r_   zDeviceChoiceField.cleana   s>    e$eT"s5zQ!!$L"MT]^^r$   )r%   r&   r'   r_   r)   r*   s   @r#   rb   rb   `   s     r$   rb   c                        e Zd Z fdZ xZS )AttributesFieldc                 Z    d|vrt        d      |d<   d|vrd|d<   t        |   |i | y )Nverbose_name
AttributesblankT)r]   r   r   rF   s      r#   r   zAttributesField.__init__i   s<    '%&|_F>"& "F7O$)&)r$   r%   r&   r'   r   r)   r*   s   @r#   rj   rj   h       * *r$   rj   c                        e Zd Z fdZ xZS )AttributesFormFieldc                     |j                  dt        d             |j                  dd       |j                  dt        j                         |j	                  dg       | _        t        |   |i | y )Nlabelrm   requiredFr   excluded_keys)rV   r]   r	   AttributesWidgetpoprv   r   r   rF   s      r#   r   zAttributesFormField.__init__r   sb    '1\?3*e,(F$;$;<#ZZ<$)&)r$   ro   r*   s   @r#   rr   rr   q   rp   r$   rr   )sortedc                   2     e Zd ZdZ fdZd Z fdZ xZS )ChoicesFormFieldzaSimple choices field based on attributes field. Needs to be extended to
    allow to sort choicesc                     |j                  dt        d             |j                  dd       |j                  dt        j                  di t               |j                  dg       | _        t        |    |i | y )Nrt   Choicesru   Tr   rv   r4   )	rV   r]   r	   rw   CHOICESWIDGETPARAMSrx   rv   r   r   rF   s      r#   r   zChoicesFormField.__init__   sk    '1Y<0*d+(F$;$;$R>Q$RS#ZZ<$)&)r$   c                     |st        t        t        d            d      |j                         D cg c]	  \  }}||f c}}S c c}}w )NzPPlease enter at least one choice. Use the <code>+</code> symbol to add a choice.emptyre   )r   r   r]   items)r   r[   keys      r#   r_   zChoicesFormField.clean   sG    !!nop  05{{}=ee===s   Ac                     |si S t        |t              rt        |   |      S t        |   |D ci c]  \  }}||
 c}}      S c c}}w rY   )rg   rE   r   rZ   )r   r[   r   r"   s      r#   rZ   zChoicesFormField.prepare_value   sK    IeT"7(//w$5%IZS%c5j%IJJ%Is   A
)r%   r&   r'   r(   r   r_   rZ   r)   r*   s   @r#   r{   r{      s    *>K Kr$   r{   c                        e Zd Z fdZ xZS )TagTypeFieldc                    |j                  dt        d             |j                  dt        t        j                               |j                  dd       |j                  dt        d             t        |   |i | y )Nrl   Tag typedefault
max_length   	help_textzSelect the HTML tag to be used.)rV   r]   r   r   TAG_CHOICESr   r   rF   s      r#   r   zTagTypeField.__init__   sj    .!J-8)\(2F2F%GH,,+q)J'KL$)&)r$   ro   r*   s   @r#   r   r          * *r$   r   c                        e Zd Z fdZ xZS )TagTypeFormFieldc                 \   |j                  dt        d             |j                  dt        j                         |j                  dt	        t        j                               |j                  dd       |j                  dt        t        d	      
             t        |    |i | y )Nrt   r   r   rU   ru   Fr   textrA   )r?   )	rV   r]   r   r   r   r,   rE   r   r   rF   s      r#   r   zTagTypeFormField.__init__   s    '1Z=1)X%9%9:)\(2F2F%GH*e,(KdF6K$LM$)&)r$   ro   r*   s   @r#   r   r      r   r$   r   c                   2     e Zd Z G d d      Z fdZ xZS )AutoNumberInputc                       e Zd ZdZy)AutoNumberInput.Media)z#djangocms_frontend/js/auto_input.jsN)r%   r&   r'   jsr4   r$   r#   r5   r      s    5r$   r5   c                 L    |j                  dddi       t        |   |i | y )Nr?   classz
auto-field)rV   r   r   rF   s      r#   r   zAutoNumberInput.__init__   s*    'G\#:;$)&)r$   )r%   r&   r'   r5   r   r)   r*   s   @r#   r   r      s    6 6* *r$   r   N)/djangor   django.appsr   django.core.exceptionsr   	django.dbr   django.utils.safestringr   django.utils.translationr   r]   djangocms_attributes_fieldr	   r   r   helpersr   is_installeddjangocms_text.fieldsr   HTMLsanitizeddjangocms_text_ckeditor.fields	CharFieldr   RadioSelectr,   r:   rH   CheckboxSelectMultiplerN   MultipleChoiceFieldrS   rb   rj   rr   rw   rE   r~   	TypeErrorr{   r   ChoiceFieldr   NumberInputr   r4   r$   r#   <module>r      so     2  - 6 -  !4%&3MT01<MOOMM
< 
<D%## D* ** *	*e22 	* 9 9 &1 *f,, **&44 *!F4(e,
Kv11 K8*6## **u(( **e'' *i  !&!s   F FF