o
    uvXjw…  ã                   @   s„  d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 ddl
mZmZmZmZmZ ddlmZmZ d	d
„ 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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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"G d)d*„ d*e ƒZ#G d+d,„ d,e ƒZ$d-S ).é    )Úmodels)Ú	Operation)Ú
ModelState)Únormalize_together)Úcached_propertyé   )ÚAddFieldÚ
AlterFieldÚFieldOperationÚRemoveFieldÚRenameField)Ú
ModelTupleÚfield_references_modelc                 C   s6   t ƒ }|D ]}||v rtd|| f ƒ‚| |¡ qd S )Nz4Found duplicate value %s in CreateModel %s argument.)ÚsetÚ
ValueErrorÚadd)Úarg_nameÚobjsÚ	used_valsÚval© r   úc/var/www/html/myproject/venv/lib/python3.10/site-packages/django/db/migrations/operations/models.pyÚ_check_for_duplicates   s   
ÿûr   c                       s<   e Zd Zdd„ Zedd„ ƒZd
dd„Zd
‡ fdd	„	Z‡  ZS )ÚModelOperationc                 C   s
   || _ d S ©N©Úname)Úselfr   r   r   r   Ú__init__   ó   
zModelOperation.__init__c                 C   ó
   | j  ¡ S r   )r   Úlower©r   r   r   r   Ú
name_lower   ó   
zModelOperation.name_lowerNc                 C   s   |  ¡ | jkS r   ©r!   r#   ©r   r   Ú	app_labelr   r   r   Úreferences_model   s   zModelOperation.references_modelc                    s    t ƒ j||d�p| | j|¡ S ©N©r'   )ÚsuperÚreducer(   r   ©r   Ú	operationr'   ©Ú	__class__r   r   r,   "   s   þzModelOperation.reducer   )	Ú__name__Ú
__module__Ú__qualname__r   r   r#   r(   r,   Ú__classcell__r   r   r/   r   r      s    

r   c                       sj   e Zd ZdZg d¢Zd‡ fdd„	Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
ddd„Zd‡ fdd„	Z‡  ZS )ÚCreateModelzCreate a model's table.)ÚfieldsÚoptionsÚmanagersNc                    sz   || _ |pi | _|ptjf| _|pg | _tƒ  |¡ tddd„ | j D ƒƒ tddd„ | jD ƒƒ tddd„ | jD ƒƒ d S )Nr6   c                 s   ó   � | ]\}}|V  qd S r   r   ©Ú.0r   Ú_r   r   r   Ú	<genexpr>6   ó   € z'CreateModel.__init__.<locals>.<genexpr>Úbasesc                 s   s8   � | ]}t |d ƒr|jjn
t|tƒr| ¡ n|V  qdS )Ú_metaN)Úhasattrr@   Úlabel_lowerÚ
isinstanceÚstrr!   )r;   Úbaser   r   r   r=   7   s   € þ
þr8   c                 s   r9   r   r   r:   r   r   r   r=   <   r>   )	r6   r7   r   ÚModelr?   r8   r+   r   r   )r   r   r6   r7   r?   r8   r/   r   r   r   .   s   


ýzCreateModel.__init__c                 C   sn   | j | jdœ}| jr| j|d< | jr| jtjfkr| j|d< | jr0| jdt ¡ fgkr0| j|d< | jj	g |fS )N)r   r6   r7   r?   Úobjectsr8   )
r   r6   r7   r?   r   rF   r8   ÚManagerr0   r3   ©r   Úkwargsr   r   r   Údeconstruct>   s   þ


ýzCreateModel.deconstructc              
   C   s6   |  t|| jt| jƒt| jƒt| jƒt| j	ƒƒ¡ d S r   )
