§
    ¤”jL!  ã                   ó°   — 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  G d„ de	¦  «        Z ed	d
i¬¦  «         G d„ dee¦  «        ¦   «         ZdS )é    )Úcontextmanager)ÚStaticLiveServerTestCase)Úmodify_settings)ÚSeleniumTestCase)ÚMiddlewareMixin)Úgettextc                   ó   — e Zd ZdZd„ ZdS )ÚCSPMiddlewarez5The admin's JavaScript should be compatible with CSP.c                 ó   — d|j         d<   |S )Nzdefault-src 'self'zContent-Security-Policy)Úheaders)ÚselfÚrequestÚresponses      úi/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/django/contrib/admin/tests.pyÚprocess_responsezCSPMiddleware.process_response   s   € Ø6JˆÔÐ2Ñ3Øˆó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r
   r
   
   s)   € € € € € Ø?Ð?ðð ð ð ð r   r
   Úappendz(django.contrib.admin.tests.CSPMiddleware)Ú
MIDDLEWAREc                   ó¢   — e Zd Zg d¢Zdd„Zdd„Zdd„Zdd„Zdd„Zdd	„Z	dd
„Z
dd„Zedd„¦   «         Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ ZdS )ÚAdminSeleniumTestCase)zdjango.contrib.adminzdjango.contrib.authzdjango.contrib.contenttypeszdjango.contrib.sessionszdjango.contrib.sitesé
   c                 óZ   — ddl m}  || j        |¦  «                             |¦  «         dS )a%  
        Block the execution of the tests until the specified callback returns a
        value that is not falsy. This method can be called, for example, after
        clicking a link or submitting a form. See the other public methods that
        call this function for more details.
        r   )ÚWebDriverWaitN)Úselenium.webdriver.support.waitr   ÚseleniumÚuntil)r   ÚcallbackÚtimeoutr   s       r   Ú
wait_untilz AdminSeleniumTestCase.wait_until   s?   € ð 	BÐAÐAÐAÐAÐAàˆ�d”m WÑ-Ô-×3Ò3°HÑ=Ô=Ð=Ð=Ð=r   é   c                 óÀ   ‡— |                       ˆfd„|¦  «         | j        j                             | j        j        d         ¦  «         |                      ¦   «          dS )zÓ
        Block until `num_windows` are present and are ready (usually 2, but can
        be overridden in the case of pop-ups opening other pop-ups). Switch the
        current window to the new pop-up.
        c                 ó4   •— t          | j        ¦  «        ‰k    S ©N)ÚlenÚwindow_handles)ÚdÚnum_windowss    €r   ú<lambda>zDAdminSeleniumTestCase.wait_for_and_switch_to_popup.<locals>.<lambda>-   s   ø€ ¥# aÔ&6Ñ"7Ô"7¸;Ò"F€ r   éÿÿÿÿN)r$   r    Ú	switch_toÚwindowr*   Úwait_page_ready)r   r,   r#   s    ` r   Úwait_for_and_switch_to_popupz2AdminSeleniumTestCase.wait_for_and_switch_to_popup'   s^   ø€ ð 	�ŠÐFÐFÐFÐFÈÑPÔPÐPØŒÔ×&Ò& t¤}Ô'CÀBÔ'GÑHÔHÐHØ×ÒÑÔÐÐÐr   c                 ó~   — ddl m} ddlm} |                      |                     |j        |f¦  «        |¦  «         dS )zB
        Block until a CSS selector is found on the page.
        r   ©ÚBy©Úexpected_conditionsN)Úselenium.webdriver.common.byr5   Úselenium.webdriver.supportr7   r$   Úpresence_of_element_locatedÚCSS_SELECTOR©r   Úcss_selectorr#   r5   Úecs        r   Úwait_forzAdminSeleniumTestCase.wait_for1   sb   € ð 	4Ð3Ð3Ð3Ð3Ð3ØHÐHÐHÐHÐHÐHà�ŠØ×*Ò*¨B¬O¸\Ð+JÑKÔKÈWñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó€   — ddl m} ddlm} |                      |                     |j        |f|¦  «        |¦  «         dS )zD
        Block until the text is found in the CSS selector.
        r   r4   r6   N)r8   r5   r9   r7   r$   Útext_to_be_present_in_elementr;   ©r   r=   Útextr#   r5   r>   s         r   Úwait_for_textz#AdminSeleniumTestCase.wait_for_text<   se   € ð 	4Ð3Ð3Ð3Ð3Ð3ØHÐHÐHÐHÐHÐHà�ŠØ×,Ò,¨b¬o¸|Ð-LÈdÑSÔSØñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó€   — ddl m} ddlm} |                      |                     |j        |f|¦  «        |¦  «         dS )zE
        Block until the value is found in the CSS selector.
        r   r4   r6   N)r8   r5   r9   r7   r$   Ú#text_to_be_present_in_element_valuer;   rB   s         r   Úwait_for_valuez$AdminSeleniumTestCase.wait_for_valueH   sl   € ð 	4Ð3Ð3Ð3Ð3Ð3ØHÐHÐHÐHÐHÐHà�ŠØ×2Ò2Ø” ,Ð/°ñô ð ñ		
