
    h(                     >   d dl Z d dlmZ d dlmZmZmZ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mZ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 m!Z! d dlm"Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* dgZ+dZ,dZ-dZ.ej^                   G d de             Z0y)    N)copy)ADMIN_MENU_IDENTIFIERADMINISTRATION_BREAKLANGUAGE_MENU_IDENTIFIERSHORTCUTS_BREAK)Break
ButtonList)get_object_edit_url)
CMSToolbar)toolbar_pool)get_default_languageget_language_dictget_language_tuple)get_model_permission_codename)add_url_parametersadmin_reverse)NoReverseMatch)	force_str)	urlencode)get_language_from_requestgettext)gettext_lazy   )DELETE_ALIAS_URL_NAMELIST_ALIAS_URL_NAMEUSAGE_ALIAS_URL_NAME)AliasAliasContentAliasToolbaraliasz	alias-addzalias-languagec                   f    e Zd Z ed      Z ed      Zd Zd Zd Zd Z	e
d        Zd Zd	 Zd
 Zy)r   r   Aliasesc                     | j                          t        | j                  j                  t              r1| j                          | j                          | j                          y y N)add_aliases_link_to_admin_menu
isinstancetoolbarobjr   add_alias_menuoverride_language_switcherchange_language_menuselfs    L/home/dcms/DCMS/lib/python3.12/site-packages/djangocms_alias/cms_toolbars.pypopulatezAliasToolbar.populate6   sK    ++-dll&&5!++-%%' 6    c                     | j                   s$t        | j                  j                  t              r| j                          y y r$   )is_current_appr&   r'   r(   r   enable_create_wizard_buttonr,   s    r.   post_template_populatez#AliasToolbar.post_template_populate>   s0    *T\\-=-=|"L,,. #Mr0   c                    | j                   j                  j                  d      sy | j                  j	                  t
              }t        t              }| j                  j                         }t        |d      r|j                  nt        | j                         }|
t               }|dt        d|i       z  }|j                  t        d      || j!                  || j"                               y )Nzdjangocms_alias.change_categorylanguage?r"   )urlposition)requestuserhas_permr'   get_or_create_menur   r   r   
get_objecthasattrr6   r   r   r   add_sideframe_item_get_insert_positionplural_name)r-   
admin_menur8   r(   r6   s        r.   r%   z+AliasToolbar.add_aliases_link_to_admin_menuB   s    ||  ))*KL\\445JK
/0ll%%'#*3
#;3<<AZ[_[g[gAh+-H9j(34566%%iL--j$:J:JK 	& 	
r0   c                    | j                   j                  t        | j                  d      }| j                  j
                  j                  t        t        d            }|j                  t        d      t        d| j                   j                  j                  g      |        |j                  t        d      t        t        | j                   j                  j                  g      	       |j                  t        d
      t        t        | j                   j                  j                  f      t        t               |        y )Nr   r9   changezChange alias settingsdjangocms_alias_alias_changeargsr8   disabledz
View usager8   zDelete alias)r8   on_closerL   )r'   r=   ALIAS_MENU_IDENTIFIERnamer:   r;   r<   r   r   add_modal_itemrA   r   r(   alias_idr   r   r   )r-   
alias_menu
can_changes      r.   r)   zAliasToolbar.add_alias_menuT   s#   \\44!II 5 

 \\&&//)%:

 	!!%&.ll&&//0 $^ 	" 	
 	!!lO$ll&&//0 	" 	
 	!!n%ll&&//1 ## $^ 	" 
	
r0   c                 t   |j                  t        t              }|sW|j                  t        t              }|j	                  t        |j
                         |j                  t        t              }|j                  t        t              }|j                         |j
                  dz   |j
                   }t        |      D ]W  \  }}	 t        |j                               t        |j                  j                               k  r||j
                  z   dz   c S Y |j
                  S # t        $ r Y qw xY w)z
        Ensures that there is a SHORTCUTS_BREAK and returns a position for an
        alphabetical position against all items between SHORTCUTS_BREAK, and
        the ADMINISTRATION_BREAK.
        )
identifierrF   r   )
find_firstr   r   r   	add_breakindex	get_items	enumerater   lowerrP   AttributeError)clsrD   	item_namestartenditemsidxitems           r.   rB   z AliasToolbar.get_insert_position{   s    %%e%H'':N'OC  399 E))%O)LE##E6J#K$$&u{{QC"5) 	ICY__./)DIIOO<M2NN,q00 O	 yy " s   AD++	D76D7c                    | j                   j                  t              D cg c]  }|j                   }}t	        t
        j                  j                  |D cg c]  }|j                   c}            }|D cg c]  }|j                  t        d      k(  s| c}d   }ddlm} t        t	         || j                  j                  d                   }| |_        y c c}w c c}w c c}w )N)	item_typeCreater   )entry_choices)page)r'   