Ú	add_modelr   r   Úlistr6   Údictr7   Útupler?   r8   ©r   r'   Ústater   r   r   Ústate_forwardsO   s   
úzCreateModel.state_forwardsc                 C   ó2   |j  || j¡}|  |jj|¡r| |¡ d S d S r   ©ÚappsÚ	get_modelr   Úallow_migrate_modelÚ
connectionÚaliasÚcreate_model©r   r'   Úschema_editorÚ
from_stateÚto_stateÚmodelr   r   r   Údatabase_forwardsY   ó   ÿzCreateModel.database_forwardsc                 C   ó2   |j  || j¡}|  |jj|¡r| |¡ d S d S r   ©rU   rV   r   rW   rX   rY   Údelete_modelr[   r   r   r   Údatabase_backwards^   ra   zCreateModel.database_backwardsc                 C   s    d| j  dd¡r
dnd| jf S )NzCreate %smodel %sÚproxyFzproxy Ú )r7   Úgetr   r"   r   r   r   Údescribec   s    zCreateModel.describec                 C   s€   |  ¡ }|| jkrdS t||ƒ}| jD ]}|tjur-t|tjjt	fƒr-t 
|¡|kr- dS q| jD ]\}}t||ƒr= dS q1dS )NTF)r!   r#   r   r?   r   rF   rC   rE   Ú	ModelBaserD   Ú
from_modelr6   r   )r   r   r'   r#   Úmodel_tuplerE   Ú_nameÚfieldr   r   r   r(   f   s   


€
ÿzCreateModel.references_modelc                    sæ  t ˆ tƒr| jˆ jkr| j dd¡sg S t ˆ tƒr.| jˆ jkr.tˆ j| j	| j| j
| jd�gS t ˆ tƒrM| jˆ jkrMt| j| j	i | j¥ˆ j¥| j
| jd�gS t ˆ tƒro| jˆ jkrot| j| j	i | j¥ˆ jˆ ji¥| j
| jd�gS t ˆ tƒr�| jˆ jkr�t| j| j	i | j¥dˆ ji¥| j
| jd�gS t ˆ tƒ�rk| jˆ jk�rkt ˆ tƒr¸t| j| j	ˆ jˆ jfg | j| j
| jd�gS t ˆ tƒrÓt| j‡ fdd„| j	D ƒ| j| j
| jd�gS t ˆ tƒ�r"| j ¡ }dD ]}| |d ¡}|rþttt‡ fdd	„|D ƒƒƒ}|rþ|||< qà| d¡}|ˆ jk�r|d= t| j‡ fd
d„| j	D ƒ|| j
| jd�gS t ˆ tƒ�rk| j ¡ }dD ]}| |¡}|�rD‡ fdd„|D ƒ||< �q/| d¡}|ˆ jk�rVˆ j|d< t| j‡ fdd„| j	D ƒ|| j
| jd�gS t ƒ j!ˆ |d�S )Nrf   F)r6   r7   r?   r8   Úorder_with_respect_toc                    s(   g | ]\}}||ˆ j krˆ jn|f‘qS r   )r   rn   ©r;   ÚnÚv©r.   r   r   Ú
<listcomp>´   ó    ÿÿz&CreateModel.reduce.<locals>.<listcomp>)Úunique_togetherÚindex_togetherc                 3   s&   � | ]}t ‡ fd d„|D ƒƒV  qdS )c                 3   s   � | ]
}|ˆ j kr|V  qd S r   )r#   ©r;   Úfrs   r   r   r=   Ã   s   € z/CreateModel.reduce.<locals>.<genexpr>.<genexpr>N©rO   ©r;   r6   rs   r   r   r=   Â   s   € 
ÿz%CreateModel.reduce.<locals>.<genexpr>c                    s&   g | ]\}}|  ¡ ˆ jkr||f‘qS r   r%   rp   rs   r   r   rt   Í   s
    þc                    s"   h | ]}t ‡ fd d„|D ƒƒ’qS )c                 3   s$   � | ]}|ˆ j krˆ jn|V  qd S r   ©Úold_nameÚnew_namerx   rs   r   r   r=   Ý   s   €" z/CreateModel.reduce.<locals>.<setcomp>.<genexpr>rz   r{   rs   r   r   Ú	<setcomp>Ü   s    ÿÿz%CreateModel.reduce.<locals>.<setcomp>c                    s(   g | ]\}}|ˆ j krˆ jn||f‘qS r   r|   rp   rs   r   r   rt   æ   ru   r*   )"rC   ÚDeleteModelr#   r7   rh   ÚRenameModelÚold_name_lowerr5   r~   r6   r?   r8   ÚAlterModelOptionsr   ÚAlterTogetherOptionOperationÚoption_nameÚoption_valueÚAlterOrderWithRespectToro   r
   Úmodel_name_lowerr   rn   r	   r   ÚcopyÚpopr   ÚfilterÚboolr   r}   r+   r,   )r   r.   r'   r7   r…   Úoptionro   r/   rs   r   r,   x   sÚ   
