o
    :ZœcÒ  ã                   @   sB   d dl mZ d dlmZ dd„ ZG dd„ deddƒƒZd	d
„ ZdS )é    )Ú
namedtuple)ÚRECURSIVE_RELATIONSHIP_CONSTANTc                 C   sz   | j D ]7\}}| j ||f jD ]*\}}|jr9d||f |j ¡ kr9t|dƒr9|jd d u r0|js5||jv r9  dS qqdS )Nz%s.%sÚ	to_fieldsr   TF)ÚmodelsÚfieldsÚrelated_modelÚlowerÚhasattrr   Úprimary_key)ÚstateÚmodel_name_lowerÚfieldÚ
field_nameÚstate_app_labelÚstate_modelÚ_Úf© r   ú[/var/www/chikooza/env/lib/python3.10/site-packages/django/db/migrations/operations/utils.pyÚis_referenced_by_foreign_key   s   ÿþ€ûr   c                       s*   e Zd Zeddd„ƒZ‡ fdd„Z‡  ZS )Ú
ModelTupleNc                 C   sX   t |tƒr#|tkr| ||ƒS d|v r| | ¡  dd¡Ž S | || ¡ ƒS | |jj|jjƒS )zø
        Take a model class or an 'app_label.ModelName' string and return a
        ModelTuple('app_label', 'modelname'). The optional app_label and
        model_name arguments are the defaults if "self" or "ModelName" are
        passed.
        Ú.é   )Ú
isinstanceÚstrr   r   ÚsplitÚ_metaÚ	app_labelÚ
model_name)ÚclsÚmodelr   r   r   r   r   Ú
from_model   s   

zModelTuple.from_modelc                    sB   t |tƒr| j|jko| jd u p|jd u p| j|jkS tƒ  |¡S )N)r   r   r   r   ÚsuperÚ__eq__)ÚselfÚother©Ú	__class__r   r   r#   "   s
   
ÿzModelTuple.__eq__)NN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr!   r#   Ú__classcell__r   r   r&   r   r      s    r   ÚModelTupleBase)r   r   c                 C   sD   | j }|r t |j¡|krdS t|ddƒ}|r t |¡|kr dS dS )z3Return whether or not field references model_tuple.TÚthroughNF)Úremote_fieldr   r!   r    Úgetattr)r   Úmodel_tupler/   r.   r   r   r   Úfield_references_model,   s   r2   N)Úcollectionsr   Údjango.db.models.fields.relatedr   r   r   r2   r   r   r   r   Ú<module>   s
    