a
    ÛEb¬‚  ã                   @   s„  d dl mZ d dlmZ d dlmZ d dlmZ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
„ 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)Úfield_referencesÚresolve_relation)Únormalize_together)Úcached_propertyé   )ÚAddFieldÚ
AlterFieldÚFieldOperationÚRemoveFieldÚRenameFieldc                 C   s6   t ƒ }|D ]&}||v r&td|| f ƒ‚| |¡ q
d S )Nz4Found duplicate value %s in CreateModel %s argument.)ÚsetÚ
ValueErrorÚadd)Zarg_nameÚobjsZ	used_valsÚval© r   úf/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/django/db/migrations/operations/models.pyÚ_check_for_duplicates   s    
ÿr   c                       s8   e Zd Zdd„ Zedd„ ƒZdd„ Z‡ fdd„Z‡  ZS )	ÚModelOperationc                 C   s
   || _ d S ©N©Úname)Úselfr   r   r   r   Ú__init__   s    zModelOperation.__init__c                 C   s
   | j  ¡ S r   )r   Úlower©r   r   r   r   Ú
name_lower   s    zModelOperation.name_lowerc                 C   s   |  ¡ | jkS r   ©r   r   ©r   r   Ú	app_labelr   r   r   Úreferences_model   s    zModelOperation.references_modelc                    s   t ƒ  ||¡p| | j|¡ S r   )ÚsuperÚreducer#   r   ©r   Ú	operationr"   ©Ú	__class__r   r   r%       s    ÿzModelOperation.reduce)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r#   r%   Ú__classcell__r   r   r(   r   r      s
   
r   c                       sr   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
edd„ ƒZdd„ Z‡ 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 )Nr/   c                 s   s   | ]\}}|V  qd S r   r   ©Ú.0r   Ú_r   r   r   Ú	<genexpr>3   ó    z'CreateModel.__init__.<locals>.<genexpr>Úbasesc                 s   s6   | ].}t |d ƒr|jjnt|tƒr*| ¡ n|V  qdS )Ú_metaN)Úhasattrr8   Zlabel_lowerÚ
isinstanceÚstrr   )r3   Úbaser   r   r   r5   6   s   üÿ
ÿ
r1   c                 s   s   | ]\}}|V  qd S r   r   r2   r   r   r   r5   ?   r6   )	r/   r0   r   ÚModelr7   r1   r$   r   r   )r   r   r/   r0   r7   r1   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r`| jdt ¡ fgkr`| j|d< | jj	g |fS )N)r   r/   r0   r7   Úobjectsr1   )
r   r/   r0   r7   r   r=   r1   ÚManagerr)   r,   ©r   Úkwargsr   r   r   ÚdeconstructA   s    þ


zCreateModel.deconstructc              
   C   s6   |  t|| jt| jƒt| jƒt| jƒt| j	ƒƒ¡ d S r   )