ÿûÿ	ûÿ	ûÿ	ûÿ	
ûÿ
	
þøÿ

ÿ€

þ÷ÿ



þ€


þøÿzCreateModel.reduce)NNNr   )r1   r2   r3   Ú__doc__Úserialization_expand_argsr   rK   rR   r`   re   ri   r(   r,   r4   r   r   r/   r   r5   )   s    

r5   c                   @   sB   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zddd„Zdd„ Z	d
S )r€   zDrop a model's table.c                 C   s   d| j i}| jjg |fS ©Nr   )r   r0   r3   rI   r   r   r   rK   õ   s   ÿýzDeleteModel.deconstructc                 C   s   |  || j¡ d S r   )Úremove_modelr#   rP   r   r   r   rR   ÿ   ó   zDeleteModel.state_forwardsc                 C   rb   r   rc   r[   r   r   r   r`     ra   zDeleteModel.database_forwardsc                 C   rS   r   rT   r[   r   r   r   re     ra   zDeleteModel.database_backwardsNc                 C   s   dS )NTr   r&   r   r   r   r(     s   zDeleteModel.references_modelc                 C   ó
   d| j  S )NzDelete model %sr   r"   r   r   r   ri     r   zDeleteModel.describer   )
r1   r2   r3   rŽ   rK   rR   r`   re   r(   ri   r   r   r   r   r€   ò   s    

r€   c                       sx   e Zd Zd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d„Zdd„ Zd‡ fdd„	Z‡  ZS )r�   zRename a model.c                    s   || _ || _tƒ  |¡ d S r   )r}   r~   r+   r   )r   r}   r~   r/   r   r   r     s   zRenameModel.__init__c                 C   r    r   )r}   r!   r"   r   r   r   r‚     r$   zRenameModel.old_name_lowerc                 C   r    r   )r~   r!   r"   r   r   r   Únew_name_lower!  r$   zRenameModel.new_name_lowerc                 C   ó   | j | jdœ}| jjg |fS )Nr|   )r}   r~   r0   r3   rI   r   r   r   rK   %  ó   þýzRenameModel.deconstructc                 C   sL  |j || jf  ¡ }| j|_||j || jf< t|| jƒ}d|| jf }g }|j  ¡ D ]b\\}}}	d}
t|	j	ƒD ]K\}\}}d }|j
}|rwt |j||¡}||krX| ¡ }||j
_t|dd ƒ}|rwt |||¡}||krw|d u rs| ¡ }||j
_|r‚||f|	j	|< d}
q7|
rŒ| ||f¡ q*|j|dd� | || j¡ |j|| jdd� d S )Nz%s.%sFÚthroughT©Údelay)r   r‚   Úcloner~   r   r”   r   ÚitemsÚ	enumerater6   Úremote_fieldrk   r_   Úgetattrr—   ÚappendÚreload_modelsr‘   Úreload_model)r   r'   rQ   Úrenamed_modelÚold_model_tupleÚnew_remote_modelÚ	to_reloadÚmodel_app_labelÚ
model_nameÚmodel_stateÚmodel_changedÚindexr   rn   Úchanged_fieldr�   Úremote_model_tupleÚthrough_modelÚthrough_model_tupler   r   r   rR   0  sJ   ÿÿ€€zRenameModel.state_forwardsc                 C   s>  |j  || j¡}|  |jj|¡r›|j  || j¡}| ||jj	|jj	¡ |jj
D ]0}|j|kr6|}|| jf}	n|j}|jjj|jjjf}	|j j|	Ž j |jj¡}
| ||j|
¡ q't|jj|jjƒ}|D ]9\}}|j|jkss|jjjjstqc|jj}|jj}| ||jj	|jj	¡ | ||j |jj¡|j |jj¡¡ qcd S d S r   )rU   rV   r~   rW   rX   rY   r}   Úalter_db_tabler@   Údb_tableÚrelated_objectsÚrelated_modelr”   r'   r§   Ú	get_fieldrn   r   Úalter_fieldÚzipÚlocal_many_to_manyr_   r�   r—   Úauto_created)r   r'   r\   r]   r^   Ú	new_modelÚ	old_modelÚrelated_objectr_   Úrelated_keyÚto_fieldr6   Ú	old_fieldÚ	new_fieldÚold_m2m_modelÚnew_m2m_modelr   r   r   r`   Y  sX   ý
þÿþýýýÕzRenameModel.database_forwardsc                 C   s\   | j | j| _| _ | j| j| _| _|  ||||¡ | j | j| _| _ | j| j| _| _d S r   )r‚   r”   r}   r~   r`   ©r   r'   r\   r]   r^   r   r   r   re   Œ  s
   zRenameModel.database_backwardsNc                 C   s   |  ¡ | jkp|  ¡ | jkS r   )r!   r‚   r”   r&   r   r   r   r(   •  s   þzRenameModel.references_modelc                 C   ó   d| j | jf S )NzRename model %s to %sr|   r"   r   r   r   ri   ›  ó   zRenameModel.describec                    sJ   t |tƒr| j|jkrt| j|jƒgS tt| ƒj||d�p$| 	| j|¡ S r)   )
rC   r�   r”   r‚   r}   r~   r+   r   r,   r(   r-   r/   r   r   r,   ž  s   
þÿ	þzRenameModel.reducer   )r1   r2   r3   rŽ   r   r   r‚   r”   rK   rR   r`   re   r(   ri   r,   r4   r   r   r/   r   r�     s    

)3
	r�   c                       sV   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	d‡ fdd„	Z