ô 	
ð 	
ð 	
ð 	
r   c                 ó~   — ddl m} ddlm} |                      |                     |j        |f¦  «        |¦  «         dS )zS
        Block until the element described by the CSS selector is visible.
        r   r4   r6   N)r8   r5   r9   r7   r$   Úvisibility_of_element_locatedr;   r<   s        r   Úwait_until_visiblez(AdminSeleniumTestCase.wait_until_visibleV   sb   € ð 	4Ð3Ð3Ð3Ð3Ð3ØHÐHÐHÐHÐHÐHà�ŠØ×,Ò,¨b¬o¸|Ð-LÑMÔMÈwñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó~   — ddl m} ddlm} |                      |                     |j        |f¦  «        |¦  «         dS )zU
        Block until the element described by the CSS selector is invisible.
        r   r4   r6   N)r8   r5   r9   r7   r$   Úinvisibility_of_element_locatedr;   r<   s        r   Úwait_until_invisiblez*AdminSeleniumTestCase.wait_until_invisiblea   sc   € ð 	4Ð3Ð3Ð3Ð3Ð3ØHÐHÐHÐHÐHÐHà�ŠØ×.Ò.°´ÀÐ/NÑOÔOÐQXñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ó4   — |                       d„ |¦  «         dS )z1
        Block until the  page is ready.
        c                 ó4   — |                       d¦  «        dk    S )Nzreturn document.readyState;Úcomplete)Úexecute_script)Údrivers    r   r-   z7AdminSeleniumTestCase.wait_page_ready.<locals>.<lambda>q   s   € ˜6×0Ò0Ð1NÑOÔOØò€ r   N)r$   )r   r#   s     r   r1   z%AdminSeleniumTestCase.wait_page_readyl   s1   € ð 	�Šðð àñ	
ô 	
ð 	
ð 	
ð 	
r   c              #   óê   K  — ddl m} ddlm} | j                             |j        d¦  «        }dV — |                      |                     |¦  «        |¬¦  «         |  	                    |¬¦  «         dS )zA
        Block until a new page has loaded and is ready.
        r   r4   r6   ÚhtmlN)r#   )
r8   r5   r9   r7   r    Úfind_elementÚTAG_NAMEr$   Ústaleness_ofr1   )r   r#   r5   r>   Úold_pages        r   Úwait_page_loadedz&AdminSeleniumTestCase.wait_page_loadedv   s�   è è € ð
 	4Ð3Ð3Ð3Ð3Ð3ØHÐHÐHÐHÐHÐHà”=×-Ò-¨b¬k¸6ÑBÔBˆØˆˆˆà�Š˜Ÿš¨Ñ1Ô1¸7ˆÑCÔCÐCØ×Ò WÐÑ-Ô-Ð-Ð-Ð-r   ú/admin/c                 ó  — ddl m} | j                             | j        ›|›�¦  «         | j                             |j        d¦  «        }|                     |¦  «         | j                             |j        d¦  «        }|                     |¦  «         t          d¦  «        }|  	                    ¦   «         5  | j                             |j
        d|z  ¦  «                             ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )z&
        Log in to the admin.
        r   r4   ÚusernameÚpasswordzLog inz//input[@value="%s"]N)r8   r5   r    ÚgetÚlive_server_urlrU   ÚNAMEÚ	send_keysÚ_rY   ÚXPATHÚclick)r   r\   r]   Ú	login_urlr5   Úusername_inputÚpassword_inputÚ
