
    h                     n   d dl mZmZ ej                  rd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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      Zd Z G d de      Z	ej<                  j?                  e
j@                          ejB                  e	       yy# e$ r dZY }w xY w)   )conf	constants    )r   )apphook_pool)CMSMenuget_visible_nodes)Page)TreeNodeN)get_object_preview_urlget_toolbar_from_request)get_page_queryset)apps)MenuNavigationNode)	menu_poolc                       e Zd Zd Zy)CMSVersionedNavigationNodec                 l    	 |j                   j                  }|| j                  k(  S # t        $ r Y yw xY w)NF)current_pagepkAttributeErrorid)selfrequestpage_ids      N/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_versioning/cms_menus.pyis_selectedz&CMSVersionedNavigationNode.is_selected   s=    !..11 dgg%% " s   ' 	33N)__name__
__module____qualname__r        r   r   r      s    	&r"   r   c                    |j                   }| j                  }d|j                  |j                  |j                  d}|j
                  }|t        j                  u rd|d<   d|d<   n,|t        j                  k(  |d<   |t        j                  k(  |d<   |j                  |d<   g }|j                  r|j                  | j                  v r|j                  |j                         nQ|j                   d|j                   | j                  v r*|j                  |j                   d|j                          |j                  r6t!        j"                  |j                        }|r||j%                  ||      z  }g }|D ]r  }	t'        |	d      r+|j                  |	j(                   d|j                          :t'        |	d      r|j                  |	j(                         b|j                  |	       t |r||d	<   |j*                  |d
<   |S )NT)is_page	soft_rootauth_required
reverse_idvisible_for_authenticatedvisible_for_anonymousis_home:get_instancesr   navigation_extendersredirect_url)pagerequest_languager%   login_requiredr'   limit_visibility_in_menucms_constantsVISIBILITY_ALLVISIBILITY_USERSVISIBILITY_ANONYMOUSr*   r-   menusappendr   application_urlsr   get_apphook	get_menushasattrr   redirect)
rendererpage_contentr/   languageattrr2   	extendersappextsexts
             r   _get_attrs_for_noderF      s     ,,%//!00//	
 $0#H#H #}'C'CC04D,-,0D()0HMLjLj0jD,-,DHjHj,jD(),,Y	$$((HNN:  !:!:;--.ay9X^^K  D$=$=#>ay!IJ  **4+@+@ACS]]4::	 	!CsO,s||nAdggY78j)CLL)C 	! +/D'(+44^r"   c                       e Zd ZdZd Zy)r   ax  This is a legacy class used by django CMS 4.0 and django CMS 4.1.0 only. Its language
        fallback mechanism does not comply with django CMS' core's. Also, it is by far slower
        than django CMS core's. As of django CMS 4.1.1, this class is by default deactivated.

        See https://discord.com/channels/800813886689247262/1204047551570120755 for more information.c                    | j                   j                  }| j                   j                  }t        |      j	                  d      }t        |||      }|sg S t        j                  d      j                  }t        |      }|j                  xs |j                  }g }	i }
d }|r!t        j                  t        j                  g}nt        j                  g}|j                  t            }|j"                  j$                  j'                  |||      j)                  t*        rdndd      j	                  dt*        rdnd      j-                  d	      }g }|D ]  }|j.                  }||vr|j0                  j3                         d
   }|j4                  |v r |r|j6                  t        j                  k(  r`|j8                  }|
j;                  |j<                        }|j<                  r|s|rt?        |      }n|jA                         }tC        |j4                  tE        | j                   |      |jF                  xs |jH                  ||jJ                        }|s|jL                  r|nd }|xr |jJ                   }|r!||j.                  j4                  k(  rd |_        n||_        |j4                  |
|j4                  <   |	jO                  |       |jO                  |j4                          |	S )Nnodedjangocms_versioning)r@   page__inversions__state__inpage__node__path
page__pathversions__stater/   
page__nodeversionsr   )r   rA   titleurlvisible)(r>   siter0   r   select_relatedr   r   get_app_configcms_extensionr   edit_mode_activepreview_mode_activer   DRAFT	PUBLISHEDversionables_by_grouperr	   content_model_base_managerfilterorder_byr
   prefetch_relatedr/   rQ   allr   staterI   get	parent_idr   get_absolute_urlr   rF   
menu_titlerR   in_navigationr*   r8   )r   r   rU   r@   pages_qsvisible_pages_for_userrX   toolbaredit_or_preview
menu_nodesnode_id_to_pagehomepage_contentstatesversionable_itemversioned_page_contentsadded_pagesr?   r/   versionpage_tree_noderf   rS   new_nodecut_homepages                           r   	get_nodeszCMSMenu.get_nodesT   s   ==%%D}}55H(.==fEH%6w$%O")	 //0FGUUM.w7G%66U':U:UOJ O# #//9+>+>?#--.,DDTJ ..<<CC%f D  ,lL]^fM!!*- $ K 7 7,#((55 &//335a877k)o'--S\SfSfBf
 !%+//0H0HI	!++I  #0>C&779C 6ww,T]]LI&11G\5G5G(66 (7;|||$/V8H8V8V4VI1A1F1F1I1I$I *.H&)2H&59WW 1 12!!(+""477+o7,p r"   N)r   r   r    __doc__ry   r!   r"   r   r   r   M   s    	i\	r"   r   )" r   r   ENABLE_MENU_REGISTRATIONcmsr3   cms.apphook_poolr   cms.cms_menusr   OriginalCMSMenur   
cms.modelsr	   r
   ImportErrorcms.toolbar.utilsr   r   cms.utils.pager   django.appsr   
menus.baser   r   menus.menu_poolr   r   rF   r7   popr   register_menur!   r"   r   <module>r      s      .-K' S0 /)&^ &0dc$ cL OO001IG$c !  s   B* *B43B4