‡  ZS )ÚAlterModelTablezRename a model's table.c                    ó   || _ tƒ  |¡ d S r   )Útabler+   r   )r   r   rÆ   r/   r   r   r   ²  ó   zAlterModelTable.__init__c                 C   r•   )N©r   rÆ   )r   rÆ   r0   r3   rI   r   r   r   rK   ¶  r–   zAlterModelTable.deconstructc                 C   s.   | j |j|| jf jd< |j|| jdd� d S )Nr°   Tr˜   )rÆ   r   r#   r7   r¡   rP   r   r   r   rR   Á  s   zAlterModelTable.state_forwardsc           	      C   s˜   |j  || j¡}|  |jj|¡rH|j  || j¡}| ||jj|jj¡ t	|jj
|jj
ƒD ]\}}|jjjjrG| |jj|jjjj|jjjj¡ q,d S d S r   )rU   rV   r   rW   rX   rY   r¯   r@   r°   rµ   r¶   r�   r—   r·   )	r   r'   r\   r]   r^   r¸   r¹   r½   r¾   r   r   r   r`   Å  s$   ý

ý€öz!AlterModelTable.database_forwardsc                 C   ó   |   ||||¡S r   ©r`   rÁ   r   r   r   re   ×  rÃ   z"AlterModelTable.database_backwardsc                 C   s"   d| j | jd ur| jf S df S )NzRename table for %s to %sz	(default)rÈ   r"   r   r   r   ri   Ú  s   þþzAlterModelTable.describeNc                    s0   t |ttfƒr| j|jkr|gS tƒ j||d�S r)   )rC   rÄ   r€   r#   r+   r,   r-   r/   r   r   r,   à  s   zAlterModelTable.reducer   )r1   r2   r3   rŽ   r   rK   rR   r`   re   ri   r,   r4   r   r   r/   r   rÄ   ¯  s    rÄ   c                       s   e Zd Zd‡ fdd„	Z‡  ZS )ÚModelOptionOperationNc                    s2   t || jtfƒr| j|jkr|gS tƒ j||d�S r)   )rC   r0   r€   r#   r+   r,   r-   r/   r   r   r,   ç  s   zModelOptionOperation.reducer   )r1   r2   r3   r,   r4   r   r   r/   r   rË   æ  s    rË   c                       s^   e Zd ZdZ‡ fdd„Zedd„ ƒZdd„ Zdd	„ Zd
d„ Z	dd„ Z
ddd„Zdd„ Z‡  ZS )r„   Nc                    s.   |rt t|ƒƒ}t| | j|ƒ tƒ  |¡ d S r   )r   r   Úsetattrr…   r+   r   )r   r   r†   r/   r   r   r   ð  s   z%AlterTogetherOptionOperation.__init__c                 C   s   t | | jƒS r   )rž   r…   r"   r   r   r   r†   ö  s   z)AlterTogetherOptionOperation.option_valuec                 C   s    d| j | j| ji}| jjg |fS r�   )r   r…   r†   r0   r3   rI   r   r   r   rK   ú  s   þýz(AlterTogetherOptionOperation.deconstructc                 C   s4   |j || jf }| j|j| j< |j|| jdd� d S ©NTr˜   )r   r#   r†   r7   r…   r¡   ©r   r'   rQ   r¨   r   r   r   rR     s   z+AlterTogetherOptionOperation.state_forwardsc                 C   sp   |j  || j¡}|  |jj|¡r6|j  || j¡}t|d| j ƒ}||t|j| jt	ƒ ƒt|j| jt	ƒ ƒƒ d S d S )Nzalter_%s)
rU   rV   r   rW   rX   rY   rž   r…   r@   r   )r   r'   r\   r]   r^   r¸   r¹   Úalter_togetherr   r   r   r`   
  s   ýýz.AlterTogetherOptionOperation.database_forwardsc                 C   rÉ   r   rÊ   rÁ   r   r   r   re     rÃ   z/AlterTogetherOptionOperation.database_backwardsc                    s,   |   ||¡o| j pt‡ fdd„| jD ƒƒS )Nc                 3   s   � | ]}ˆ |v V  qd S r   r   r{   r   r   r   r=     r>   z@AlterTogetherOptionOperation.references_field.<locals>.<genexpr>)r(   r†   Úany©r   r§   r   r'   r   r   r   Úreferences_field  s   üz-AlterTogetherOptionOperation.references_fieldc                 C   s   d| j | jt| jp
dƒf S )Nz"Alter %s for %s (%s constraint(s))rg   )r…   r   Úlenr†   r"   r   r   r   ri   !  s   z%AlterTogetherOptionOperation.describer   )r1   r2   r3   r…   r   r   r†   rK   rR   r`   re   rÒ   ri   r4   r   r   r/   r   r„   í  s    

	r„   c                       ó$   e Zd ZdZdZ‡ fdd„Z‡  ZS )ÚAlterUniqueTogetherz|
    Change the value of unique_together to the target one.
    Input value of unique_together must be a set of tuples.
    rv   c                    ó   t ƒ  ||¡ d S r   ©r+   r   )r   r   rv   r/   r   r   r   ,  r’   zAlterUniqueTogether.__init__©r1   r2   r3   rŽ   r…   r   r4   r   r   r/   r   rÕ   %  ó    rÕ   c                       rÔ   )ÚAlterIndexTogetherzz
    Change the value of index_together to the target one.
    Input value of index_together must be a set of tuples.
    rw   c                    rÖ   r   r×   )r   r   rw   r/   r   r   r   7  r’   zAlterIndexTogether.__init__rØ   r   r   r/   r   rÚ   0  rÙ   rÚ   c                       sV   e Zd ZdZdZ‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	ddd„Z
dd„ Z‡  ZS )r‡   z9Represent a change with the order_with_respect_to option.ro   c                    rÅ   r   )ro   r+   r   )r   r   ro   r/   r   r   r   @  rÇ   z AlterOrderWithRespectTo.__init__c                 C   r•   )N©r   ro   )r   ro   r0   r3   rI   r   r   r   rK   D  r–   z#AlterOrderWithRespectTo.deconstructc                 C   s2   |j || jf }| j|jd< |j|| jdd� d S )Nro   Tr˜   )r   r#   ro   r7   r¡   rÎ   r   r   r   rR   O  ó   z&AlterOrderWithRespectTo.state_forwardsc                 C   sž   |j  || j¡}|  |jj|¡rI|j  || j¡}|jjr,|jjs,| ||j 	d¡¡ d S |jjrK|jjsM|j 	d¡}| 
¡ sAd|_| ||¡ d S d S d S d S )NÚ_orderr   )rU   rV   r   rW   rX   rY   r@   ro   Úremove_fieldr³   Úhas_defaultÚdefaultÚ	add_field)r   r'   r\   r]   r^   Úto_modelrk   rn   r   r   r   r`   T  s   þõz)AlterOrderWithRespectTo.database_forwardsc                 C   s   |   ||||¡ d S r   rÊ   rÁ   r   r   r   re   f  s   z*AlterOrderWithRespectTo.database_backwardsNc                 C   s    |   ||¡o| jd u p|| jkS r   )r(   ro   rÑ   r   r   r   rÒ   i  s   
üz(AlterOrderWithRespectTo.references_fieldc                 C   rÂ   )Nz%Set order_with_respect_to on %s to %srÛ   r"   r   r   r   ri   r  rÃ   z AlterOrderWithRespectTo.describer   )r1   r2   r3   rŽ   r…   r   rK   rR   r`   re   rÒ   ri   r4   r   r   r/   r   r‡   ;  s    
	r‡   c                       sP   e Zd ZdZg d¢Z‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
‡  ZS )rƒ   z±
    Set new model options that don't directly affect the database schema
    (like verbose_name, permissions, ordering). Python code in migrations
    may still need them.
    )Úbase_manager_nameÚdefault_manager_nameÚdefault_related_nameÚget_latest_byÚmanagedÚorderingÚpermissionsÚdefault_permissionsÚselect_on_saveÚverbose_nameÚverbose_name_pluralc                    rÅ   r   )r7   r+   r   )r   r   r7   r/   r   r   r   Œ  rÇ   zAlterModelOptions.__init__c                 C   r•   )N)r   r7   )r   r7   r0   r3   rI   r   r   r   rK   �  r–   zAlterModelOptions.deconstructc                 C   s\   |j || jf }i |j¥| j¥|_| jD ]}|| jvr"|j |d¡ q|j|| jdd� d S )NFTr˜   )r   r#   r7   ÚALTER_OPTION_KEYSrŠ   r¡   )r   r'   rQ   r¨   Úkeyr   r   r   rR   ›  s   