Z	add_modelr   r   Úlistr/   Údictr0   Útupler7   r1   ©r   r"   Ústater   r   r   Ústate_forwardsN   s    úÿzCreateModel.state_forwardsc                 C   s.   |j  || j¡}|  |jj|¡r*| |¡ d S r   ©ÚappsÚ	get_modelr   Úallow_migrate_modelÚ
connectionÚaliasZcreate_model©r   r"   Úschema_editorÚ
from_stateÚto_stateÚmodelr   r   r   Údatabase_forwardsZ   s    zCreateModel.database_forwardsc                 C   s.   |j  || j¡}|  |jj|¡r*| |¡ d S r   ©rJ   rK   r   rL   rM   rN   Zdelete_modelrO   r   r   r   Údatabase_backwards_   s    zCreateModel.database_backwardsc                 C   s    d| j  dd¡rdnd| jf S )NzCreate %smodel %sÚproxyFzproxy Ú )r0   Úgetr   r   r   r   r   Údescribed   s    þzCreateModel.describec                 C   s   | j S r   ©r   r   r   r   r   Úmigration_name_fragmentj   s    z#CreateModel.migration_name_fragmentc                 C   s†   |  ¡ }|| jkrdS ||f}| jD ]4}|tjur$t|tjjtfƒr$t	||ƒ|kr$ dS q$| j
D ] \}}t|| jf||ƒr` dS q`dS )NTF)r   r   r7   r   r=   r:   r<   Z	ModelBaser;   r   r/   r   )r   r   r"   r   Zreference_model_tupler<   Ú_nameÚfieldr   r   r   r#   n   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ƒrÀ| jˆ jkrÀi | j¥ˆ j¥}ˆ jD ]}|ˆ jvrˆ| |d ¡ qˆt| j| j	|| j
| jd�gS t ˆ tƒ�r| jˆ jk�rt| j| j	i | j¥ˆ jˆ ji¥| j
| jd�gS t ˆ tƒ�rN| jˆ jk�rNt| j| j	i | j¥dˆ ji¥| j
| jd�gS t ˆ tƒ�r| jˆ jk�rt ˆ 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 ]B}| |d ¡}|�ròttt‡ fdd	„|D ƒƒƒ}|�rò|||< �qò| d¡}|ˆ jk�rR|d= t| j‡ fd
d„| j	D ƒ|| j
| jd�gS t ˆ tƒ�r| j ¡ }dD ],}| |¡}|�r–‡ fdd„|D ƒ||< �q–| d¡}|ˆ j k�räˆ j|d< t| j‡ fdd„| j	D ƒ|| j
| jd�gS t!ƒ  "ˆ |¡S )NrW   F)r/   r0   r7   r1   Úorder_with_respect_toc                    s(   g | ] \}}||ˆ j krˆ jn|f‘qS r   )r   r^   ©r3   ÚnÚv©r'   r   r   Ú
<listcomp>Ü   s   ÿ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[   ©r3   Úfrc   r   r   r5   î   s   z/CreateModel.reduce.<locals>.<genexpr>.<genexpr>N©rE   ©r3   r/   rc   r   r   r5   í   s   ýÿz%CreateModel.reduce.<locals>.<genexpr>c                    s&   g | ]\}}|  ¡ ˆ jkr||f‘qS r   r    r`   rc   r   r   rd   ý   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_namerg   rc   r   r   r5     s   ÿz/CreateModel.reduce.<locals>.<setcomp>.<genexpr>ri   rj   rc   r   r   Ú	<setcomp>  s   üþz%CreateModel.reduce.<locals>.<setcomp>c                    s(   g | ] \}}|ˆ j krˆ jn||f‘qS r   rk   r`   rc   r   r   rd     s   ÿ)#r:   ÚDeleteModelr   r0   rY   ÚRenameModelÚold_name_lowerr.   rm   r/   r7   r1   ÚAlterModelOptionsÚALTER_OPTION_KEYSÚpopr   ÚAlterTogetherOptionOperationÚoption_nameÚoption_valueÚAlterOrderWithRespectTor_   r   Úmodel_name_lowerr
   r^   r   r   Úcopyr   ÚfilterÚboolr   rl   r$   r%   )r   r'   r"   r0   Úkeyrv   Úoptionr_   r(   rc   r   r%   …   s   ÿ
þýÿ
þûÿ
ÿ
þ

ûÿ
ÿ
þÿ
þøÿÿ
þÿþøÿÿ
þûÿ	
þøÿ

üþÿ

þ÷ÿ


û


