a
    Dgx/                     @   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 G dd d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d ZdS )    )warn)render_to_string)gettext_lazy)hooks)accepts_kwarg)RemovedInWagtail70Warningc                   @   s    e Zd ZdZdd Zdd ZdS )BaseItemz#wagtailadmin/userbar/item_base.htmlc                 C   s
   | |dS )Nselfrequest r	   r   r   T/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/userbar.pyget_context_data   s    zBaseItem.get_context_datac                 C   s   t | j| ||dS )N)r   )r   templater   r	   r   r   r   render   s    zBaseItem.renderN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                       s    e Zd ZdZ fddZ  ZS )	AdminItemz$wagtailadmin/userbar/item_admin.htmlc                    s   |j dsdS t |S Nwagtailadmin.access_admin userhas_permsuperr   r	   	__class__r   r   r      s    zAdminItem.render)r   r   r   r   r   __classcell__r   r   r   r   r      s   r   c                       sh  e Zd ZdZdZdgZg ZddgigZg dZi Z	ddd	d
gdgddgZ
dddidgZededdededdededdededdededdededdededdededdededdd	Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z fd6d7Z fd8d9Z  ZS ):AccessibilityItemz3A userbar item that runs the accessibility checker.z,wagtailadmin/userbar/item_accessibility.htmlbodyZfromShadowDOMzwagtail-userbar)	zbutton-namezempty-headingzempty-table-headerzframe-titlezheading-orderzinput-button-namez	link-namezp-as-headingalt-text-qualityr!   Zseriouszimg[alt]zbest-practicezcheck-image-alt-textT)idZimpactselectortagsanyZenabledpatternz%\.(avif|gif|jpg|jpeg|png|svg|webp)$|_)r"   optionszButton text is emptyz+Use meaningful text for screen reader users)Z
error_name	help_textzEmpty heading foundzTable header text is emptyzEmpty frame title foundz.Use a meaningful title for screen reader userszIncorrect heading hierarchyzAvoid skipping levelszInput button text is emptyzLink text is emptyzMisusing paragraphs as headingszUse proper heading tagsz(Image alt text has inappropriate patternzUse meaningful textc                 C   s   | j S )zEReturns a list of CSS selector(s) to test specific parts of the page.)axe_includer	   r   r   r   get_axe_include   s    z!AccessibilityItem.get_axe_includec                 C   s   | j | j S )zUReturns a list of CSS selector(s) to exclude specific parts of the page from testing.)axe_exclude_axe_default_excluder	   r   r   r   get_axe_exclude   s    z!AccessibilityItem.get_axe_excludec                 C   s   | j S )zSReturns a list of axe-core tags or a list of axe-core rule IDs (not a mix of both).)axe_run_onlyr	   r   r   r   get_axe_run_only   s    z"AccessibilityItem.get_axe_run_onlyc                 C   s   | j S )zQReturns a dictionary that maps axe-core rule IDs to a dictionary of rule options.)	axe_rulesr	   r   r   r   get_axe_rules   s    zAccessibilityItem.get_axe_rulesc                 C   s   | j S )z%List of rule objects per axe.run API.)axe_custom_rulesr	   r   r   r   get_axe_custom_rules   s    z&AccessibilityItem.get_axe_custom_rulesc                 C   s   | j S )zAList of check objects per axe.run API, without evaluate function.)axe_custom_checksr	   r   r   r   get_axe_custom_checks   s    z'AccessibilityItem.get_axe_custom_checksc                 C   s   | j S )zPReturns a dictionary that maps axe-core rule IDs to custom translatable strings.)axe_messagesr	   r   r   r   get_axe_messages   s    z"AccessibilityItem.get_axe_messagesc                 C   s   |  || |dS )a  
        Returns the `context object <https://github.com/dequelabs/axe-core/blob/develop/doc/context.md>`_
        to be passed as the
        `context parameter <https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#context-parameter>`_
        for ``axe.run``.
        )includeexclude)r*   r-   r	   r   r   r   get_axe_context   s    z!AccessibilityItem.get_axe_contextc                 C   s,   |  || |d}|d s(|d |S )z
        Returns the options object to be passed as the
        `options parameter <https://github.com/dequelabs/axe-core/blob/develop/doc/API.md#options-parameter>`_
        for ``axe.run``.
        )runOnlyrulesr;   )r/   r1   pop)r
   r   r'   r   r   r   get_axe_options   s    
