a
    Dgn                     @   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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mZ d dlmZ d dlmZ d dl m!Z! G dd deeeZ"G dd deej#Z#dS )    )Any)ContentType)PermissionDenied)Http404)reverse)cached_propertyclassproperty)capfirst)gettext)gettext_lazy)generic)BaseListingView)PermissionCheckedMixin)PageFilterSetPageListingMixin)GenericPageBreadcrumbsMixin)Page)page_permission_policyc                       s   e Zd ZeZh dZdZdZedZ	dZ
dZeZedd Z fd	d
Zdd Zedd Zdd Zdd Zdd Zdd Zeeeef d fddZ  ZS )ContentTypeUseView>   lockpublishZunlockaddZchangeZbulk_deletezwagtailadmin_pages:type_usez#wagtailadmin_pages:type_use_resultszPages usingdoc-empty-inverse2   c                 C   s   dd t jD S )Nc                 S   s   g | ]}|j d kr|qS )type)name).0col r   ^/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/wagtail/admin/views/pages/usage.py
<listcomp>*       z.ContentTypeUseView.columns.<locals>.<listcomp>)r   columns)clsr   r   r   r"   (   s    zContentTypeUseView.columnsc                   sR   zt j||}W n t jy*   tY n0 | | _t| jtsFtt	 
|S N)r   ZobjectsZget_by_natural_keyZDoesNotExistr   Zmodel_class
page_class
issubclassr   superget)selfrequestcontent_type_app_namecontent_type_model_namecontent_type	__class__r   r   r(   ,   s    

zContentTypeUseView.getc                 C   s
   | j  S r$   )r%   Zget_verbose_namer)   r   r   r   get_page_subtitle<   s    z$ContentTypeUseView.get_page_subtitlec                 C   s
   | j jjS r$   )r%   _metaverbose_name_pluralr0   r   r   r   r3   ?   s    z&ContentTypeUseView.verbose_name_pluralc                 C   s4   | j j j| j| jjjdddd}| 	|S )NpkT)Zflat)Zpk__in)
r%   Z_default_managerallfilterpermission_policyZexplorable_instancesr*   userZvalues_listZannotate_queryset)r)   Zquerysetr   r   r   get_base_querysetC   s    z$ContentTypeUseView.get_base_querysetc                 C   s   t | j| jd | jd gdS Nr+   r,   )args)r   index_url_namekwargsr0   r   r   r   get_index_urlK   s    z ContentTypeUseView.get_index_urlc                 C   s   t | j| jd | jd gdS r:   )r   index_results_url_namer=   r0   r   r   r   get_index_results_urlT   s    z(ContentTypeUseView.get_index_results_urlc                 C   s0   | j tdtdd|  t| jjjdg S )Nz%wagtailadmin_reports:page_types_usagezPage types usage)urllabel)Zbreadcrumbs_itemsr   r
   r>   r	   r%   r2   r3   r0   r   r   r   get_breadcrumbs_items]   s    z(ContentTypeUseView.get_breadcrumbs_items)r=   returnc                    s    t  jf i |}| j|d< |S )Nr%   )r'   get_context_datar%   )r)   r=   contextr.   r   r   rE   n   s    
z#ContentTypeUseView.get_context_data)__name__
__module____qualname__r   r7   Zany_permission_requiredr<   r?   _Z
page_titleheader_iconZpaginate_byr   Zfilterset_classr   r"   r(   r1   r   r3   r9   r>   r@   rC   r   dictstrrE   __classcell__r   r   r.   r   r      s&   

		r   c                       s0   e Zd ZeZdZdZdZdZ fddZ	  Z
S )	UsageViewZpage_idr   zwagtailadmin_pages:usagezwagtailadmin_pages:editc                    s0   | j |j stt j|g|R i |S r$   )objectZpermissions_for_userr8   Zcan_editr   r'   dispatch)r)   r*   r;   r=   r.   r   r   rQ   {   s    zUsageView.dispatch)rG   rH   rI   r   modelZpk_url_kwargrK   Zusage_url_nameZedit_url_namerQ   rN   r   r   r.   r   rO   t   s   rO   N)$typingr   Z"django.contrib.contenttypes.modelsr   Zdjango.core.exceptionsr   Zdjango.httpr   Zdjango.urlsr   Zdjango.utils.functionalr   r   Zdjango.utils.textr	   Zdjango.utils.translationr
   r   rJ   Zwagtail.admin.viewsr   Z wagtail.admin.views.generic.baser   Z'wagtail.admin.views.generic.permissionsr   Z!wagtail.admin.views.pages.listingr   r   Zwagtail.admin.views.pages.utilsr   Zwagtail.modelsr   Zwagtail.permissionsr   r   rO   r   r   r   r   <module>   s"   ]