þøÿzCreateModel.reduce)NNN)r*   r+   r,   Ú__doc__Úserialization_expand_argsr   rB   rH   rT   rV   rZ   Úpropertyr\   r#   r%   r-   r   r   r(   r   r.   &   s   
r.   c                   @   sL   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
dd„ ƒZdS )ro   zDrop a model's table.c                 C   s   d| j i}| jjg |fS ©Nr   )r   r)   r,   r@   r   r   r   rB   (  s    ÿzDeleteModel.deconstructc                 C   s   |  || j¡ d S r   )Zremove_modelr   rF   r   r   r   rH   .  s    zDeleteModel.state_forwardsc                 C   s.   |j  || j¡}|  |jj|¡r*| |¡ d S r   rU   rO   r   r   r   rT   1  s    zDeleteModel.database_forwardsc                 C   s.   |j  || j¡}|  |jj|¡r*| |¡ d S r   rI   rO   r   r   r   rV   6  s    zDeleteModel.database_backwardsc                 C   s   dS )NTr   r!   r   r   r   r#   ;  s    zDeleteModel.references_modelc                 C   s
   d| j  S )NzDelete model %sr   r   r   r   r   rZ   @  s    zDeleteModel.describec                 C   s
   d| j  S )Nz	delete_%sr[   r   r   r   r   r\   C  s    z#DeleteModel.migration_name_fragmentN)r*   r+   r,   r   rB   rH   rT   rV   r#   rZ   r�   r\   r   r   r   r   ro   %  s   ro   c                       s€   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„ Zdd„ Zedd„ ƒZ‡ fdd„Z‡  ZS )rp   zRename a model.c                    s   || _ || _tƒ  |¡ d S r   )rl   rm   r$   r   )r   rl   rm   r(   r   r   r   K  s    zRenameModel.__init__c                 C   s
   | j  ¡ S r   )rl   r   r   r   r   r   rq   P  s    zRenameModel.old_name_lowerc                 C   s
   | j  ¡ S r   )rm   r   r   r   r   r   Únew_name_lowerT  s    zRenameModel.new_name_lowerc                 C   s   | j | jdœ}| jjg |fS )Nrk   )rl   rm   r)   r,   r@   r   r   r   rB   X  s    þzRenameModel.deconstructc                 C   s   |  || j| j¡ d S r   )Zrename_modelrl   rm   rF   r   r   r   rH   _  s    zRenameModel.state_forwardsc                 C   s<  |j  || j¡}|  |jj|¡�r8|j  || j¡}| ||jj	|jj	¡ |jj
