
    Bh\              
           d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZ erd dlmZ d Zd	 Z	 ddededee   ded   fdZy
)    )TYPE_CHECKINGOptional)ValidationError)RegexValidatorURLValidator)	mark_safe)gettext)admin_reverserelative_url_regex)Pagec                 0     t        t              |        y )N)regex)r   r   values    D/home/dcms/DCMS/lib/python3.12/site-packages/cms/forms/validators.pyvalidate_relative_urlr      s    ,N+,U3    c                 Z    	 t        |        y # t        $ r  t               |        Y y w xY w)N)r   r   r   r   s    r   validate_urlr      s*    e$ us    **Npathlanguageuser_languageexclude_pager   c                 f   ddl m}m} d|v rt        |       |j	                  d      }|j
                  j                  | |      j                  |      }|r|j                  |j                        }|j                  u|j
                  j                  |j                  |      j                  dd	
      j                         xs d}d|v r|j                  d      d   n|}	|r| d|	 n|	}
||
k(  ry		 |d   j                  }|j!                  |d      }|rt#        d|j                  g      }nd}|r|d| z  }d| dt%        |j&                         d}|rt)        d      }nt)        d      }||||r|j+                  |      nddz  }t-        t/        |            # t        $ r Y y	w xY w)zChecks for conflicting urlsr   )r   PageUrl/)r   )r   )page)r   r   r   T)flat F)fallbackcms_pagecontent_change)argsz
?language=z	<a href="z" target="_blank">z</a>zQPage %(conflict_page)s has the same url '%(url)s' as current page "%(instance)s".zBPage %(conflict_page)s has the same url '%(url)s' as current page.)conflict_pageurlinstance)cms.models.pagemodelr   r   r   stripobjectsget_for_sitefilterexcludepk	parent_idvalues_listfirstsplitr   
IndexErrorget_content_objr
   strtitler	   	get_titler   r   )siter   r   r   r   r   r   	page_urlsparent_pathslugexpected_pathr$   conflict_translation
change_urlconflict_urlmessages                   r   validate_url_uniquenessr@      s    3
d{T::c?D,,TH,ELLRVLWI%%<??%;	 !!-&&L,B,BX&VV$/ 	  +.+4::c?2&4D7B{m1TF3M }$!!)) )88E8R"#;CWCZCZB[\


=/22
zl*<SAUA[A[=\<]]abLop^_%8DL**84" G
 )G,
--/  s   6F$ $	F0/F0)NN)typingr   r   django.core.exceptionsr   django.core.validatorsr   r   django.utils.safestringr   django.utils.translationr	   cms.utils.urlutilsr
   r   r'   r   r   r   r4   r@    r   r   <module>rH      s]    * 2 ? - , @)4 ko9.9."9.3;C=9.W_`fWg9.r   