
    h[)                     L   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	m
Z
mZmZmZmZmZmZmZmZ ddlmZ  G d d	e      Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    )ValidationError)inlineformset_factory)translation)TranslatableModelForm   )
CleanFieldModelForeignKeyTranslationModelIntegerPrimaryKeyModelIntegerPrimaryKeyRelatedModel(ManyToManyAndOtherFieldsTranslationModelRegularModelSimpleModelUniqueTogetherModelUUIDPrimaryKeyModelUUIDPrimaryKeyRelatedModel)AppTestCasec                        e Zd Z G d d      Zy)
SimpleFormc                       e Zd ZeZdZy)SimpleForm.Meta__all__N)__name__
__module____qualname__r   modelfields     G/home/dcms/DCMS/lib/python3.12/site-packages/parler/tests/test_forms.pyMetar      s    r   r    Nr   r   r   r    r   r   r   r   r           r   r   c                        e Zd Z G d d      Zy)CleanFieldFormc                       e Zd ZeZdZy)CleanFieldForm.Metar   N)r   r   r   r   r   r   r   r   r   r    r&      s    r   r    Nr!   r   r   r   r$   r$      r"   r   r$   c                        e Zd Z G d d      Zy)UniqueTogetherFormc                       e Zd ZeZdZy)UniqueTogetherForm.Metar   N)r   r   r   r   r   r   r   r   r   r    r*   #       #r   r    Nr!   r   r   r   r(   r(   "   r"   r   r(   c                        e Zd Z G d d      Zy)ForeignKeyTranslationModelFormc                       e Zd ZeZdZy)#ForeignKeyTranslationModelForm.Metar   N)r   r   r   r	   r   r   r   r   r   r    r/   )   s    *r   r    Nr!   r   r   r   r-   r-   (   r"   r   r-   c                        e Zd Z G d d      Zy)IntegerPrimaryKeyFormc                       e Zd ZeZdZy)IntegerPrimaryKeyForm.Metar   N)r   r   r   r
   r   r   r   r   r   r    r3   /   s    &r   r    Nr!   r   r   r   r1   r1   .   r"   r   r1   c                        e Zd Z G d d      Zy)UUIDPrimaryKeyFormc                       e Zd ZeZdZy)UUIDPrimaryKeyForm.Metar   N)r   r   r   r   r   r   r   r   r   r    r7   5   r+   r   r    Nr!   r   r   r   r5   r5   4   r"   r   r5   c                        e Zd Z G d d      Zy)OverrideMetaFieldFormc                   :    e Zd ZeZdZdddZdddZddidd	idZy
)OverrideMetaFieldForm.Metar   help_text:sharedhelp_text:tr_titlesharedtr_titlelabel:sharedlabel:tr_title
max_lengtherror_message:sharederror_message:tr_titleN)	r   r   r   r   r   r   
help_textslabelserror_messagesr   r   r   r    r;   ;   sC    (,


 %(

 $%;<%'?@
r   r    Nr!   r   r   r   r9   r9   :   s    
 
r   r9   c                        e Zd Z G d d      Zy),ManyToManyAndOtherFieldsTranslationModelFormc                       e Zd ZeZdZy)1ManyToManyAndOtherFieldsTranslationModelForm.Metar   N)r   r   r   r   r   r   r   r   r   r    rL   M   s    8r   r    Nr!   r   r   r   rJ   rJ   L   r"   r   rJ   c                   F    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)	FormTestsz!
    Test model construction
    c                 ,   t        d      }| j                  |j                  d       | j                  t              5  t        d       d d d        | j                  t              5  t        d       d d d        y # 1 sw Y   4xY w# 1 sw Y   y xY w)Nfr-FR_current_languagefava_VN)r   assertEquallanguage_codeassertRaises
ValueErrorselfform_instances     r   test_form_language_validationz'FormTests.test_form_language_validationW   s    "W=44g>z* 	/.	/ z* 	21	2 	2	/ 	/	2 	2s   A>(B
>B
Bc                     | j                  dt        j                  v        | j                  dt        j                  v        y)z1
        Check if the form fields exist.
        r?   r@   N)
