
    wgK                         d dl mZ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  G d dej                  Z G d	 d
e          Z G d de          Z G d dej                  Z G d dej                  ZdS )    )ObjectDoesNotExistValidationError)models)ErrorsMessages)BasePageBlockBlockRelationship)is_template_exists)validate_html_filenamec                   (    e Zd Z G d d          ZdS )BasePageModelc                       e Zd ZdZdS )BasePageModel.MetaTN)__name__
__module____qualname__abstract     D/var/www/html/cms/infrastructure/persistence/models/blocks/common.pyMetar      s        r   r   N)r   r   r   r   r   r   r   r   r   
   s<                 r   r   c                   x    e Zd Z ej        dd          Z ej        ddd          Z G d d          Zd Zd	S )
Pageu   Заголовок2   verbose_name
max_lengthT)r   nullblankc                        e Zd ZdZdZdZdgZdS )	Page.Metablocks   Страницаu   СтраницыurlN)r   r   r   	app_labelr   verbose_name_pluralorderingr   r   r   r   r       s%        	)07r   r   c                     | j         S N)titleselfs    r   __str__zPage.__str__   s
    zr   N)	r   r   r   r   	CharFieldr)   r#   r   r,   r   r   r   r   r      s|        F*>2NNNE
&
bt4
@
@
@C           r   r   c                       e Zd Z ej        edej        d          Z ej        eddej                  Z	 G d de
j                  Zd	S )
Blocku   Блок
page_block)r   	on_deleterelated_namer!   r"   )r2   r   r1   c                       e Zd ZdZdS )
Block.Metar!   N)r   r   r   r$   r   r   r   r   r4   #   s        			r   r   N)r   r   r   r   
ForeignKeyr   CASCADEnamer   pager   r   r   r   r   r/   r/      s        6
fn[g  D 6TGYekestttD    }!     r   r/   c                        e Zd Z ej        dd          Z ej        dd          Z G d d          Zd Z fdZ	 xZ
S )	Templateu   Название шаблонаr   r   u8   Название файла (например base.html)c                       e Zd ZdZdZdZdS )Template.Metar!   u   шаблонu   шаблоныN)r   r   r   r$   r   r%   r   r   r   r   r<   +   s         	%.r   r   c                     | j         S r(   r7   r*   s    r   r,   zTemplate.__str__0   
    yr   c                 
   t                                                       t          | j                  st	          dt
          j        i          t          d| j        z             st	          dt
          j        i          d S )Nfilezblocks/)	supercleanr
   rA   r   r   incorrect_file_namer	   template_doesnt_exist)r+   	__class__s    r   rC   zTemplate.clean3   sw    %di00 	P!6>+M"NOOO!)di"788 	R!6>+O"PQQQ	R 	Rr   )r   r   r   r   r-   r7   rA   r   r,   rC   __classcell__rF   s   @r   r:   r:   '   s        6)JWYZZZD6)cprsssD/ / / / / / / /
  R R R R R R R R Rr   r:   c                        e Zd Z ej        ddd          Z ej        edej                  Z	 ej        dddd          Z
 ej        eej        d	          Z G d
 d          Zd Zd Z fdZ xZS )	BaseBlocku   Имяr   T)r   r   uniqueu   html шаблон)r   r1   u
   Якорь)r   r   r   r   )r1   r   c                       e Zd ZdZdZdS )BaseBlock.Metar!   TN)r   r   r   r$   r   r   r   r   r   rM   A   s        	r   r   c                     | j         S r(   r>   r*   s    r   r,   zBaseBlock.__str__E   r?   r   c                 4    	 | j         S # t          $ r Y d S w xY wr(   )stylesr   r*   s    r   
get_styleszBaseBlock.get_stylesH   s1    	;! 	 	 	44	s   	 
c                     t                      j        |i | t          j                            t          |           j         | j         d| j        i          \  }}|| _	         t                      j        |i | d S )N
block_name)blockdefaults)
rB   saver   objectsupdate_or_createtyper   idr7   block_relation)r+   argskwargsr[   _rF   s        r   rV   zBaseBlock.saveN   s    d%f%%%-5FF$ZZ(3$'33|TY>W G 
 
 -d%f%%%%%r   )r   r   r   r   r-   r7   r5   r:   r6   templateancorr   SET_NULLr[   r   r,   rQ   rV   rG   rH   s   @r   rJ   rJ   ;   s        6bNNND v 8KW]WefffHF,2DX\]]]E&V&'8FOZ^___N           	& 	& 	& 	& 	& 	& 	& 	& 	&r   rJ   N)django.core.exceptionsr   r   	django.dbr   application.texts.errorsr   (infrastructure.persistence.models.commonr   r   web.blocks.template_existr	   web.blocks.validatorsr
   Modelr   r   r/   r:   rJ   r   r   r   <module>ri      sg   F F F F F F F F       3 3 3 3 3 3 U U U U U U U U 8 8 8 8 8 8 8 8 8 8 8 8    FL   
    =       M   R R R R Rv| R R R(& & & & & & & & & &r   