find_itemsr	   rd   list	itertoolschainfrom_iterablebuttonsrP   r   cms.wizards.wizard_poolrh   boolr:   r;   rL   )	r-   resultbutton_listsrd   ro   buttoncreate_wizard_buttonrh   r3   s	            r.   r3   z(AliasToolbar.enable_create_wizard_button   s    26,,2I2IT^2I2_```OO))L*QD4<<*QR
 6=a6wW_O`@`abcd9 '+t||00t<='
# -H(G%% a +R
  bs   C#C(<C-C-c                    | j                   j                  t        t        d            }|sy t	        |j
                        D ]  }|j                  |        t        | j                  j                        D ]g  \  }}| j                   j                  j                  j                  |d      }|s:t        ||      }|j                  ||| j                  |k(         i y )NLanguage)rd   Tr6   show_draft_contentr6   )r8   active)r'   get_menur   rA   r   rb   remove_itemr   current_sitepkr(   r    get_contentr
   add_link_itemcurrent_lang)r-   language_menu_itemcoderP   alias_contentr8   s          r.   r*   z'AliasToolbar.override_language_switcher   s    --.F*V ---. 	2E%%5%1	2 -T->->-A-AB 		]JD$ !LL,,22>>#' ? M )-$G++Dc$BSBSW[B[+\		]r0   c           
         | j                   j                  rXt        | j                   j                  t              r4| j
                  j                  j                  t        t        d            }nd}|r| j                   j                  }| j                   j                  t              }|sy t        | j                  j                        }|j                  }|j                   j#                         D cg c]  }||v s||j%                  ||      f }}|j'                         D cg c]	  }||vs| }}|j'                         D 	cg c]   \  }}	|| j(                  k7  r||	f|v r|r||	f" }
}}	|s|s|
r|j+                  t,               |rb|j/                  t         dt1        d            }t3        d      }|D ]0  \  }}	t5        |||j6                        }|j9                  |	|       2 |r|j/                  t         dt1        d	            }t;        |      d
k(  }|D ][  \  }}	|j                   j=                  |d      }t3        d|j                  f      }t5        ||      }|j9                  |	||       ] |
r|j/                  t         dt1        d            }t1        d      }t1        d      }	 t3        d      }|
D ]u  \  }}	|j                   jA                  |d      }|jC                  ||	z  |||j                  | j(                  |j                  d||	z  | j                   jD                         w y y y c c}w c c}w c c}	}w # t>        $ r t3        d      }Y w xY w)NrG   Fz-addzAdd Translation djangocms_alias_aliascontent_add)r6   r    rM   z-delzDelete Translationr   Trx   #djangocms_alias_aliascontent_deleterI   rz   rK   z-copyzCopy all pluginszfrom %sz2Are you sure you want to copy all plugins from %s?cms_placeholder_copy_plugins"djangocms_alias_alias_copy_plugins)source_languagesource_placeholder_idtarget_languagetarget_placeholder_id)actiondataquestion
on_success)#r'   edit_mode_activer&   r(   r   r:   r;   r<   r   r   r|   r   r   r~   r   placeholderr    get_languagesgetrb   r   rX   ALIAS_LANGUAGE_BREAKr=   rA   r   r   rR   rQ   lenr   r   get_placeholderadd_ajax_itemREFRESH_PAGE)r-   rT   r   r   	languagescurrent_placeholderr   removeaddrP   r   add_plugins_menuadd_urlr8   remove_plugins_menurL   translation_delete_urlcopy_plugins_menutitler   copy_urlsource_placeholders                         r.   r+   z!AliasToolbar.change_language_menu   s   <<((Z8H8H,-W**33-eX>J J LL,,M LL112JKM )$*;*;*>*>?I"/";"; ?L>Q>Q>_>_>a6:eimvevy}}T401F  %.OO$5LDV9K4LCL #,//"3D$4,,,$1GL_ tD  f''(<=#0#C#C/05'($  ((JK"% CJD$,Wt=KaKabC$33Dc3BC &3&F&F/05*+'# v;!+"( 
YJD$$1$7$7$C$C!%+/ %D %M .;=+..0.* --CdSC'66tx6X
Y $1$D$D/06:L8M%! )QRS,-KLH #' JD$)6)<)<)L)L!%+/ *M *& &33'/35G5J5J/3/@/@5H5K5K	 "*D#'<<#<#< 4  g  M^ & S,-QRHSs0   3	M=M'	M1M
%M>M M-,M-N)__name__
__module____qualname__rA   rP   rC   r/   r4   r%   r)   classmethodrB   r3   r*   r+    r0   r.   r   r   1   sO    W:DI,K(/
$%
N  0H*](Wr0   )1rl   r   cms.cms_toolbarsr   r   r   r   cms.toolbar.itemsr   r	   cms.toolbar.utilsr
   cms.toolbar_baser   cms.toolbar_poolr   cms.utils.i18nr   r   r   cms.utils.permissionsr   cms.utils.urlutilsr   r   django.urlsr   django.utils.encodingr   django.utils.httpr   django.utils.translationr   r   r   rA   	constantsr   r   r   modelsr   r   __all__rO   ALIAS_MENU_CREATE_IDENTIFIERr   registerr   r   r0   r.   <module>r      s       0 1 ' ) 
 @ @ & + ' 
 ( 
   * '  b: b br0   