assertTruer   base_fields)rZ   s    r   test_form_fieldszFormTests.test_form_fieldsa   s2     	J$:$::;
j&<&<<=r   c                 x   t        j                  d      5  t        ddd      }d|_        | j	                  |j
                         | j                  |j                  d   d       | j                  |j                  d   d       |j                         }| j                  |j                         d       t        j                  j                  d      j                  |j                  	      }| j                  |j                  d       | j                  |j                   d       d
d
d
       y
# 1 sw Y   y
xY w)=
        Check if the form receives and stores data.
        frSHAREDTRANSr>   datanlr?   r@   pkN)r   overrider   rV   assertFalseerrorsrU   cleaned_datasaveget_current_languager   objectslanguagegetrj   r?   r@   rZ   xinstances      r   test_form_savezFormTests.test_form_saveh   s     !!$' 	28 IJA"AOQXX& Q^^H5x@Q^^J7A vvxHX::<dC##,,T266(++6FAQXXx0QZZ1!	2 	2 	2   DD00D9c                 x   t        j                  d      5  t        ddd      }d|_        | j	                  |j
                         | j                  |j                  d   d       | j                  |j                  d   d       |j                         }| j                  |j                         d       t        j                  j                  d      j                  |j                  	      }| j                  |j                  d
       | j                  |j                   d       ddd       y# 1 sw Y   yxY w)rb   rc   re   TESTr>   rf   rh   r?   r@   ri   TRANS_cleanchar_cleansharedTEST_cleanchar_cleantransN)r   rk   r$   rV   rl   rm   rU   rn   ro   rp   r   rq   rr   rs   rj   r?   r@   rt   s      r   test_form_save_cleanzFormTests.test_form_save_clean~   s     !!$' 	FwF$KLA"AOQXX& Q^^H5w?Q^^J7@ vvxHX::<dC''006::hkk:JAQXX'DEQZZ)DE!	F 	F 	Frx   c                 8    G d dt               }| j                  t        |j                  j	                               dg       t        j                  d      5   |ddi      }d|_        | j                  |j                         ddd       y# 1 sw Y   yxY w)	zC
        Check that non-form fields are properly excluded.
        c                        e Zd Z G d d      Zy)EFormTests.test_form_save_clean_exclude.<locals>.CleanPartialFieldFormc                       e Zd ZeZdZdZy)JFormTests.test_form_save_clean_exclude.<locals>.CleanPartialFieldForm.Meta)r?   )r@   N)r   r   r   r   r   r   excluder   r   r   r    r      s    '$'r   r    Nr!   r   r   r   CleanPartialFieldFormr      s    ( (r   r   r?   rc   re   rf   rh   N)
r   rU   listr_   keysr   rk   rV   rl   rm   )rZ   r   ru   s      r   test_form_save_clean_excludez&FormTests.test_form_save_clean_exclude   s    
	($9 	( 	3??DDFG(T!!$' 	'%Hg+>?A"AOQXX&	' 	' 	's   .BBc                 >   t        dd      j                          t        ddi      d_        | j	                  j                                t        ddi      d_        | j                  j                                | j                  t        fd       y )Nenfoo)rR   slugr   rf   rc   c                  8     j                   j                         S )N)rv   validate_unique)forms   r   <lambda>z0FormTests.test_unique_together.<locals>.<lambda>   s    4==3P3P3R r   )	r   ro   r(   rV   r^   is_validrl   rW   r   )rZ   r   s    @r   test_unique_togetherzFormTests.test_unique_together   s}    d?DDF "7!( "7!)/+RSr   c                     t         j                  j                  d      }t        j                  j                  |d      }|j	                  dd       t        |      }| j                  d       y	)
z
        Simulate scenario for model with translation field of type foreign key (not null).
          1. User create model with one translation (EN)
          2. Switch to another language in admin (FR)
        r1original_fieldEN)translated_foreignr?   rc   T)
initialize)rv   N)r   rq   creater	   set_current_languager-   r^   )rZ   r   ar   s       r   'test_not_null_foreignkey_in_translationz1FormTests.test_not_null_foreignkey_in_translation   sf     !!(((=&..55TX5Y 	
t5 .q9r   c                    t        d      }| j                  d|d   j                         | j                  d|d   j                         | j                  d|d   j                         | j                  d|d   j                         t        dd	d
d      }| j                  d|d   j                  d          | j                  d|d   j                  d          y )NrP   rQ   r<   r?   r=   r@   rA   rB   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbr>   )rR   rg   rD   r   rE   )r9   rU   	help_textlabelrm   rY   s     r   test_override_meta_fieldsz#FormTests.test_override_meta_fields   s    -H+]8-D-N-NO-}Z/H/R/RSx)@)F)FG)=+D+J+JK .%#%
 	/x1H1O1OPQ1RS1=3L3S3STU3VWr   c                    t         j                  j                  d      }t         j                  j                  d      }t        t	        dd|j
                  g            }d|_        | j                  |j                         | j                  |j                  d	   d       | j                  |j                  d
   d       | j                  |j                  d   d   |       |j                         }| j                  |j                  d       | j                  |j                  d       | j                  |j                  j                         d   |       t        |t	        dd|j
                  g            }d|_        | j                  |j                         | j                  |j                  d	   d       | j                  |j                  d
   d       | j                  |j                  d   d   |       |j                         }| j                  |j                  d       | j                  |j                  d       | j                  |j                  j                         d   |       |j!                  d       | j                  |j                  d       | j                  |j                  j                         d   |       y )NOner   Tword   re   )r?   r@   translated_many_to_manyrf   r   r?   r@   r   r   TRANSFrv   rg   rc   )r   rq   r   rJ   dictrj   rV   rl   rm   rU   rn   ro   r?   r@   r   allr   )rZ   regular_oneregular_twor   objs        r   test_many_to_many_fieldsz"FormTests.test_many_to_many_fields   sc   "**111G"**111G < )4(8
 "% 	**84h?**:6@**+DEaH+V iikX.w/4488:1={K <!)4(8
 "% 	**84h?**:6A**+DEaH+V iikX.x04488:1={K 	  &w/4488:1={Kr   N)r   r   r   __doc__r\   r`   rw   r}   r   r   r   r   r   r   r   r   rN   rN   R   s8    2>2,F,'$T&X$4Lr   rN   c                       e Zd Zd Zd Zy)InlineFormTestsc                 z   t        ddi      }| j                  |j                                |j                  d      }t	        t
        t        d      } ||dd	d
      }| j                  |j                                |j                          | j                  |j                  j                         d       y Nr@   re   rf   F)commitr   )r   r   r   )zchildren-TOTAL_FORMSzchildren-INITIAL_FORMSr   )
r1   r^   r   ro   r   r
   r   rU   translationscountrZ   parent_formparentInlineFormSetformsets        r   test_integer_primary_keyz(InlineFormTests.test_integer_primary_key  s    +*g1FG,,./!!!/-"$A"
  1XY"Z
 	((*+,,224a8r   c                    t        ddi      }| j                  |j                                |j                  d      }| j	                  |j
                         t        t        t        d      } ||dd	d
      }| j                  |j                                | j                  |j
                         |j                          | j                  |j                  j                         d       y r   )r5   r^   r   ro   assertIsNotNonerj   r   r   r   assertIsNonerU   r   r   r   s        r   test_uuid_primary_keyz%InlineFormTests.test_uuid_primary_key  s    (z7.CD,,./!!!/VYY'-!;B
  1XY"Z
 	((*+&))$,,224a8r   N)r   r   r   r   r   r   r   r   r   r     s    99r   r   N)django.core.exceptionsr   django.formsr   django.utilsr   parler.formsr   testapp.modelsr   r	   r
   r   r   r   r   r   r   r   utilsr   r   r$   r(   r-   r1   r5   r9   rJ   rN   r   r   r   r   <module>r      s    2 . $ .   & * . %: 1 . 
1 
$3H {L {L|9k 9r   