o
    þÞhd2  ã                   @   sˆ   d dl mZ d dlmZ d dlmZ ddlmZmZ G dd„ deƒZ	G dd	„ d	e	ƒZ
G d
d„ de	ƒZG dd„ de	ƒZG dd„ de	ƒZdS )é    )Úfield_references)ÚNOT_PROVIDED)Úcached_propertyé   )Ú	OperationÚOperationCategoryc                       s^   e Zd Zddd„Zedd„ ƒZedd„ ƒZdd	„ Zd
d„ Zdd„ Z	dd„ Z
‡ fdd„Z‡  ZS )ÚFieldOperationNc                 C   s   || _ || _|| _d S ©N©Ú
model_nameÚnameÚfield)Úselfr   r   r   © r   úf/var/www/html/premium_crap/venv/lib/python3.10/site-packages/django/db/migrations/operations/fields.pyÚ__init__	   s   
zFieldOperation.__init__c                 C   ó
   | j  ¡ S r	   )r   Úlower©r   r   r   r   Úmodel_name_lower   ó   
zFieldOperation.model_name_lowerc                 C   r   r	   )r   r   r   r   r   r   Ú
name_lower   r   zFieldOperation.name_lowerc                 C   s   | j |j kS r	   )r   ©r   Ú	operationr   r   r   Úis_same_model_operation   s   z&FieldOperation.is_same_model_operationc                 C   s   |   |¡o
| j|jkS r	   )r   r   r   r   r   r   Úis_same_field_operation   s   

þz&FieldOperation.is_same_field_operationc                 C   s<   |  ¡ }|| jkrdS | jrtt|| jf| j||fƒƒS dS )NTF)r   r   r   Úboolr   )r   r   Ú	app_labelr   r   r   r   Úreferences_model   s   
ýÿzFieldOperation.references_modelc                 C   sn   |  ¡ }|| jkr!|| jkrdS | jr!t| jdƒr!|| jjv r!dS | jd u r(dS tt|| jf| j||f|ƒƒS )NTÚfrom_fieldsF)r   r   r   r   Úhasattrr   r   r   )r   r   r   r   r   r   r   r   Úreferences_field-   s(   

ÿ
þ
üÿzFieldOperation.references_fieldc                    s"   t ƒ  ||¡p| | j| j|¡ S r	   )ÚsuperÚreducer!   r   r   ©r   r   r   ©Ú	__class__r   r   r#   E   s   
ÿzFieldOperation.reducer	   )Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r!   r#   Ú__classcell__r   r   r%   r   r      s    


r   c                       óh   e Zd ZdZejZd‡ fdd„	Zdd„ Zdd„ Z	d	d
„ Z
dd„ Zdd„ Zedd„ ƒZ‡ fdd„Z‡  ZS )ÚAddFieldzAdd a field to a model.Tc                    ó   || _ tƒ  |||¡ d S r	   ©Úpreserve_defaultr"   r   ©r   r   r   r   r/   r%   r   r   r   P   ó   zAddField.__init__c                 C   ó4   | j | j| jdœ}| jdur| j|d< | jjg |fS ©Nr
   Tr/   ©r   r   r   r/   r&   r'   ©r   Úkwargsr   r   r   ÚdeconstructT   ó   ý

