o
    h                     @   sz   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	Ze	 Zd
d ZG dd dZdS )    )quote)ImproperlyConfigured)reverse)search_for_hooks)ObjectTypeRegistryc                   @   s2   e Zd ZdZdZdZd	ddZdd Zdd ZdS )
ModelAdminURLFinderz@
    Handles admin edit URL lookups for an individual model
    Nc                 C   s
   || _ d S N)userselfr	    r   ^/var/www/html/ndineBlogger/venv/lib/python3.10/site-packages/wagtail/admin/admin_url_finder.py__init__$   s   
zModelAdminURLFinder.__init__c                 C   s0   | j du rtdt|  t| j t|jfdS )z
        Return the edit URL for the given instance - regardless of whether the user can access it -
        or None if no edit URL is available.
        Nz;%r must define edit_url_name or override construct_edit_url)args)edit_url_namer   typer   r   pkr   instancer   r   r   construct_edit_url'   s   
z&ModelAdminURLFinder.construct_edit_urlc                 C   s,   | j r| jr| j| j d|sdS | |S )z
        Return the edit URL for the given instance if one exists and the user has permission for it,
        or None otherwise.
        changeN)r	   permission_policy user_has_permission_for_instancer   r   r   r   r   get_edit_url3   s   
z ModelAdminURLFinder.get_edit_urlr   )	__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r   r      s    
r   c                   @   "   e Zd ZdZdddZdd ZdS )NullAdminURLFinderz9
    A dummy AdminURLFinder that always returns None
    Nc                 C      d S r   r   r
   r   r   r   r   I      zNullAdminURLFinder.__init__c                 C   r    r   r   r   r   r   r   r   L   r!   zNullAdminURLFinder.get_edit_urlr   r   r   r   r   r   r   r   r   r   r   r   D   s    
r   c                 C   s   t j| |d d S )N)value)finder_classesregister)modelhandlerr   r   r   register_admin_url_finderS   s   r(   c                   @   r   )AdminURLFinderzR
    The 'main' admin URL finder, which searches across all registered models
    Nc                 C   s   t   || _i | _d S r   )r   r	   finders_by_modelr
   r   r   r   r   \   s   
zAdminURLFinder.__init__c                 C   sV   t |}z| j| }W n ty%   t|pt}|| j}|| j|< Y nw ||S r   )r   r*   KeyErrorr$   getr   r	   r   )r   r   r&   finderfinder_classr   r   r   r   a   s   

zAdminURLFinder.get_edit_urlr   r"   r   r   r   r   r)   W   s    
r)   N)django.contrib.admin.utilsr   django.core.exceptionsr   django.urlsr   wagtail.hooksr   wagtail.utils.registryr   r   r   r$   r(   r)   r   r   r   r   <module>   s    (