D ]`}|j|krn|}|| jf}	n|j}|jjj|jjjf}	|j j|	Ž j |jj¡}
| ||j|
¡ qPt|jj|jjƒ}|D ]n\}}|j|jksÈ|jjjjsêqÈ|jj}|jj}| ||jj	|jj	¡ | ||j |jj¡|j |jj¡¡ qÈd S r   )rJ   rK   rm   rL   rM   rN   rl   Úalter_db_tabler8   Údb_tableZrelated_objectsZrelated_modelrƒ   r"   Ú
model_nameÚ	get_fieldr^   r   Zalter_fieldÚzipÚlocal_many_to_manyrS   Úremote_fieldÚthroughÚauto_created)r   r"   rP   rQ   rR   Ú	new_modelÚ	old_modelZrelated_objectrS   Zrelated_keyZto_fieldr/   Ú	old_fieldÚ	new_fieldZold_m2m_modelZnew_m2m_modelr   r   r   rT   b  sZ    ý
þÿýÿ
ÿ
þýýzRenameModel.database_forwardsc                 C   s\   | j | j | _| _ | j| j | _| _|  ||||¡ | j | j | _| _ | j| j | _| _d S r   )rq   rƒ   rl   rm   rT   ©r   r"   rP   rQ   rR   r   r   r   rV   š  s    þ
þ
zRenameModel.database_backwardsc                 C   s   |  ¡ | jkp|  ¡ | jkS r   )r   rq   rƒ   r!   r   r   r   r#   ©  s    ÿzRenameModel.references_modelc                 C   s   d| j | jf S )NzRename model %s to %srk   r   r   r   r   rZ   ®  s    zRenameModel.describec                 C   s   d| j | jf S )Nzrename_%s_%s)rq   rƒ   r   r   r   r   r\   ±  s    z#RenameModel.migration_name_fragmentc                    sH   t |tƒr&| j|jkr&t| j|jƒgS tt| ƒ ||¡pF| 	| j|¡ S r   )
r:   rp   rƒ   rq   rl   rm   r$   r   r%   r#   r&   r(   r   r   r%   µ  s    ÿ
þþÿ
ÿþzRenameModel.reduce)r*   r+   r,   r   r   r   rq   rƒ   rB   rH   rT   rV   r#   rZ   r�   r\   r%   r-   r   r   r(   r   rp   H  s   

8
rp   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚModelOptionOperationc                    s0   t || jtfƒr"| j|jkr"|gS tƒ  ||¡S r   )r:   r)   ro   r   r$   r%   r&   r(   r   r   r%   È  s    ÿ
þzModelOptionOperation.reduce)r*   r+   r,   r%   r-   r   r   r(   r   r’   Ç  s   r’   c                       sT   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	e
dd„ ƒZ‡  ZS )ÚAlterModelTablezRename a model's table.c                    s   || _ tƒ  |¡ d S r   )Útabler$   r   )r   r   r”   r(   r   r   r   Ô  s    zAlterModelTable.__init__c                 C   s   | j | jdœ}| jjg |fS )N©r   r”   )r   r”   r)   r,   r@   r   r   r   rB   Ø  s    þzAlterModelTable.deconstructc                 C   s   |  || jd| ji¡ d S )Nr…   )Úalter_model_optionsr   r”   rF   r   r   r   rH   ß  s    zAlterModelTable.state_forwardsc           	      C   s”   |j  || j¡}|  |jj|¡r�|j  || j¡}| ||jj|jj¡ t	|jj
|jj
ƒD ]6\}}|jjjjrX| |jj|jjjj|jjjj¡ qXd S r   )rJ   rK   r   rL   rM   rN   r„   r8   r…   rˆ   r‰   rŠ   r‹   rŒ   )	r   r"   rP   rQ   rR   r�   rŽ   r�   r�   r   r   r   rT   â  s"    ýÿ

ýz!AlterModelTable.database_forwardsc                 C   s   |   ||||¡S r   ©rT   r‘   r   r   r   rV   ö  s    z"AlterModelTable.database_backwardsc                 C   s   d| j | jd ur| jndf S )NzRename table for %s to %sz	(default)r•   r   r   r   r   rZ   ù  s    þzAlterModelTable.describec                 C   s
   d| j  S )Nzalter_%s_tabler[   r   r   r   r   r\   ÿ  s    z'AlterModelTable.migration_name_fragment)r*   r+   r,   r   r   rB   rH   rT   rV   rZ   r�   r\   r-   r   r   r(   r   r“   Ñ  s   r“   c                       sh   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„ Zdd„ Zedd„ ƒZ‡  ZS )ru   Nc                    s.   |rt t|ƒƒ}t| | j|ƒ tƒ  |¡ d S r   )r   r   Úsetattrrv   r$   r   )r   r   rw   r(   r   r   r     s    z%AlterTogetherOptionOperation.__init__c                 C   s   t | | jƒS r   )Úgetattrrv   r   r   r   r   rw     s    z)AlterTogetherOptionOperation.option_valuec                 C   s    d| j | j| ji}| jjg |fS r‚   )r   rv   rw   r)   r,   r@   r   r   r   rB     s    þz(AlterTogetherOptionOperation.deconstructc                 C   s   |  || j| j| ji¡ d S r   )r–   r   rv   rw   rF   r   r   r   rH     s
    
ýz+AlterTogetherOptionOperation.state_forwardsc                 C   sl   |j  || j¡}|  |jj|¡rh|j  || j¡}t|d| j ƒ}||t|j| jt	ƒ ƒt|j| jt	ƒ ƒƒ d S )Nzalter_%s)
rJ   rK   r   rL   rM   rN   r™   rv   r8   r   )r   r"   rP   rQ   rR   r�   rŽ   Zalter_togetherr   r   r   rT     s    ýz.AlterTogetherOptionOperation.database_forwardsc                 C   s   |   ||||¡S r   r—   r‘   r   r   r   rV   *  s    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   rj   r   r   r   r5   0  r6   z@AlterTogetherOptionOperation.references_field.<locals>.<genexpr>)r#   rw   Ú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))rX   )rv   r   Úlenrw   r   r   r   r   rZ   3  s
    ýz%AlterTogetherOptionOperation.describec                 C   s   d| j | jf S )Nzalter_%s_%s)r   rv   r   r   r   r   r\   :  s    z4AlterTogetherOptionOperation.migration_name_fragment)r*   r+   r,   rv   r   r   rw   rB   rH   rT   rV   rœ   rZ   r�   r\   r-   r   r   r(   r   ru     s   
ru   c                       s$   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.
    re   c                    s   t ƒ  ||¡ d S r   ©r$   r   )r   r   re   r(   r   r   r   G  s    zAlterUniqueTogether.__init__©r*   r+   r,   r   rv   r   r-   r   r   r(   r   rž   ?  s   rž   c                       s$   e Zd ZdZdZ‡ fdd„Z‡  ZS )ÚAlterIndexTogetherzz
    Change the value of index_together to the target one.
    Input value of index_together must be a set of tuples.
    rf   c                    s   t ƒ  ||¡ d S r   rŸ   )r   r   rf   r(   r   r   r   S  s    zAlterIndexTogether.__init__r    r   r   r(   r   r¡   K  s   r¡   c                       s`   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„ Z