€z AlterModelOptions.state_forwardsc                 C   ó   d S r   r   rÁ   r   r   r   r`   £  ó   z#AlterModelOptions.database_forwardsc                 C   rð   r   r   rÁ   r   r   r   re   ¦  rñ   z$AlterModelOptions.database_backwardsc                 C   r“   )NzChange Meta options on %sr   r"   r   r   r   ri   ©  r   zAlterModelOptions.describe)r1   r2   r3   rŽ   rî   r   rK   rR   r`   re   ri   r4   r   r   r/   r   rƒ   v  s    rƒ   c                       sN   e Zd ZdZdgZ‡ fdd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
‡  ZS )ÚAlterModelManagerszAlter the model's managers.r8   c                    rÅ   r   )r8   r+   r   )r   r   r8   r/   r   r   r   ²  rÇ   zAlterModelManagers.__init__c                 C   s   | j j| j| jgi fS r   )r0   r3   r   r8   r"   r   r   r   rK   ¶  s   
ýzAlterModelManagers.deconstructc                 C   s2   |j || jf }t| jƒ|_|j|| jdd� d S rÍ   )r   r#   rM   r8   r¡   rÎ   r   r   r   rR   ½  rÜ   z!AlterModelManagers.state_forwardsc                 C   rð   r   r   rÁ   r   r   r   r`   Â  rñ   z$AlterModelManagers.database_forwardsc                 C   rð   r   r   rÁ   r   r   r   re   Å  rñ   z%AlterModelManagers.database_backwardsc                 C   r“   )NzChange managers on %sr   r"   r   r   r   ri   È  r   zAlterModelManagers.describe)r1   r2   r3   rŽ   r�   r   rK   rR   r`   re   ri   r4   r   r   r/   r   rò   ­  s    rò   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚIndexOperationÚindexesc                 C   r    r   )r§   r!   r"   r   r   r   rˆ   Ï  r$   zIndexOperation.model_name_lowerN)r1   r2   r3   r…   r   rˆ   r   r   r   r   ró   Ì  s    ró   c                   @   ó@   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dS )ÚAddIndexzAdd an index on a model.c                 C   s"   || _ |jstd| ƒ‚|| _d S )NzSIndexes passed to AddIndex operations require a name argument. %r doesn't have one.)r§   r   r   rª   )r   r§   rª   r   r   r   r   ×  s   ÿÿ
zAddIndex.__init__c                 C   sH   |j || jf }g |j| j ¢| j ¡ ‘|j| j< |j|| jdd� d S rÍ   )r   rˆ   r7   r…   rª   rš   r¡   rÎ   r   r   r   rR   à  s   "zAddIndex.state_forwardsc                 C   ó6   |j  || j¡}|  |jj|¡r| || j¡ d S d S r   )rU   rV   r§   rW   rX   rY   Ú	add_indexrª   r[   r   r   r   r`   å  ó   ÿzAddIndex.database_forwardsc                 C   s6   |j  || j¡}|  |jj|¡r| || j¡ d S d S r   )rU   rV   r§   rW   rX   rY   Úremove_indexrª   r[   r   r   r   re   ê  rù   zAddIndex.database_backwardsc                 C   r•   )N)r§   rª   )r§   rª   r0   r3   rI   r   r   r   rK   ï  r–   zAddIndex.deconstructc                 C   s   d| j jd | j j¡| jf S )Nz*Create index %s on field(s) %s of model %sz, )rª   r   Újoinr6   r§   r"   r   r   r   ri   ú  s
   ýzAddIndex.describeN©