zAddField.deconstructc                 C   ó   |  || j| j| j| j¡ d S r	   )Ú	add_fieldr   r   r   r/   ©r   r   Ústater   r   r   Ústate_forwards^   ó   ûzAddField.state_forwardsc                 C   sr   |j  || j¡}|  |jj|¡r5|j  || j¡}|j | j¡}| j	s'| j
j|_| ||¡ | j	s7t|_d S d S d S r	   )ÚappsÚ	get_modelr   Úallow_migrate_modelÚ
connectionÚaliasÚ_metaÚ	get_fieldr   r/   r   Údefaultr:   r   )r   r   Úschema_editorÚ
from_stateÚto_stateÚto_modelÚ
from_modelr   r   r   r   Údatabase_forwardsg   s   
þ
ö	zAddField.database_forwardsc                 C   ó>   |j  || j¡}|  |jj|¡r| ||j | j	¡¡ d S d S r	   ©
r?   r@   r   rA   rB   rC   Úremove_fieldrD   rE   r   ©r   r   rG   rH   rI   rK   r   r   r   Údatabase_backwardsu   ó   ÿÿzAddField.database_backwardsc                 C   ó   d| j | jf S )NzAdd field %s to %s©r   r   r   r   r   r   Údescribe|   ó   zAddField.describec                 C   rS   )Nz%s_%s©r   r   r   r   r   r   Úmigration_name_fragment   ó   z AddField.migration_name_fragmentc                    sp   t |tƒr1|  |¡r1t |tƒrt| j|j|jd�gS t |tƒr!g S t |t	ƒr1t| j|j
| jd�gS tƒ  ||¡S ©Nr
   )Ú
isinstancer   r   Ú
AlterFieldr,   r   r   r   ÚRemoveFieldÚRenameFieldÚnew_namer"   r#   r$   r%   r   r   r#   ƒ   s(   ÿ
ýÿ

ýÿzAddField.reduce©T)r'   r(   r)   Ú__doc__r   ÚADDITIONÚcategoryr   r7   r=   rL   rQ   rU   ÚpropertyrX   r#   r*   r   r   r%   r   r,   K   s    
	
r,   c                       sZ   e Zd ZdZejZdd„ Zdd„ Zdd„ Z	dd	„ Z
d
d„ Zedd„ ƒZ‡ fdd„Z‡  ZS )r]   zRemove a field from a model.c                 C   s   | j | jdœ}| jjg |fS )N)r   r   )r   r   r&   r'   r5   r   r   r   r7   ¡   s   þzRemoveField.deconstructc                 C   s   |  || j| j¡ d S r	   )rO   r   r   r;   r   r   r   r=   ¨   s   zRemoveField.state_forwardsc                 C   rM   r	   rN   rP   r   r   r   rL   «   rR   zRemoveField.database_forwardsc                 C   sN   |j  || j¡}|  |jj|¡r%|j  || j¡}| ||j | j	¡¡ d S d S r	   )
r?   r@   r   rA   rB   rC   r:   rD   rE   r   ©r   r   rG   rH   rI   rJ   rK   r   r   r   rQ   ²   s
   þzRemoveField.database_backwardsc                 C   rS   )NzRemove field %s from %srT   r   r   r   r   rU   ¸   rV   zRemoveField.describec                 C   rS   )Nzremove_%s_%srW   r   r   r   r   rX   »   rY   z#RemoveField.migration_name_fragmentc                    s6   ddl m} t||ƒr|j| jkr|gS tƒ  ||¡S )Nr   )ÚDeleteModel)Úmodelsrf   r[   r   r   r"   r#   )r   r   r   rf   r%   r   r   r#   ¿   s   ÿzRemoveField.reduce)r'   r(   r)   ra   r   ÚREMOVALrc   r7   r=   rL   rQ   rU   rd   rX   r#   r*   r   r   r%   r   r]   œ   s    
