Server : Apache System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64 User : dh_edsupp ( 6597262) PHP Version : 8.2.26 Disable Function : NONE Directory : /lib/python3/dist-packages/django/contrib/admin/__pycache__/ |
Upload File : |
o 3�aLM � @ s� d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm Z d dl mZ d dlm Z d dlmZ d dlmZmZ d d lmZmZ d d lmZ d dlmZ d dlmZ d d lmZmZ dd� dD �Z dd� e �!� D �Z"edd�#dd� e"D �� �Z$G dd� de%�Z&dd� Z'dd� Z(dd� Z)dd� Z*d d!� Z+d"d#� Z,d$d%� Z-G d&d'� d'e �Z.d(d)� Z/dEd*d+�Z0dEd,d-�Z1d.d/� Z2dFd1d2�Z3d3d4� Z4d5d6� Z5dGd7d8�Z6G d9d:� d:e%�Z7d;d<� Z8d=d>� Z9d?d@� Z:dAdB� Z;dCdD� Z<dS )H� N)�defaultdict)�FieldDoesNotExist)�models�router)� LOOKUP_SEP)� Collector)�pretty_name)�NoReverseMatch�reverse)�formats�timezone)�format_html)�_lazy_re_compile)�capfirst)�ngettext�overridec C s i | ]}|d | �qS )z_%02X� )�.0�ir r �</usr/lib/python3/dist-packages/django/contrib/admin/utils.py� <dictcomp> s r s ":/_#?;@&=+$,"[]<>% \c C s i | ] \}}|t |��qS r )�chr)r �k�vr r r r s z_(?:%s)�|c C s g | ]}|d d� �qS )� Nr )r �xr r r � <listcomp> s r c @ s e Zd ZdZdS )�FieldIsAForeignKeyColumnNamez/A field is a foreign key attname, i.e. <FK>_id.N)�__name__� __module__�__qualname__�__doc__r r r r r s r c C s~ |� t�}|D ]5}|dkr| jj}z| �|�}W n ty! Y qw t|d�r<|�� }|d j} t dd� |D ��r< dS qdS )zT Return True if 'distinct()' should be used to query the given lookup path. �pk� get_path_info���c s s � | ]}|j V qd S �N)�m2m)r �pathr r r � <genexpr>/ s � z(lookup_needs_distinct.<locals>.<genexpr>TF) �splitr r# �name� get_fieldr �hasattrr$ �to_opts�any)�opts�lookup_path� lookup_fields� field_name�field� path_infor r r �lookup_needs_distinct s � �r6 c C s2 | � d�r|�d�}|S | � d�r|�� dv}|S )zJ Return a lookup value prepared to be used in queryset filtering. �__in�,�__isnull)� �false�0)�endswithr* �lower)�key�valuer r r �prepare_lookup_value5 s �rA c C s t | t�r | �t�S | S )a* Ensure that primary key values do not confuse the admin URLs by escaping any '/', '_' and ':' and similarly problematic characters. Similar to urllib.parse.quote(), except that the quoting is slightly different so that it doesn't get automatically unquoted by the Web browser. )� isinstance�str� translate� QUOTE_MAP��sr r r �quoteB s rH c C s t �dd� | �S )zUndo the effects of quote().c S s t | d S )Nr )�UNQUOTE_MAP)�mr r r �<lambda>N s zunquote.<locals>.<lambda>)� UNQUOTE_RE�subrF r r r �unquoteL s rN c C s6 g }| D ]}t |ttf�r|�|� q|�|� q|S )zS Return a list which is a single level of flattening of the original list. )rB �list�tuple�extend�append)�fields�flatr4 r r r �flattenQ s rU c C s( g }| D ] \}}|� t|d �� q|S )z?Return a list of field names from an admin fieldsets structure.rS )rQ rU )� fieldsets�field_namesr+ r0 r r r �flatten_fieldsets^ s �rX c s� z| d }W n t y g i t� g f Y S w t�|jj�}t|d�}|�| � t� �� ��fdd��|���}�fdd�|j D �}dd� |j �� D �}||�|fS ) a Find all objects related to ``objs`` that should also be deleted. ``objs`` must be a homogeneous iterable of objects (e.g. a QuerySet). Return a nested list of strings suitable for display in the template with the ``unordered_list`` filter. r )�usingc s� | j }|� jv }| j}dt|j�| f }|rO� j| ��| �s%��|j� ztd� j|j |j f d t| j�f�}W n t yD | Y S w tdt|j�|| �S |S )Nz%s: %sz%s:%s_%s_changez{}: <a href="{}">{}</a>)� __class__� _registry�_metar �verbose_name�has_delete_permission�addr r+ � app_label� model_namerH r# r r )�obj�model� has_adminr0 �no_edit_link� admin_url)� admin_site�perms_needed�requestr r �format_callbackz s2 �����z,get_deleted_objects.<locals>.format_callbackc s g | ]}� |��qS r r )r rb )rj r r r � s z'get_deleted_objects.<locals>.<listcomp>c S s i | ]\}}|j jt|��qS r )r\ �verbose_name_plural�len)r rc �objsr r r r � s z'get_deleted_objects.<locals>.<dictcomp>)� IndexError�setr �db_for_writer\ rc � NestedObjects�collect�nested� protected� model_objs�items) rm ri rg rb rY � collector� to_deletert �model_countr )rg rj rh ri r �get_deleted_objectsh s � rz c sX e Zd Z� fdd�Zdd� Zd� fdd� Z� fdd �Zd d� Zddd �Zdd� Z � Z S )rq c s. t � j|i |�� i | _t� | _tt�| _d S r&