z!AccessibilityItem.get_axe_optionsc                 C   s   |  || |dS )z>Returns spec for Axe, including custom rules and custom checks)r<   Zchecks)r3   r5   r	   r   r   r   get_axe_spec   s    zAccessibilityItem.get_axe_specc                 C   s&   |  || || || |dS )N)contextr'   messagesspec)r:   r>   r7   r?   r	   r   r   r   get_axe_configuration   s
    z'AccessibilityItem.get_axe_configurationc                    s   i t  |d| |iS )NZaxe_configuration)r   r   rC   r	   r   r   r   r      s
    

z"AccessibilityItem.get_context_datac                    s   |j dsdS t |S r   r   r	   r   r   r   r      s    zAccessibilityItem.render)r   r   r   __doc__r   r)   r+   r,   r.   r0   r2   r4   _r6   r*   r-   r/   r1   r3   r5   r7   r:   r>   r?   rC   r   r   r   r   r   r   r   r   "   sx   'r   c                       s(   e Zd ZdZdd Z fddZ  ZS )AddPageItemz'wagtailadmin/userbar/item_page_add.htmlc                 C   s   || _ | | _d S NpageZ
get_parentparent_pager
   rI   r   r   r   __init__   s    zAddPageItem.__init__c                    sB   | j jsdS |jdsdS | j |j}| s6dS t |S Nr   r   )rI   r"   r   r   permissions_for_userZcan_add_subpager   r   r
   r   Zpermission_checkerr   r   r   r      s    zAddPageItem.renderr   r   r   r   rL   r   r   r   r   r   r   rF      s   rF   c                       s(   e Zd ZdZdd Z fddZ  ZS )ExplorePageItemz+wagtailadmin/userbar/item_page_explore.htmlc                 C   s   || _ | | _d S rG   rH   rK   r   r   r   rL      s    zExplorePageItem.__init__c                    sJ   | j jsdS |jdsdS | j|j}| s>| s>dS t 	|S rM   )
rI   r"   r   r   rJ   rN   can_editZcan_publish_subpager   r   rO   r   r   r   r     s    zExplorePageItem.renderrP   r   r   r   r   rQ      s   rQ   c                       s(   e Zd ZdZdd Z fddZ  ZS )EditPageItemz(wagtailadmin/userbar/item_page_edit.htmlc                 C   s
   || _ d S rG   )rI   rK   r   r   r   rL     s    zEditPageItem.__init__c                    sl   | j jsdS z|jr |jr W dS W n ty4   Y n0 |jdsFdS | j |j}| s`dS t	 
|S rM   )rI   r"   Z
is_previewZ
is_editingAttributeErrorr   r   rN   rR   r   r   rO   r   r   r   r     s    
zEditPageItem.renderrP   r   r   r   r   rS     s   rS   c                 C   sT   t dD ]D}t|dr&|| || q
td|j d|j dtd || | q
d S )NZconstruct_wagtail_userbarrI   z_`construct_wagtail_userbar` hook functions should accept a `page` argument in third position - .z needs to be updated)category)r   Z	get_hooksr   r   r   r   r   )r   itemsrI   fnr   r   r   apply_userbar_hooks5  s    
rY   N)warningsr   Zdjango.template.loaderr   Zdjango.utils.translationr   rE   Zwagtailr   Zwagtail.coreutilsr   Zwagtail.utils.deprecationr   r   r   r   rF   rQ   rS   rY   r   r   r   r   <module>   s    B