
    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	 d dl
mZmZ d dlmZ  G d d	ej                        Z G d
 de      Z G d de      Zy)    )admin)csrf_protect_m)PermissionDenied)HttpResponseRedirect)reverse)PagePageContent)user_can_change_pagec                       e Zd ZdZdZy)ExtensionAdminz%admin/cms/extensions/change_form.htmlN)__name__
__module____qualname__change_form_templateadd_form_template     D/home/dcms/DCMS/lib/python3.12/site-packages/cms/extensions/admin.pyr   r      s    B?r   r   c                   @     e Zd Z fdZd Zd Zed fd	       Z xZS )PageExtensionAdminc                 b   |snd|j                   v r`t        j                  j                  |j                   d         |_        t        j                  j                  |j                   d         }n|j                  }t        |j                  |      s
t               t        | %  ||||       y )Nextended_objectpk)
GETr   objectsgetr   r
   userr   super
save_model)selfrequestobjformchangepage	__class__s         r   r    zPageExtensionAdmin.save_model   s    +w{{:"&,,"2"2gkkBS6T"2"UC<<##w{{3D'E#FD&&D#GLL$7"$$7Cv6r   c                     |j                   j                  |j                        s
t               |j	                          y N)r   has_change_permissionr   r   delete)r!   r"   r#   s      r   delete_modelzPageExtensionAdmin.delete_model   s,    ""88F"$$

r   c                     i S zQ
        Return empty perms dict thus hiding the model from admin index.
        r   r!   r"   s     r   get_model_permsz"PageExtensionAdmin.get_model_perms!   	     	r   c                     |j                   j                  dd      }|r	 t        j                  j                  |      }| j                  j                  j                  |      }| j                  j
                  }t        d|j                   d|j                   d|j                  f| j                  j                        }t        |      S t        	| =  |||      S # | j                  j                  $ r Y ,w xY w	zj
        Check if the page already has an extension object. If so, redirect to edit view instead.
        r   Fr   )r   zadmin:__change)argscurrent_app)r   r   r   r   model_metar   	app_label
model_namer   
admin_sitenamer   DoesNotExistr   add_view)
r!   r"   form_urlextra_contextextended_object_idr&   	extensionopts
change_urlr'   s
            r   r?   zPageExtensionAdmin.add_view'   s    
 %[[__->F||''+='> JJ..2242H	zz''$T^^,Adoo->gF#,, $ 4 4

 ,J77 w=AA ::**    B.C! !C=<C= N	r   r   r   r    r,   r0   r   r?   __classcell__r'   s   @r   r   r      s(    7
 B Br   r   c                   @     e Zd Z fdZd Zd Zed fd	       Z xZS )PageContentExtensionAdminc                 x   |snd|j                   v r`t        j                  j                  |j                   d         |_        t        j                  j                  |j                   d         }n|j                  }t        |j                  |j                        s
t               t        | )  ||||       y )Nr   r   )r&   )r   r	   admin_managerr   r   r
   r   r&   r   r   r    )r!   r"   r#   r$   r%   contentr'   s         r   r    z$PageContentExtensionAdmin.save_model?   s    +w{{:"-";";"?"?7;;O`Ca"?"bC!//33w{{CT7U3VG))G#GLLw||D"$$7Cv6r   c                     |j                   j                  }t        |j                  |      s
t	               |j                          y r)   )r   r&   r
   r   r   r+   )r!   r"   r#   r&   s       r   r,   z&PageContentExtensionAdmin.delete_modelI   s3    ""''#GLL$7"$$

r   c                     i S r.   r   r/   s     r   r0   z)PageContentExtensionAdmin.get_model_permsP   r1   r   c                     |j                   j                  dd      }|r	 t        j                  j                  |      }| j                  j
                  j                  |      }| j                  j                  }t        d|j                   d|j                   d|j                  f| j                  j                        }t        |      S t        	| A  |||      S # | j                  j                  $ r Y ,w xY wr3   )r   r   r	   rO   r8   r   r9   r   r:   r;   r   r<   r=   r   r>   r   r?   )
r!   r"   r@   rA   rB   rP   rC   rD   rE   r'   s
            r   r?   z"PageContentExtensionAdmin.add_viewV   s    
 %[[__->F%3377;M7N JJ..2272K	zz''$T^^,Adoo->gF#,, $ 4 4

 ,J77 w=AA ::** rF   rG   rI   rK   s   @r   rM   rM   =   s(    7 B Br   rM   N)django.contribr   django.contrib.admin.optionsr   django.core.exceptionsr   django.httpr   django.urlsr   
cms.modelsr   r	   cms.utils.page_permissionsr
   
ModelAdminr   r   rM   r   r   r   <module>r\      sK      7 3 ,  ( ;@U%% @
*B *BZ,B ,Br   