
    Bh                          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 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mZ 	 d dlmZ eZ G d de      Z G d de      Zy# e$ r ej:                  ZY *w xY w)    )forms)ValidationError)transaction)slugify)gettextgettext_lazy)AddPageForm)plugin_pool)permissionsget_cms_setting)get_available_slug)user_can_add_pageuser_can_add_subpage)TextEditorWidgetc                        e Zd ZdZdZdZdZ ej                   e	d      e
d e	d            Z G d d      Z fdZdd	Zed
        Zd Zd Zd Zej*                   fd       Z xZS )CreateCMSPageFormFNContentzLOptional. If supplied, will be automatically added within a new text plugin.)labelwidgetrequired	help_textc                       e Zd ZdZy)CreateCMSPageForm.Media)z'cms/js/widgets/wizard.pagetypeselect.jsN)__name__
__module____qualname__js     A/home/dcms/DCMS/lib/python3.12/site-packages/cms/forms/wizards.pyMediar   $   s	    
r    r"   c                     t        |   |i | t        d      | j                  d   _        d| j                  d   _        t        d      | j                  d   _        y )Nz!Provide a title for the new page.titleFslugz8Leave empty for automatic slug, or override as required.)super__init___fieldsr   r   )selfargskwargs	__class__s      r!   r'   zCreateCMSPageForm.__init__+   sT    $)&))*+N)OG&',F$()*d(eF%r    c                     |j                         }|r|j                  |      }|D ]  }|j                  r|j                  s|c S  y)u   
        Returns the named placeholder or, if no «slot» provided, the first
        editable, non-static placeholder or None.
        slotN)get_placeholdersfilter	is_staticis_editable)r*   page_contentr0   placeholdersphs        r!   get_placeholderz!CreateCMSPageForm.get_placeholder1   sN    
 $446'..D.9L 	B<<BNN		 r    c                     | j                   S N)language_coder*   s    r!   	_languagezCreateCMSPageForm._language@   s    !!!r    c                 *   | j                   }| j                  r|S t        |j                  d            xs t        |d         }|s&d|d<   t	        j
                  dt        d      gi       |j                  d      }|r'|j                  | j                        }|r| d| n|}nd}|}t        | j                  || j                  d      |d<   |rd	j                  ||d         n|d   |d
<   |d   st	        j
                  t        d            |S )z
        Validates that either the slug is provided, or that slugification from
        `title` produces a valid slug.
        :return:
        r%   r$    z>Cannot automatically create slug. Please provide one manually.parent_page/N)suffixz{}/{}pathzPlease provide a valid slug.)cleaned_data_errorsr   getr   r   r(   get_pathr=   r   _siteformat)r*   datar%   r@   baserC   s         r!   cleanzCreateCMSPageForm.cleanD   s      <<Ktxx'(BGDM,BDL!![\]#  hh}-''7D'+dV1TF#DDD)$**dDNNSWXV=Aw~~dDL9tF|VF|''*H(IJJr    c                 \   | j                   r| j                  r| j                   }n;| j                   r-| j                   j                  r| j                   j                  }nd }|rt        | j                  |      }nt        | j                        }|st        d      }t        |      |r|S d S )N)targetz6You don't have the permissions required to add a page.)_pagesub_page_formparentr   _userr   r   r   )r*   r@   has_permmessages       r!   clean_parent_pagez#CreateCMSPageForm.clean_parent_pagef   s     ::$,, **KZZDJJ-- **++KK+DJJ{KH(4HWXG!'**){3t3r    c                     t        d      S )NPAGE_WIZARD_DEFAULT_TEMPLATEr   r<   s    r!   get_templatezCreateCMSPageForm.get_template   s    =>>r    c                    ddl m} t        |   di |}|j                  }| j
                  j                  d      r|S | j
                  j                  d      }t        d      }t        d      }t        d      }|t        j                  v rV|rT|rRt        j                  | j                  |d      r1| j                  ||	      }	|	rd
|	d|d| j                  ||i}
 |di |
 |S )Nr   )
add_plugin	page_typecontentPAGE_WIZARD_CONTENT_PLUGINPAGE_WIZARD_CONTENT_PLUGIN_BODYPAGE_WIZARD_CONTENT_PLACEHOLDERaddr/   placeholderplugin_typelanguager   )cms.apirZ   r&   savepagerD   rF   r   r
   pluginsr   has_plugin_permissionrR   r8   r;   )r*   r,   rZ   new_translationnew_pager\   rb   plugin_bodyr0   ra   optsr-   s              r!   re   zCreateCMSPageForm.save   s    &',00"''  -O ##''	2%&BC%&GH@A+---+;<<JJU4"22?2N%{%{"D$6$6#W	D &&r    r:   )r   r   r   rP   
menu_title
page_titlemeta_descriptionr   	CharFieldr(   text_widgetr\   r"   r'   r8   propertyr=   rL   rU   rX   r   atomicre   __classcell__)r-   s   @r!   r   r      s    M JJeoo	l; 0 1G
 
f " " D42?  r    r   c                       e Zd ZdZy)CreateCMSSubPageFormTN)r   r   r   rP   r   r    r!   rv   rv      s    Mr    rv   N) djangor   django.core.exceptionsr   	django.dbr   django.utils.textr   django.utils.translationr   r   r(   cms.admin.formsr	   cms.plugin_poolr
   	cms.utilsr   cms.utils.confr   cms.utils.pager   cms.utils.page_permissionsr   r   djangocms_text_ckeditor.widgetsr   rq   ImportErrorTextarear   rv   r   r    r!   <module>r      sj     2 ! % ? ' ' ! * - N!@"K
H HV, _  !..K!s   A' 'A;:A;