login_texts           r   Úadmin_loginz!AdminSeleniumTestCase.admin_login„   sA  € ð 	4Ð3Ð3Ð3Ð3Ð3àŒ×Ò DÔ$8Ð$8¸)¸)ÐDÑEÔEÐEØœ×3Ò3°B´G¸ZÑHÔHˆØ× Ò  Ñ*Ô*Ð*Øœ×3Ò3°B´G¸ZÑHÔHˆØ× Ò  Ñ*Ô*Ð*Ý�x‘[”[ˆ
Ø×"Ò"Ñ$Ô$ð 	ð 	ØŒM×&Ò&Ø”Ð0°:Ñ=ñô çŠe‰gŒgˆgð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Â76C:Ã:C>ÄC>c                 óš   — ddl m} ddlm}  || j                             |j        |¦  «        ¦  «        }|                     |¦  «         dS )zŠ
        Select the <OPTION> with the value `value` inside the <SELECT> widget
        identified by the CSS selector `selector`.
        r   r4   ©ÚSelectN)r8   r5   Úselenium.webdriver.support.uirl   r    rU   r;   Úselect_by_value©r   ÚselectorÚvaluer5   rl   Úselects         r   Úselect_optionz#AdminSeleniumTestCase.select_option•   se   € ð
 	4Ð3Ð3Ð3Ð3Ð3Ø8Ð8Ð8Ð8Ð8Ð8à�˜œ×2Ò2°2´?ÀHÑMÔMÑNÔNˆØ×Ò˜uÑ%Ô%Ð%Ð%Ð%r   c                 óš   — ddl m} ddlm}  || j                             |j        |¦  «        ¦  «        }|                     |¦  «         dS )zŒ
        Deselect the <OPTION> with the value `value` inside the <SELECT> widget
        identified by the CSS selector `selector`.
        r   r4   rk   N)r8   r5   rm   rl   r    rU   r;   Údeselect_by_valuero   s         r   Údeselect_optionz%AdminSeleniumTestCase.deselect_option    se   € ð
 	4Ð3Ð3Ð3Ð3Ð3Ø8Ð8Ð8Ð8Ð8Ð8à�˜œ×2Ò2°2´?ÀHÑMÔMÑNÔNˆØ× Ò  Ñ'Ô'Ð'Ð'Ð'r   Nc                 óœ   — ddl m} |p| j        }|                      t	          |                     |j        |¦  «        ¦  «        |¦  «         dS )z€
        Assert number of matches for a CSS selector.

        `root_element` allow restriction to a pre-selected node.
        r   r4   N)r8   r5   r    ÚassertEqualr)   Úfind_elementsr;   )r   rp   ÚcountÚroot_elementr5   s        r   ÚassertCountSeleniumElementsz1AdminSeleniumTestCase.assertCountSeleniumElements«   sc   € ð 	4Ð3Ð3Ð3Ð3Ð3à#Ð4 t¤}ˆØ×ÒÝ�×*Ò*¨2¬?¸HÑEÔEÑFÔFÈñ	
