
    wg<                        d dl 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 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 d dl m!Z!  G d dee          Z" G d de"          Z# e	ed           G d de                      Z$ e	ed           G d de                      Z%dS )    N)Any)IntegrityError)HttpRequestHttpResponse)method_decorator)csrf_exempt)View)get_page_service)PageInterface)PageRepositoryInterface)PageServiceInterface)find_class_in_directory)get_page_repository)PageSerializer)SettingsMixin)StylesMixin)UserFormsViewc                   \     e Zd ZU dZ e            Zeed<   dede	e
ef         f fdZ xZS )BasePageViewzblocks/page.htmlpage_repositorypagereturnc                      t                      j        di ||                                 z  }|t          j                    z  }t	          |          j        |d<   |S )Nr    )superget_context_dataget_styles_contextr   r   data)selfr   kwargscontext	__class__s       %/var/www/html/cms/web/blocks/views.pyr   zBasePageView.get_context_data   s\    *%''*44V44t7N7N7P7PP=1333(..3    )__name__
__module____qualname__template_namer   r   r   __annotations__r   dictstrr   r   __classcell__r"   s   @r#   r   r      st         &M/B/B/D/DO,DDD] c3h          r$   r   c                        e Zd Z fdZ xZS )	IndexPagec                 p    | j                             d           } t                      j        dd|i|S )N)urlr   r   )r   getr   r   )r   r    r   r"   s      r#   r   zIndexPage.get_context_data%   s>    #''D'11'uww'<<T<V<<<r$   )r%   r&   r'   r   r,   r-   s   @r#   r/   r/   $   s8        = = = = = = = = =r$   r/   dispatch)namec                   6    e Zd Z e            fdededefdZdS )	ClonePagerequestpage_servicer   c                     t          j        |j                  }|                    d          }|                    |           t          d          S )Npage_id   status)jsonloadsbodyr2   
clone_pager   )r   r7   r8   r   r:   s        r#   postzClonePage.post-   sI    z',''((9%%(((3''''r$   N)r%   r&   r'   r
   r   r   r   rB   r   r$   r#   r6   r6   +   sP        N^N^N`N` ( (K (7K (eq ( ( ( ( ( (r$   r6   c                       e Zd Zd ZdS )
CloneBlockc           	         t          j        |j                  }|                    d          }|                    d          }t	          d|          }|j                            |          }g }i }|j                                        D ]3}|j        rt          d|j
                    t          ||j
                  r]t          ||j
                  }	t          |	                                          }
|
r%t          dt          |
           d           ||
z  }|j        rt          d|j
                    |j        ryt          d	|j
                    t          ||j
                  }	t          |	                                          }|r*t          dt          |           d
           |||j
        <   5d |_        	 |                                 n5# t(          $ r( |j
        dz   }||_
        |                                 Y nw xY wt          dt+          |           d           |D ]}|j        j        D ]}|j        |j        k    rud |_        t3          ||j
        |           |                                 t+          |          }t          |          dk    r|d d         dz   n|}t          d| d           |                                D ]x\  }}t          ||          }|                    |           g }|D ]$}|                    t+          |                     %t          dt          |           d| d|            yt;          d          S )Nblock_idblock_classzblocks/models)idzFound a one-to-many field: z - z related objects to copyzFound a many-to-one field: zFound a many-to-many field: z relations to setz(1)zCopied parent object ()(   z..z|- Copied child object (z|- Set z many-to-many relations on  r;   r<   )r>   r?   r@   r2   r   objects_meta
get_fieldsone_to_manyprintr4   hasattrgetattrlistalllenmany_to_onemany_to_manypksaver   r+   fieldsrelated_modelr"   setattritemssetappendr   )r   r7   r   rF   rG   blockrelated_objects_to_copyrelations_to_setfieldrelated_object_managerrelated_objects	relationsr4   related_objectrelated_object_fieldtext
field_nametext_relationsrelations                      r#   rB   zCloneBlock.post8   s   z',''88J''hh}---o{KK#''8'44"$[++-- 	= 	=E  = @EJ@@AAA 5%*-- C-4UEJ-G-G*&*+A+E+E+G+G&H&HO& CRC$8$8RRRSSS/?B/" = @EJ@@AAAA# 	= AUZAABBB)0
)C)C& !7!;!;!=!=>>	 =AIAAABBB3<$UZ0 	JJLLLL 	 	 	:%DEJJJLLLLL	
 	4s5zz444555 6 	> 	>N )7(<(C > >$'5HH )-N%N,@,EuMMM"'')))~..D14TRD"I,,TD<T<<<===> &6%;%;%=%= 	f 	f!J	E:..EIIi   N% 5 5%%c(mm4444dC	NNddzddTbddeeee3''''s   	G /HHN)r%   r&   r'   rB   r   r$   r#   rD   rD   6   s(        Q( Q( Q( Q( Q(r$   rD   )&r>   typingr   django.db.utilsr   django.httpr   r   django.utils.decoratorsr   django.views.decorators.csrfr   django.views.genericr	   "application.services.pages_servicer
    domain.page_blocks.entities.pager   "domain.page_blocks.page_repositoryr   )domain.page_blocks.page_service_interfacer   infrastructure.files.filesr   7infrastructure.persistence.repositories.page_repositoryr   web.blocks.serializersr   !web.settings.views.settings_mixinr   web.styles.viewsr   web.user.views.base_user_viewr   r   r/   r6   rD   r   r$   r#   <module>r}      s,          * * * * * * 1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 4 4 4 4 % % % % % % ? ? ? ? ? ? : : : : : : F F F F F F J J J J J J > > > > > > W W W W W W 1 1 1 1 1 1 ; ; ; ; ; ; ( ( ( ( ( ( 7 7 7 7 7 7    =+   = = = = = = = = +J///( ( ( ( ( ( ( 0/( +J///R( R( R( R( R( R( R( 0/R( R( R(r$   