
    &g                         d Z ddlmZ ddlZddlmZ ddlmZ 	 ddlmZ 	 ddlmZ ddlZd Zd	 Zdd
Zd Zd Zd Z G d de      Zy# e	$ r	 ddl
mZ Y 7w xY w# e	$ r	 ddlmZ Y Aw xY w)z
Admin ui common utilities.
    )fnmatchN)settings)admin)reverse)import_modulec                     t         j                  dk  r| j                         S | j                  j	                  d      dk(  S )N)   r	   zx-requested-withXMLHttpRequest)djangoVERSIONis_ajaxheadersgetrequests    J/var/www/html/djangosite/lib/python3.12/site-packages/admin_tools/utils.pyis_xhrr      s7    ~~  ??126FFF    c                 X    d}| }||v r| |}|dz  }||v r|j                  |       |S )z8 Adds value to seen_values set and ensures it is unique    )add)valueseen_valuesid	new_values       r   uniquifyr      sE    	
BI
{
"#R(	
a {
" OOIr   c                    t        t        dd      }t        |t              r| r| j	                  d      }|j
                  }|D ][  }|j                  dd      \  }}t        |      }t        ||      }t        d|j                  z        }|j                  |      sY|c S  nt        j                  S t        d|z        )NADMIN_TOOLS_INDEX_DASHBOARDz6admin_tools.dashboard.dashboards.DefaultIndexDashboardr   .r   z%s:indexz"Admin site matching "%s" not found)getattrr   
isinstancedictr   pathrsplitr   r   name
startswithr   site
ValueError)	contextr   dashboard_clscurr_urlkeymodinst
admin_site	admin_urls	            r   get_admin_siter1   &   s    %@M -&kk),G<<  	"C

3*IC$C d+J
Z__ <=I""9-!!	" zz
9MI
JJr   c                 ,    t        |       j                  S )N)r1   r%   )r)   s    r   get_admin_site_namer3   =   s    '"'''r   c                     g }t        |       }|j                  j                         D ]<  \  }}|j                  |       }d|j	                         vr*|j                  ||f       > |S )z= Returns (model, perm,) for all models user can possibly see r   T)r1   	_registryitemsget_model_permsvaluesappend)r   r6   r/   modelmodel_adminpermss         r   get_avail_modelsr=   A   sl    E0J(2288: &{++G4u||~%eU_%	&
 Lr   c                    t        |       }g }d }t        |      dk(  r|}nr|D ]m  }g }|D ]I  }|\  }	}
 ||	      }||k(  r|j                  |       't        ||      s4||vs9|j                  |       K |sV|j	                  d        ||z  }o |dd }|D ]3  }|D ],  }|\  }	}
t         ||	      |      s	 |j                  |       . 5 |S # t        $ r Y >w xY w)zw
    Returns (model, perm,) for all models that match models/exclude patterns
    and are visible by current user.
    c                 8    | j                   d| j                  S )Nr   )
__module____name__)r:   s    r   	full_namez filter_models.<locals>.full_nameV   s    **ENN;;r   r   c                 4    | d   j                   j                  S )Nr   )_metaverbose_name_plural)xs    r   <lambda>zfilter_models.<locals>.<lambda>r   s    !A$**"@"@ r   )r,   N)r=   lenr9   r   sortremover(   )r   modelsexcluder6   includedrB   patternwildcard_modelsitemr:   r<   	model_strresults                r   filter_modelsrS   N   s+   
 W%EH< 6{a 	,G O 
1#u%e,	'OOD)Y0O3 $**40
1 $$@ %  O+%	,( a[F  	DLE5y'1MM$'		 M " s   <C	CCc                   (    e Zd ZdZd Zd Zd Zd Zy)AppListElementMixinzu
    Mixin class used by both the AppListDashboardModule and the
    AppListMenuItem (to honor the DRY concept).
    c                    | j                   rt        j                  dt               | j                  rt        j                  dt               | j
                  d d  }|j                  | j                   D cg c]  }|dz   	 c}       | j                  d d  }|j                  | j                  D cg c]  }|dz   	 c}       | j                  r|sdg}t        |||      S c c}w c c}w )Nz{`include_list` is deprecated for ModelList and AppList and will be removed in future releases. Please use `models` instead.z|`exclude_list` is deprecated for ModelList and AppList and will be removed in future releases. Please use `exclude` instead.*)	include_listwarningswarnDeprecationWarningexclude_listrK   extendrL   rS   )selfr   rM   elemexcludeds        r   _visible_modelsz#AppListElementMixin._visible_models   s     MM "	 MM "	 ;;q>d.?.?@dc@A<<?d.?.?@dc@AXuHWh99 A As   5C!0C&c                 b    |j                   j                  }t        dt        |      z  |f      S )/
        Returns the admin change url.
        z%s:app_list)args)rD   	app_labelr   r3   r^   r:   r)   re   s       r   _get_admin_app_list_urlz+AppListElementMixin._get_admin_app_list_url   s2     KK))	}':7'CC&L* 	*r   c                     |j                   j                  }t        t        |      d|d|j                  j                         d      S )rc   :__changelistrD   re   r   r3   rA   lowerrf   s       r   _get_admin_change_urlz)AppListElementMixin._get_admin_change_url   sC     KK))	0CG0L09050D0D0FH I 	Ir   c                     |j                   j                  }t        t        |      d|d|j                  j                         d      S )z,
        Returns the admin add url.
        ri   rj   _addrl   rf   s       r   _get_admin_add_urlz&AppListElementMixin._get_admin_add_url   sC     KK))	)<W)E)2).)=)=)?A B 	Br   N)rA   r@   __qualname____doc__ra   rg   rn   rq    r   r   rU   rU      s    
::*IBr   rU   )NN)rs   r   r   django.confr   django.contribr   django.urlsr   ImportErrordjango.core.urlresolvers	importlibr   django.utils.importlibrY   r   r   r1   r3   r=   rS   objectrU   rt   r   r   <module>r}      s         1#5' GK.(
1h;B& ;Bo  101  545s"   A
 A 
AAA)(A)