r1   r2   r3   rŽ   r   rR   r`   re   rK   ri   r   r   r   r   rö   Ô  s    	rö   c                   @   rõ   )ÚRemoveIndexzRemove an index from a model.c                 C   ó   || _ || _d S r   ©r§   r   ©r   r§   r   r   r   r   r     ó   
zRemoveIndex.__init__c                    óL   |j |ˆ jf }|jˆ j }‡ fdd„|D ƒ|jˆ j< |j|ˆ jdd� d S )Nc                    ó   g | ]
}|j ˆ j kr|‘qS r   r   )r;   Úidxr"   r   r   rt     ó    z.RemoveIndex.state_forwards.<locals>.<listcomp>Tr˜   ©r   rˆ   r7   r…   r¡   )r   r'   rQ   r¨   rô   r   r"   r   rR   	  ó   zRemoveIndex.state_forwardsc                 C   sP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rU   rV   r§   rW   rX   rY   r   rˆ   Úget_index_by_namer   rú   )r   r'   r\   r]   r^   r_   Úfrom_model_staterª   r   r   r   r`     ó   ýzRemoveIndex.database_forwardsc                 C   óP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rU   rV   r§   rW   rX   rY   r   rˆ   r  r   rø   )r   r'   r\   r]   r^   r_   Úto_model_staterª   r   r   r   re     r
  zRemoveIndex.database_backwardsc                 C   r•   ©Nrÿ   )r§   r   r0   r3   rI   r   r   r   rK     r–   zRemoveIndex.deconstructc                 C   rÂ   )NzRemove index %s from %s©r   r§   r"   r   r   r   ri   (  rÃ   zRemoveIndex.describeNrü   r   r   r   r   rý     s    rý   c                   @   rõ   )ÚAddConstraintÚconstraintsc                 C   rþ   r   ©r§   Ú