ô 	
ð 	
ð 	
ð 	
r   c                 ót  ‡‡— ddl mŠ |rg| j                             ‰j        ‰¦  «        }g }|D ]*}|                     |                     d¦  «        ¦  «         Œ+|                      ||¦  «         d S |                      ¦   «         5  |  	                    ˆˆfd„¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r4   rq   c                 ó<   •— |                       ‰j        ‰¦  «         S r(   )ry   r;   )rR   r5   Úoptions_selectors    €€r   r-   z<AdminSeleniumTestCase._assertOptionsValues.<locals>.<lambda>Ç   s$   ø€  v×';Ò';ØœÐ)9ñ(ô (ð $€ r   )
r8   r5   r    ry   r;   r   Úget_attributerx   Údisable_implicit_waitr$   )r   r   ÚvaluesÚoptionsÚactual_valuesÚoptionr5   s    `    @r   Ú_assertOptionsValuesz*AdminSeleniumTestCase._assertOptionsValues¸   s6  øø€ Ø3Ð3Ð3Ð3Ð3Ð3àð 	Ø”m×1Ò1°"´/ÐCSÑTÔTˆGØˆMØ!ð Dð D�Ø×$Ò$ V×%9Ò%9¸'Ñ%BÔ%BÑCÔCÐCÐCØ×Ò˜V ]Ñ3Ô3Ð3Ð3Ð3ð
 ×+Ò+Ñ-Ô-ð ð Ø—’ðð ð ð ð ñô ð ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÂB-Â-B1Â4B1c                 ó8   — |                       d|z  |¦  «         dS )z{
        Assert that the <SELECT> widget identified by `selector` has the
        options with the given `values`.
        z%s > optionN©r†   ©r   rp   r‚   s      r   ÚassertSelectOptionsz)AdminSeleniumTestCase.assertSelectOptionsÌ   s%   € ð
 	×!Ò! -°(Ñ":¸FÑCÔCÐCÐCÐCr   c                 ó8   — |                       d|z  |¦  «         dS )z„
        Assert that the <SELECT> widget identified by `selector` has the
        selected options with the given `values`.
        z%s > option:checkedNrˆ   r‰   s      r   ÚassertSelectedOptionsz+AdminSeleniumTestCase.assertSelectedOptionsÓ   s&   € ð
 	×!Ò!Ð"7¸(Ñ"BÀFÑKÔKÐKÐKÐKr   c                 ó¢   — ddl m} | j                             |j        |¦  «                             d¦  «                             |¦  «        dk    S )zh
        Return True if the element identified by `selector` has the CSS class
        `klass`.
        r   r4   Úclassr.   )r8   r5   r    rU   r;   r€   Úfind)r   rp   Úklassr5   s       r   Úhas_css_classz#AdminSeleniumTestCase.has_css_classÚ   s\   € ð
 	4Ð3Ð3Ð3Ð3Ð3ð ŒM×&Ò&Ø”Øñô ÷ Š]˜7Ñ#Ô#ßŠT�%‰[Œ[Øòð	
r   )r   )r%   r   )rZ   r(   )r   r   r   Úavailable_appsr$   r2   r?   rD   rG   rJ   rM   r1   r   rY   ri   rs   rv   r|   r†   rŠ   rŒ   r‘   r   r   r   r   r      sm  € € € € € ðð ð €Nð	>ð 	>ð 	>ð 	>ðð ð ð ð	
ð 	
ð 	
ð 	
ð

ð 

ð 

ð 

ð
ð 
ð 
ð 
ð	
ð 	
ð 	
ð 	
ð	
ð 	
ð 	
ð 	
ð
ð 
ð 
ð 
ð ð.ð .ð .ñ „^ð.ðð ð ð ð"	&ð 	&ð 	&ð	(ð 	(ð 	(ð
ð 
ð 
ð 
ðð ð ð(Dð Dð DðLð Lð Lð
ð 
ð 
ð 
ð 
r   r   N)Ú
contextlibr   Ú"django.contrib.staticfiles.testingr   Údjango.testr   Údjango.test.seleniumr   Údjango.utils.deprecationr   Údjango.utils.translationr   rb   r
   r   r   r   r   ú<module>r™      sþ   ðØ %Ð %Ð %Ð %Ð %Ð %à GÐ GÐ GÐ GÐ GÐ GØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð �Oñ ô ð ð €˜XÐ'QÐRÐSÑSÔSðV
ð V
ð V
ð V
ð V
Ð,Ð.Fñ V
ô V
ñ TÔSðV
ð V
ð V
r   