o
    hn                     @   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dedeeef f fddZ  ZS )ContentTypeUseView>   addlockchangeunlockpublish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/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/views/pages/usage.py
<listcomp>*   s    z.ContentTypeUseView.columns.<locals>.<listcomp>)r   columns)clsr!   r!   r"   r$   (   s   zContentTypeUseView.columnsc                   sN   z	t j||}W n
 t jy   tw | | _t| jts!tt	 
|S N)r   objectsget_by_natural_keyDoesNotExistr   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+   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_pluralr7   r!   r!   r"   r:   ?   s   
z&ContentTypeUseView.verbose_name_pluralc                 C   s4   | j j j| j| jjjdddd}| 	|S )NpkT)flat)pk__in)
r+   _default_managerallfilterpermission_policyexplorable_instancesr0   uservalues_listannotate_queryset)r/   querysetr!   r!   r"   get_base_querysetC   s   
z$ContentTypeUseView.get_base_querysetc                 C      t | j| jd | jd gdS Nr1   r2   )args)r   index_url_namekwargsr7   r!   r!   r"   get_index_urlK      z ContentTypeUseView.get_index_urlc                 C   rH   rI   )r   index_results_url_namerL   r7   r!   r!   r"   get_index_results_urlT   rN   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)breadcrumbs_itemsr   r
   rM   r	   r+   r9   r:   r7   r!   r!   r"   get_breadcrumbs_items]   s   z(ContentTypeUseView.get_breadcrumbs_itemsrL   returnc                    s    t  jdi |}| j|d< |S )Nr+   r!   )r-   get_context_datar+   )r/   rL   contextr4   r!   r"   rV   n   s   
z#ContentTypeUseView.get_context_data)__name__
__module____qualname__r   rA   any_permission_requiredrK   rO   _
page_titleheader_iconpaginate_byr   filterset_classr   r$   r.   r8   r   r:   rG   rM   rP   rT   r   dictstrrV   __classcell__r!   r!   r4   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 )	UsageViewpage_idr   zwagtailadmin_pages:usagezwagtailadmin_pages:editc                    s0   | j |j stt j|g|R i |S r&   )objectpermissions_for_userrC   can_editr   r-   dispatch)r/   r0   rJ   rL   r4   r!   r"   ri   {   s   zUsageView.dispatch)rX   rY   rZ   r   modelpk_url_kwargr^   usage_url_nameedit_url_nameri   rc   r!   r!   r4   r"   rd   t   s    rd   N)$typingr   "django.contrib.contenttypes.modelsr   django.core.exceptionsr   django.httpr   django.urlsr   django.utils.functionalr   r   django.utils.textr	   django.utils.translationr
   r   r\   wagtail.admin.viewsr    wagtail.admin.views.generic.baser   'wagtail.admin.views.generic.permissionsr   !wagtail.admin.views.pages.listingr   r   wagtail.admin.views.pages.utilsr   wagtail.modelsr   wagtail.permissionsr   r   rd   r!   r!   r!   r"   <module>   s$    ]