r]   c                       r+   )r\   z`
    Alter a field's database column (e.g. null, max_length) to the provided
    new field.
    Tc                    r-   r	   r.   r0   r%   r   r   r   Ò   r1   zAlterField.__init__c                 C   r2   r3   r4   r5   r   r   r   r7   Ö   r8   zAlterField.deconstructc                 C   r9   r	   )Úalter_fieldr   r   r   r/   r;   r   r   r   r=   à   r>   zAlterField.state_forwardsc           	      C   s‚   |j  || j¡}|  |jj|¡r=|j  || j¡}|j | j¡}|j | j¡}| j	s.| j
j|_| |||¡ | j	s?t|_d S d S d S r	   )r?   r@   r   rA   rB   rC   rD   rE   r   r/   r   rF   ri   r   )	r   r   rG   rH   rI   rJ   rK   Ú
from_fieldÚto_fieldr   r   r   rL   é   s   

øzAlterField.database_forwardsc                 C   s   |   ||||¡ d S r	   )rL   )r   r   rG   rH   rI   r   r   r   rQ   õ   s   zAlterField.database_backwardsc                 C   rS   )NzAlter field %s on %srT   r   r   r   r   rU   ø   rV   zAlterField.describec                 C   rS   )Nzalter_%s_%srW   r   r   r   r   rX   û   rY   z"AlterField.migration_name_fragmentc                    sd   t |ttfƒr|  |¡r|gS t |tƒr+|  |¡r+| jjd u r+|t| j|j| jd�gS t	ƒ  
||¡S rZ   )r[   r\   r]   r   r^   r   Ú	db_columnr   r_   r"   r#   r$   r%   r   r   r#   ÿ   s&   ÿþÿþýþzAlterField.reducer`   )r'   r(   r)   ra   r   Ú
ALTERATIONrc   r   r7   r=   rL   rQ   rU   rd   rX   r#   r*   r   r   r%   r   r\   Ê   s    
	
r\   c                       s†   e Zd ZdZejZ‡ fdd„Zedd„ ƒZ	edd„ ƒZ
dd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zedd„ ƒZdd„ Z‡ fdd„Z‡  ZS )r^   z8Rename a field on the model. Might affect db_column too.c                    s   || _ || _tƒ  ||¡ d S r	   )Úold_namer_   r"   r   )r   r   rn   r_   r%   r   r   r     s   zRenameField.__init__c                 C   r   r	   )rn   r   r   r   r   r   Úold_name_lower  r   zRenameField.old_name_lowerc                 C   r   r	   )r_   r   r   r   r   r   Únew_name_lower"  r   zRenameField.new_name_lowerc                 C   s    | j | j| jdœ}| jjg |fS )N)r   rn   r_   )r   rn   r_   r&   r'   r5   r   r   r   r7   &  s
   ýzRenameField.deconstructc                 C   s   |  || j| j| j¡ d S r	   )Úrename_fieldr   rn   r_   r;   r   r   r   r=   .  s   ÿzRenameField.state_forwardsc                 C   óZ   |j  || j¡}|  |jj|¡r+|j  || j¡}| ||j | j	¡|j | j
¡¡ d S d S r	   )r?   r@   r   rA   rB   rC   ri   rD   rE   rn   r_   re   r   r   r   rL   3  ó   ýþzRenameField.database_forwardsc                 C   rr   r	   )r?   r@   r   rA   rB   rC   ri   rD   rE   r_   rn   re   r   r   r   rQ   =  rs   zRenameField.database_backwardsc                 C   ó   d| j | j| jf S )NzRename field %s on %s to %s)rn   r   r_   r   r   r   r   rU   G  s
   ýzRenameField.describec                 C   rt   )Nzrename_%s_%s_%s)ro   r   rp   r   r   r   r   rX   N  s
   ýz#RenameField.migration_name_fragmentc                 C   s(   |   ||¡o| ¡ | jkp| ¡ | jkS r	   )r   r   ro   rp   )r   r   r   r   r   r   r   r!   V  s   ÿzRenameField.references_fieldc                    sl   t |tƒr|  |¡r| j|jkrt| j| j|jƒgS tt	| ƒ 
||¡p5| | j| j|¡p4| | j| j|¡ S r	   )r[   r^   r   rp   ro   r   rn   r_   r"   r   r#   r!   r$   r%   r   r   r#   [  s   ÿþýÿ	þzRenameField.reduce)r'   r(   r)   ra   r   rm   rc   r   r   ro   rp   r7   r=   rL   rQ   rU   rd   rX   r!   r#   r*   r   r   r%   r   r^     s"    




r^   N)Údjango.db.migrations.utilsr   Údjango.db.modelsr   Údjango.utils.functionalr   Úbaser   r   r   r,   r]   r\   r^   r   r   r   r   Ú<module>   s    CQ.J