
    Bh                         d dl mZ d dlmZ d dlmZmZ  G d dej                        Z G d de      Z	 G d d	e      Z
y
)    )models)ManyToManyField)PagePageContentc                       e Zd Z ej                  dej
                  ddd      ZdZ G d d      Zd	 Z	d
 Z
ed        Zd Zd Zy)BaseExtensionselfTFdraft_extension)	on_deletenulleditablerelated_nameNc                       e Zd ZdZy)BaseExtension.MetaTN__name__
__module____qualname__abstract     E/home/dcms/DCMS/lib/python3.12/site-packages/cms/extensions/models.pyMetar          r   r   c                     t        d      )NzOFunction must be overwritten in subclasses and return the extended page object.)NotImplementedErrorr	   s    r   get_pagezBaseExtension.get_page   s    !"sttr   c                      y)z
        Copy relations like many to many or foreign key relations to the public version.
        Similar to the same named cms plugin function.

        :param oldinstance: the draft version of the extension
        Nr   )r	   oldinstancelanguages      r   copy_relationszBaseExtension.copy_relations   s     	r   c                 d    | j                   j                  dddd      }t        d |D              S )NFT)forwardreverseinclude_parentsinclude_hiddenc              3   V   K   | ]!  }t        |j                  t              r| # y wN)
isinstancefieldr   ).0objs     r   	<genexpr>z5BaseExtension._get_related_objects.<locals>.<genexpr>'   s     XCCII1WCXs   )))_meta_get_fieldslist)clsfieldss     r   _get_related_objectsz"BaseExtension._get_related_objects    s9    &&4   ' 

 X6XXXr   c                    | j                   j                  j                  | j                        }d|_        d|_        ||_        |j                  j                  j                         D ]3  \  }}|s	t        ||j                  j                  j                  d       5 |j                          |j                  | |       |S )zK
        This method copies this extension to an unrelated-target.
        )pkN)	__class__objectsgetr6   public_extensionextended_objectr/   parentsitemssetattrattnamesaver"   )r	   targetr!   cloneparentr+   s         r   copyzBaseExtension.copy)   s     &&**dgg*6!% & #[[00668 	>MFEv||66=	> 	

T8,r   c                 <    ddl }|j                  dt        d       y)a]  
        .. warning::

            This method used to "publish" this extension as part of the a larger operation on the target.
            Publishing pages has been removed from django CMS core in version 4 onward.

            For publishing functionality see `djangocms-versioning: <https://github.com/django-cms/djangocms-versioning>`_
        r   NzThis API function has been removed. For publishing functionality use a package that adds publishing, such as: djangocms-versioning.   )
stacklevel)warningswarnUserWarning)r	   public_objectr!   rH   s       r   copy_to_publiczBaseExtension.copy_to_public;   s#     	 C!a 	 	1r   )r   r   r   r   OneToOneFieldCASCADEr:   r;   r   r   r"   classmethodr4   rD   rL   r   r   r   r   r      sd    +v++..& O u Y Y$1r   r   c                   d    e Zd Z ej                  eej                  d      Z G d d      Zd Z	y)PageExtensionFr   r   c                       e Zd ZdZy)PageExtension.MetaTNr   r   r   r   r   rT   M   r   r   r   c                     | j                   S r)   )r;   r   s    r   r   zPageExtension.get_pageP   s    ###r   N)
r   r   r   r   rM   r   rN   r;   r   r   r   r   r   rQ   rQ   J   s,    *f**46>>TYZO $r   rQ   c                   d    e Zd Z ej                  eej                  d      Z G d d      Zd Z	y)PageContentExtensionFrR   c                       e Zd ZdZy)PageContentExtension.MetaTNr   r   r   r   r   rY   W   r   r   r   c                 .    | j                   j                  S r)   )r;   pager   s    r   r   zPageContentExtension.get_pageZ   s    ##(((r   N)
r   r   r   r   rM   r   rN   r;   r   r   r   r   r   rW   rW   T   s,    *f**;&..[`aO )r   rW   N)	django.dbr   django.db.modelsr   
cms.modelsr   r   Modelr   rQ   rW   r   r   r   <module>r`      s9     , (@1FLL @1F$M $)= )r   