constraint)r   r§   r  r   r   r   r   /  r  zAddConstraint.__init__c                 C   sD   |j || jf }g |j| j ¢| j‘|j| j< |j|| jdd� d S rÍ   )r   rˆ   r7   r…   r  r¡   rÎ   r   r   r   rR   3  s   zAddConstraint.state_forwardsc                 C   r÷   r   )rU   rV   r§   rW   rX   rY   Úadd_constraintr  r[   r   r   r   r`   8  rù   zAddConstraint.database_forwardsc                 C   r÷   r   )rU   rV   r§   rW   rX   rY   Úremove_constraintr  r[   r   r   r   re   =  rù   z AddConstraint.database_backwardsc                 C   ó   | j jg | j| jdœfS )Nr  )r0   r1   r§   r  r"   r   r   r   rK   B  ó   þzAddConstraint.deconstructc                 C   s   d| j j| jf S )Nz Create constraint %s on model %s)r  r   r§   r"   r   r   r   ri   H  r’   zAddConstraint.describeN©
r1   r2   r3   r…   r   rR   r`   re   rK   ri   r   r   r   r   r  ,  s    r  c                   @   rõ   )ÚRemoveConstraintr  c                 C   rþ   r   rÿ   r   r   r   r   r   O  r  zRemoveConstraint.__init__c                    r  )Nc                    r  r   r   )r;   Úcr"   r   r   rt   V  r  z3RemoveConstraint.state_forwards.<locals>.<listcomp>Tr˜   r  )r   r'   rQ   r¨   r  r   r"   r   rR   S  r  zRemoveConstraint.state_forwardsc                 C   sP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rU   rV   r§   rW   rX   rY   r   rˆ   Úget_constraint_by_namer   r  )r   r'   r\   r]   r^   r_   r	  r  r   r   r   r`   Y  r
  z"RemoveConstraint.database_forwardsc                 C   r  r   )rU   rV   r§   rW   rX   rY   r   rˆ   r  r   r  )r   r'   r\   r]   r^   r_   r  r  r   r   r   re   `  r
  z#RemoveConstraint.database_backwardsc                 C   r  r  )r0   r1   r§   r   r"   r   r   r   rK   g  r  zRemoveConstraint.deconstructc                 C   rÂ   )Nz"Remove constraint %s from model %sr  r"   r   r   r   ri   m  rÃ   zRemoveConstraint.describeNr  r   r   r   r   r  L  s    r  N)%Ú	django.dbr   Ú$django.db.migrations.operations.baser   Údjango.db.migrations.stater   Údjango.db.models.optionsr   Údjango.utils.functionalr   r6   r   r	   r
   r   r   Úutilsr   r   r   r   r5   r€   r�   rÄ   rË   r„   rÕ   rÚ   r‡   rƒ   rò   ró   rö   rý   r  r  r   r   r   r   Ú<module>   s6    
 J# 78;7.* 