dd„ Zedd„ ƒZ‡  ZS )rx   z9Represent a change with the order_with_respect_to option.r_   c                    s   || _ tƒ  |¡ d S r   )r_   r$   r   )r   r   r_   r(   r   r   r   \  s    z AlterOrderWithRespectTo.__init__c                 C   s   | j | jdœ}| jjg |fS )N©r   r_   )r   r_   r)   r,   r@   r   r   r   rB   `  s    þz#AlterOrderWithRespectTo.deconstructc                 C   s   |  || j| j| ji¡ d S r   )r–   r   rv   r_   rF   r   r   r   rH   g  s
    
ýz&AlterOrderWithRespectTo.state_forwardsc                 C   s�   |j  || j¡}|  |jj|¡rŒ|j  || j¡}|jjrV|jjsV| ||j 	d¡¡ n6|jjrŒ|jjsŒ|j 	d¡}| 
¡ s€d|_| ||¡ d S )NÚ_orderr   )rJ   rK   r   rL   rM   rN   r8   r_   Zremove_fieldr‡   Zhas_defaultÚdefaultZ	add_field)r   r"   rP   rQ   rR   Zto_modelZ
from_modelr^   r   r   r   rT   n  s*    ÿþÿÿþþz)AlterOrderWithRespectTo.database_forwardsc                 C   s   |   ||||¡ d S r   r—   r‘   r   r   r   rV   ˆ  s    z*AlterOrderWithRespectTo.database_backwardsc                 C   s    |   ||¡o| jd u p|| jkS r   )r#   r_   r›   r   r   r   rœ   ‹  s    ÿz(AlterOrderWithRespectTo.references_fieldc                 C   s   d| j | jf S )Nz%Set order_with_respect_to on %s to %sr¢   r   r   r   r   rZ   �  s    þz AlterOrderWithRespectTo.describec                 C   s
   d| j  S )Nzalter_%s_order_with_respect_tor[   r   r   r   r   r\   –  s    z/AlterOrderWithRespectTo.migration_name_fragment)r*   r+   r,   r   rv   r   rB   rH   rT   rV   rœ   rZ   r�   r\   r-   r   r   r(   r   rx   W  s   rx   c                       s\   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
edd„ ƒZ‡  ZS )rr   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.
    )Zbase_manager_nameZdefault_manager_nameZdefault_related_nameZget_latest_byZmanagedZorderingZpermissionsZdefault_permissionsZselect_on_saveZverbose_nameZverbose_name_pluralc                    s   || _ tƒ  |¡ d S r   )r0   r$   r   )r   r   r0   r(   r   r   r   ±  s    zAlterModelOptions.__init__c                 C   s   | j | jdœ}| jjg |fS )N)r   r0   )r   r0   r)   r,   r@   r   r   r   rB   µ  s    þzAlterModelOptions.deconstructc                 C   s   |  || j| j| j¡ d S r   )r–   r   r0   rs   rF   r   r   r   rH   ¼  s    üz AlterModelOptions.state_forwardsc                 C   s   d S r   r   r‘   r   r   r   rT   Ä  s    z#AlterModelOptions.database_forwardsc                 C   s   d S r   r   r‘   r   r   r   rV   Ç  s    z$AlterModelOptions.database_backwardsc                 C   s
   d| j  S )NzChange Meta options on %sr   r   r   r   r   rZ   Ê  s    zAlterModelOptions.describec                 C   s
   d| j  S )Nzalter_%s_optionsr[   r   r   r   r   r\   Í  s    z)AlterModelOptions.migration_name_fragment)r*   r+   r,   r   rs   r   rB   rH   rT   rV   rZ   r�   r\   r-   r   r   r(   r   rr   ›  s   rr   c                       sZ   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
edd„ ƒZ‡  ZS )ÚAlterModelManagerszAlter the model's managers.r1   c                    s   || _ tƒ  |¡ d S r   )r1   r$   r   )r   r   r1   r(   r   r   r   ×  s    zAlterModelManagers.__init__c                 C   s   | j j| j| jgi fS r   )r)   r,   r   r1   r   r   r   r   rB   Û  s    zAlterModelManagers.deconstructc                 C   s   |  || j| j¡ d S r   )Zalter_model_managersr   r1   rF   r   r   r   rH   Þ  s    z!AlterModelManagers.state_forwardsc                 C   s   d S r   r   r‘   r   r   r   rT   á  s    z$AlterModelManagers.database_forwardsc                 C   s   d S r   r   r‘   r   r   r   rV   ä  s    z%AlterModelManagers.database_backwardsc                 C   s
   d| j  S )NzChange managers on %sr   r   r   r   r   rZ   ç  s    zAlterModelManagers.describec                 C   s
   d| j  S )Nzalter_%s_managersr[   r   r   r   r   r\   ê  s    z*AlterModelManagers.migration_name_fragment)r*   r+   r,   r   r€   r   rB   rH   rT   rV   rZ   r�   r\   r-   r   r   r(   r   r¥   Ò  s   r¥   c                   @   s   e Zd ZdZedd„ ƒZdS )ÚIndexOperationZindexesc                 C   s
   | j  ¡ S r   )r†   r   r   r   r   r   ry   ò  s    zIndexOperation.model_name_lowerN)r*   r+   r,   rv   r   ry   r   r   r   r   r¦   ï  s   r¦   c                   @   sL   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
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   Úindex)r   r†   r¨   r   r   r   r   ú  s    ÿÿzAddIndex.__init__c                 C   s   |  || j| j¡ d S r   )Ú	add_indexry   r¨   rF   r   r   r   rH     s    zAddIndex.state_forwardsc                 C   s2   |j  || j¡}|  |jj|¡r.| || j¡ d S r   )rJ   rK   r†   rL   rM   rN   r©   r¨   rO   r   r   r   rT     s    zAddIndex.database_forwardsc                 C   s2   |j  || j¡}|  |jj|¡r.| || j¡ d S r   )rJ   rK   r†   rL   rM   rN   Úremove_indexr¨   rO   r   r   r   rV     s    zAddIndex.database_backwardsc                 C   s   | j | jdœ}| jjg |fS )N)r†   r¨   )r†   r¨   r)   r,   r@   r   r   r   rB     s    þýzAddIndex.deconstructc                 C   sN   | j jr0d| j jd dd„ | j jD ƒ¡| jf S d| j jd | j j¡| jf S )Nz!Create index %s on %s on model %sz, c                 S   s   g | ]}t |ƒ‘qS r   )r;   )r3   Z
expressionr   r   r   rd     r6   z%AddIndex.describe.<locals>.<listcomp>z*Create index %s on field(s) %s of model %s)r¨   Zexpressionsr   Újoinr†   r/   r   r   r   r   rZ     s    ýýzAddIndex.describec                 C   s   d| j | jj ¡ f S ©Nz%s_%s)ry   r¨   r   r   r   r   r   r   r\   (  s    z AddIndex.migration_name_fragmentN©r*   r+   r,   r   r   rH   rT   rV   rB   rZ   r�   r\   r   r   r   r   r§   ÷  s   	r§   c                   @   sL   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
dd„ ƒZdS )ÚRemoveIndexzRemove an index from a model.c                 C   s   || _ || _d S r   ©r†   r   ©r   r†   r   r   r   r   r   0  s    zRemoveIndex.__init__c                 C   s   |  || j| j¡ d S r   )rª   ry   r   rF   r   r   r   rH   4  s    zRemoveIndex.state_forwardsc                 C   sL   |j  || j¡}|  |jj|¡rH|j|| jf }| | j	¡}| 
||¡ d S r   )rJ   rK   r†   rL   rM   rN   r   ry   Úget_index_by_namer   rª   )r   r"   rP   rQ   rR   rS   Úfrom_model_stater¨   r   r   r   rT   7  s
    zRemoveIndex.database_forwardsc                 C   sL   |j  || j¡}|  |jj|¡rH|j|| jf }| | j	¡}| 
||¡ d S r   )rJ   rK   r†   rL   rM   rN   r   ry   r±   r   r©   )r   r"   rP   rQ   rR   rS   Úto_model_stater¨   r   r   r   rV   >  s
    zRemoveIndex.database_backwardsc                 C   s   | j | jdœ}| jjg |fS ©Nr¯   )r†   r   r)   r,   r@   r   r   r   rB   E  s    þýzRemoveIndex.deconstructc                 C   s   d| j | jf S )NzRemove index %s from %s©r   r†   r   r   r   r   rZ   P  s    zRemoveIndex.describec                 C   s   d| j | j ¡ f S ©Nzremove_%s_%s©ry   r   r   r   r   r   r   r\   S  s    z#RemoveIndex.migration_name_fragmentNr­   r   r   r   r   r®   -  s   r®   c                   @   sL   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
dd„ ƒZdS )ÚAddConstraintÚconstraintsc                 C   s   || _ || _d S r   ©r†   Ú
constraint)r   r†   r»   r   r   r   r   [  s    zAddConstraint.__init__c                 C   s   |  || j| j¡ d S r   )Úadd_constraintry   r»   rF   r   r   r   rH   _  s    zAddConstraint.state_forwardsc                 C   s2   |j  || j¡}|  |jj|¡r.| || j¡ d S r   )rJ   rK   r†   rL   rM   rN   r¼   r»   rO   r   r   r   rT   b  s    zAddConstraint.database_forwardsc                 C   s2   |j  || j¡}|  |jj|¡r.| || j¡ d S r   )rJ   rK   r†   rL   rM   rN   Úremove_constraintr»   rO   r   r   r   rV   g  s    z AddConstraint.database_backwardsc                 C   s   | j jg | j| jdœfS )Nrº   )r)   r*   r†   r»   r   r   r   r   rB   l  s    þý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   rZ   v  s    þzAddConstraint.describec                 C   s   d| j | jj ¡ f S r¬   )ry   r»   r   r   r   r   r   r   r\   |  s    z%AddConstraint.migration_name_fragmentN©r*   r+   r,   rv   r   rH   rT   rV   rB   rZ   r�   r\   r   r   r   r   r¸   X  s   
r¸   c                   @   sL   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	e
dd„ ƒZdS )ÚRemoveConstraintr¹   c                 C   s   || _ || _d S r   r¯   r°   r   r   r   r   „  s    zRemoveConstraint.__init__c                 C   s   |  || j| j¡ d S r   )r½   ry   r   rF   r   r   r   rH   ˆ  s    zRemoveConstraint.state_forwardsc                 C   sL   |j  || j¡}|  |jj|¡rH|j|| jf }| | j	¡}| 
||¡ d S r   )rJ   rK   r†   rL   rM   rN   r   ry   Úget_constraint_by_namer   r½   )r   r"   rP   rQ   rR   rS   r²   r»   r   r   r   rT   ‹  s
    z"RemoveConstraint.database_forwardsc                 C   sL   |j  || j¡}|  |jj|¡rH|j|| jf }| | j	¡}| 
||¡ d S r   )rJ   rK   r†   rL   rM   rN   r   ry   rÀ   r   r¼   )r   r"   rP   rQ   rR   rS   r³   r»   r   r   r   rV   ’  s
    z#RemoveConstraint.database_backwardsc                 C   s   | j jg | j| jdœfS r´   )r)   r*   r†   r   r   r   r   r   rB   ™  s    þýzRemoveConstraint.deconstructc                 C   s   d| j | jf S )Nz"Remove constraint %s from model %srµ   r   r   r   r   rZ   £  s    zRemoveConstraint.describec                 C   s   d| j | j ¡ f S r¶   r·   r   r   r   r   r\   ¦  s    z(RemoveConstraint.migration_name_fragmentNr¾   r   r   r   r   r¿   �  s   
r¿   N)%Z	django.dbr   Z$django.db.migrations.operations.baser   Zdjango.db.migrations.stater   Zdjango.db.migrations.utilsr   r   Zdjango.db.models.optionsr   Zdjango.utils.functionalr   r/   r
   r   r   r   r   r   r   r.   ro   rp   r’   r“   ru   rž   r¡   rx   rr   r¥   r¦   r§   r®   r¸   r¿   r   r   r   r   Ú<module>   s4   
  #
3;D76+)