o
    h                     @   s   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 deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZdS )    )warn)flatatt)reverse)cached_property)	urlencode)hooks)	Component)accepts_kwarg)RemovedInWagtail70Warningc                   @   s   e Zd ZdZdZdZdZdZi Zddddi dfddZ	dd	 Z
ed
d Zedd Zdd Zdd Zdd Zdd Zdd Zdd ZdS )Buttonzwagtailadmin/shared/button.htmlT Ni  c                 C   sl   |r|| _ |r
|| _|| _|r|| _| j | _| j| d| jv r1d| jvr1| jd| jd< || _d S )Ntitle
aria-label)	labelurl	classname	icon_nameattrscopyupdatepoppriority)selfr   r   r   r   r   r    r   \/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/widgets/button.py__init__   s   
zButton.__init__c                 C   s   d| iS )Nbuttonr   r   parent_contextr   r   r   get_context_data.   s   zButton.get_context_datac                 C   
   t | jS N)r   r   r   r   r   r   base_attrs_string1   s   
zButton.base_attrs_stringc                 C   s   | j ddS )Nr   r   )r   getr"   r   r   r   
aria_label9   s   zButton.aria_labelc                 C   s   d| j  dS )Nz	<Button: >)r   r"   r   r   r   __repr__=   s   zButton.__repr__c                 C   s&   t |tstS | j| jf|j|jfk S r!   
isinstancer   NotImplementedr   r   r   otherr   r   r   __lt__@      
zButton.__lt__c                 C   s&   t |tstS | j| jf|j|jfkS r!   r(   r+   r   r   r   __le__E   r.   zButton.__le__c                 C   s&   t |tstS | j| jf|j|jfkS r!   r(   r+   r   r   r   __gt__J   r.   zButton.__gt__c                 C   s&   t |tstS | j| jf|j|jfkS r!   r(   r+   r   r   r   __ge__O   r.   zButton.__ge__c                 C   sJ   t |tstS | j|jko$| j|jko$| j|jko$| j|jko$| j|jkS r!   )r)   r   r*   r   r   r   r   r   r+   r   r   r   __eq__T   s   




zButton.__eq__)__name__
__module____qualname__template_nameshowr   r   r   r   r   r   propertyr#   r%   r'   r-   r/   r0   r1   r2   r   r   r   r   r      s(    


r   c                       s.   e Zd ZdZddddi df fdd	Z  ZS )HeaderButtonzHAn icon-only button to be displayed after the breadcrumbs in the header.r   NFc           	         sn   | d  }| }|r&|dd d  }||d< ||d< ||d< d}t jd|||||d| d S )	Nz w-header-button buttonzdata-controllerr   z
 w-tooltipzdata-w-tooltip-content-valuer   )r   r   r   r   r   r   )stripr   r$   superr   )	r   r   r   r   r   r   	icon_onlykwargs
controller	__class__r   r   r   c   s"   

zHeaderButton.__init__)r3   r4   r5   __doc__r   __classcell__r   r   r?   r   r9   `   s    r9   c                       s   e Zd Zd fdd	Z  ZS )ListingButtonr   Nc                    s,   | d  }t jd|||d| d S )Nz% button button-small button-secondary)r   r   r   r   )r:   r;   r   )r   r   r   r   r=   r?   r   r   r      s   zListingButton.__init__)r   Nr   r3   r4   r5   r   rB   r   r   r?   r   rC      s    rC   c                       sH   e Zd ZdZdZddi dd fdd
Zedd Zedd Z  Z	S )	PageListingButtonN)pagenext_urlr   userc                   sd   || _ || _|| _| }| j r%| jd ur%d|vr%| jd| j  i |d< t j|d|i| d S )Nr   r   r   )rF   rH   rG   r   aria_label_formatget_admin_display_titler;   r   )r   rF   rG   r   rH   argsr=   r?   r   r   r      s   


zPageListingButton.__init__c                 C   sL   | j r"| jd ur$t| j| j jgd}| jr |dtd| ji 7 }|S d S d S )N)rK   ?next)rF   url_namer   idrG   r   )r   r   r   r   r   r      s   zPageListingButton.urlc                 C   s   | j r
| j | jS d S r!   )rF   permissions_for_userrH   r"   r   r   r   
page_perms   s   zPageListingButton.page_perms)
r3   r4   r5   rI   rN   r   r   r   rQ   rB   r   r   r?   r   rE      s    
rE   c                       s4   e Zd ZdZ fddZedd Zdd Z  ZS )BaseDropdownMenuButtonz5wagtailadmin/pages/listing/_button_with_dropdown.htmlc                    s   t  j|dd i| d S )Nr   )r;   r   r   rK   r=   r?   r   r   r      s   zBaseDropdownMenuButton.__init__c                 C   s   t r!   )NotImplementedErrorr"   r   r   r   dropdown_buttons   s   z'BaseDropdownMenuButton.dropdown_buttonsc                 C   s   t | j| j| j| j| jdS )N)buttonsr   r   toggle_classnamer   )sortedrU   r   r%   r   r   r   r   r   r   r      s   z'BaseDropdownMenuButton.get_context_data)	r3   r4   r5   r6   r   r   rU   r   rB   r   r   r?   r   rR      s    
rR   c                       s   e Zd Z fddZ  ZS )ButtonWithDropdownc                    s$   | dg | _t j|i | d S )NrV   )r   rU   r;   r   rS   r?   r   r   r      s   zButtonWithDropdown.__init__rD   r   r   r?   r   rY      s    rY   c                       s<   e Zd Z			d fdd	Zedd Zedd Z  ZS )	ButtonWithDropdownFromHookNc                    s`   || _ || _|d u r|d urtdtdd |j| _ntd|| _|| _t j|fi | d S )NzUButtonWithDropdownFromHook should be passed a `user` argument instead of `page_perms`   )category
stacklevelz5ButtonWithDropdownFromHook requires a `user` argument)		hook_namerF   r   r
   rH   	TypeErrorrG   r;   r   )r   r   r^   rF   rH   rQ   rG   r=   r?   r   r   r      s   

z#ButtonWithDropdownFromHook.__init__c                 C   r    r!   )boolrU   r"   r   r   r   r7      s   
zButtonWithDropdownFromHook.showc              	   C   s   t | j}g }|D ]:}t|dr||| j| j| jd q
td| j d|j	 d|j
 dtd | j| j}||| j|| j q
dd	 |D }|S )
NrH   )rF   rH   rG   `zK` hook functions should accept a `user` argument instead of `page_perms` - .z needs to be updated)r\   c                 S   s   g | ]}|j r|qS r   )r7   ).0br   r   r   
<listcomp>   s    z?ButtonWithDropdownFromHook.dropdown_buttons.<locals>.<listcomp>)r   	get_hooksr^   r	   extendrF   rH   rG   r   r4   r3   r
   rP   )r   button_hooksrV   hookrQ   r   r   r   rU      s&   

z+ButtonWithDropdownFromHook.dropdown_buttons)NNN)	r3   r4   r5   r   r8   r7   r   rU   rB   r   r   r?   r   rZ      s    
rZ   N)warningsr   django.forms.utilsr   django.urlsr   django.utils.functionalr   django.utils.httpr   wagtailr   wagtail.admin.ui.componentsr   wagtail.coreutilsr	   wagtail.utils.deprecationr
   r   r9   rC   rE   rR   rY   rZ   r   r   r   r   <module>   s     R""