o
    þÞhøº  ã                   @   s¸  d dl mZ d dlmZ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%G d-d.„ d.e"ƒZ&G d/d0„ d0e"ƒZ'G d1d2„ d2e"ƒZ(d3S )4é    )Úmodels)Ú	OperationÚOperationCategory)Ú
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)Úarg_nameÚobjsÚ	used_valsÚval© r   úf/var/www/html/premium_crap/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„ Z‡ fdd„Z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_lowerc                 C   s   |  ¡ | jkS r   ©r"   r$   ©r   r   Ú	app_labelr   r   r   Úreferences_model   ó   zModelOperation.references_modelc                    s   t ƒ  ||¡p|  ||¡S r   )ÚsuperÚreduceÚcan_reduce_through©r   Ú	operationr(   ©Ú	__class__r   r   r,       s   ÿzModelOperation.reducec                 C   s   |  | j|¡ S r   )r)   r   r.   r   r   r   r-   %   ó   z!ModelOperation.can_reduce_through)
Ú__name__Ú
__module__Ú__qualname__r   r	   r$   r)   r,   r-   Ú__classcell__r   r   r0   r   r      s    
r   c                       sx   e Zd ZdZej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 )Nr8   c                 s   ó   � | ]\}}|V  qd S r   r   ©Ú.0r   Ú_r   r   r   Ú	<genexpr>7   ó   € z'CreateModel.__init__.<locals>.<genexpr>Úbasesc                 s   s8   � | ]}t |d ƒr|jjn
t|tƒr| ¡ n|V  qdS )Ú_metaN)ÚhasattrrB   Úlabel_lowerÚ
isinstanceÚstrr"   )r=   Úbaser   r   r   r?   :   s   € ý
ÿ
ür:   c                 s   r;   r   r   r<   r   r   r   r?   C   r@   )	r8   r9   r   ÚModelrA   r:   r+   r   r   )r   r   r8   r9   rA   r:   r0   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   r8   r9   rA   Úobjectsr:   )
r   r8   r9   rA   r   rH   r:   ÚManagerr1   r5   ©r   Úkwargsr   r   r   ÚdeconstructE   s   þ


zCreateModel.deconstructc              
   C   s6   |  t|| jt| jƒt| jƒt| jƒt| j	ƒƒ¡ d S r   )
Ú	add_modelr   r   Úlistr8   Údictr9   ÚtuplerA   r:   ©r   r(   Ústater   r   r   Ústate_forwardsR   s   úÿzCreateModel.state_forwardsc                 C   sf   |j  || j¡}|  |jj|¡r/| |¡ |j|| jf }|j	 
d¡ }r1| |tƒ |¡ d S d S d S )NÚindex_together)ÚappsÚ	get_modelr   Úallow_migrate_modelÚ
connectionÚaliasÚcreate_modelr   r$   r9   ÚgetÚalter_index_togetherr   )r   r(   Úschema_editorÚ
from_stateÚto_stateÚmodelÚto_model_staterU   r   r   r   Údatabase_forwards^   s   
ýøzCreateModel.database_forwardsc                 C   ó2   |j  || j¡}|  |jj|¡r| |¡ d S d S r   ©rV   rW   r   rX   rY   rZ   Údelete_model©r   r(   r^   r_   r`   ra   r   r   r   Údatabase_backwardsn   ó   ÿzCreateModel.database_backwardsc                 C   s    d| j  dd¡r
dnd| jf S )NzCreate %smodel %sÚproxyFzproxy Ú )r9   r\   r   r#   r   r   r   Údescribes   s   þzCreateModel.describec                 C   s   | j S r   ©r$   r#   r   r   r   Úmigration_name_fragmenty   s   z#CreateModel.migration_name_fragmentc                 C   s†   |  ¡ }|| jkrdS ||f}| jD ]}|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 q0dS )NTF)r"   r$   rA   r   rH   rE   rG   Ú	ModelBaserF   r   r8   r   )r   r   r(   r$   Úreference_model_tuplerG   Ú_nameÚfieldr   r   r   r)   }   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rQ| |d ¡ qDt| j| j	|| j
| jd�gS t ˆ tƒrz| jˆ jkrzt| j| j	| j| 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ƒr¼| jˆ jkr¼t| j| j	i | j¥dˆ ji¥| 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ƒrÿ| jˆ jkrÿt| 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ƒ�rDt| j‡ fdd„| j	D ƒ| j| j
| jd�gS t ˆ tƒ�r–| j  ¡ }d	D ]!}| |d ¡}|�rqt!t"t#‡ fd
d„|D ƒƒƒ}|�rq|||< �qQ| d¡}|ˆ jk�r�|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 n©t ˆ t&ƒ�r‰| jˆ jk�r‰t ˆ t'ƒ�rt| j| j	i | j¥dg | j dg ¡¢ˆ j(‘i¥| j
| jd�gS t ˆ t)ƒ�r;‡ fdd„| j dg ¡D ƒ}t| j| j	i | j¥d|i¥| j
| jd�gS t ˆ t*ƒ�r`t| j| j	i | j¥dg | j dg ¡¢ˆ j+‘i¥| j
| jd�gS t ˆ t,ƒ�r‰‡ fdd„| j dg ¡D ƒ}	t| j| j	i | j¥d|	i¥| j
| jd�gS t-ƒ  .ˆ |¡S )Nrj   F)r8   r9   rA   r:   Údb_tableÚdb_table_commentÚorder_with_respect_toc                    s(   g | ]\}}||ˆ j krˆ jn|f‘qS r   )r   rr   ©r=   ÚnÚv©r/   r   r   Ú
<listcomp>  ó    ÿÿz&CreateModel.reduce.<locals>.<listcomp>)Úunique_togetherrU   c                 3   s&   � | ]}t ‡ fd d„|D ƒƒV  qdS )c                 3   s   � | ]
}|ˆ j kr|V  qd S r   rm   ©r=   Úfry   r   r   r?   *  s   € ÿz/CreateModel.reduce.<locals>.<genexpr>.<genexpr>N©rQ   ©r=   r8   ry   r   r   r?   )  s   € ýÿ
ÿz%CreateModel.reduce.<locals>.<genexpr>c                    s&   g | ]\}}|  ¡ ˆ jkr||f‘qS r   r&   rv   ry   r   r   rz   9  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_namer}   ry   r   r   r?   I  s
   € ÿ
ÿz/CreateModel.reduce.<locals>.<setcomp>.<genexpr>r   r€   ry   r   r   Ú	<setcomp>H  s    üþÿz%CreateModel.reduce.<locals>.<setcomp>c                    s(   g | ]\}}|ˆ j krˆ jn||f‘qS r   r�   rv   ry   r   r   rz   U  r{   Úindexesc                    ó   g | ]
}|j ˆ j kr|‘qS r   r   )r=   Úindexry   r   r   rz   s  ó
    þÚconstraintsc                    r†   r   r   )r=   Ú
constraintry   r   r   rz   •  rˆ   )/rE   ÚDeleteModelr$   r9   r\   ÚRenameModelÚold_name_lowerr7   rƒ   r8   rA   r:   ÚAlterModelOptionsÚALTER_OPTION_KEYSÚpopr   ÚAlterModelManagersÚAlterModelTableÚtableÚAlterModelTableCommentÚtable_commentÚAlterTogetherOptionOperationÚoption_nameÚoption_valueÚAlterOrderWithRespectToru   r   Úmodel_name_lowerr   rr   r   r   Úcopyr   ÚfilterÚboolr   r‚   ÚIndexOperationÚAddIndexr‡   ÚRemoveIndexÚAddConstraintrŠ   ÚRemoveConstraintr+   r,   )
r   r/   r(   r9   Úkeyr—   Úoptionru   Úoptions_indexesÚoptions_constraintsr0   ry   r   r,   ”   sò  ÿÿÿûÿ
ÿ

€ûÿ
ÿûÿ
ÿÿþøÿÿÿþøÿÿÿ
þøÿÿÿþøÿÿûÿ	
þøÿ

üþÿ€

þ÷ÿ



û€


þøÿñÿÿÿþþõÿ
þÿþøÿÿÿþþõÿ
þÿþøÿzCreateModel.reduce)NNN)r3   r4   r5   Ú__doc__r   ÚADDITIONÚcategoryÚserialization_expand_argsr   rM   rT   rc   rh   rl   Úpropertyrn   r)   r,   r6   r   r   r0   r   r7   )   s    
r7   c                   @   óR   e Zd ZdZej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 )r‹   zDrop a model's table.c                 C   s   d| j i}| jjg |fS ©Nr   )r   r1   r5   rK   r   r   r   rM   ®  s   ÿzDeleteModel.deconstructc                 C   s   |  || j¡ d S r   )Úremove_modelr$   rR   r   r   r   rT   ´  ó   zDeleteModel.state_forwardsc                 C   rd   r   re   rg   r   r   r   rc   ·  ri   zDeleteModel.database_forwardsc                 C   s2   |j  || j¡}|  |jj|¡r| |¡ d S d S r   )rV   rW   r   rX   rY   rZ   r[   rg   r   r   r   rh   ¼  ri   zDeleteModel.database_backwardsc                 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   rl   Æ  r    zDeleteModel.describec                 C   r°   )Nz	delete_%srm   r#   r   r   r   rn   É  r%   z#DeleteModel.migration_name_fragmentN)r3   r4   r5   r§   r   ÚREMOVALr©   rM   rT   rc   rh   r)   rl   r«   rn   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dd„ Zedd„ ƒZ‡ fdd„Z‡  ZS )rŒ   zRename a model.c                    s   || _ || _tƒ  |¡ d S r   )r‚   rƒ   r+   r   )r   r‚   rƒ   r0   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ƒ   r1   r5   rK   r   r   r   rM   à  ó   þzRenameModel.deconstructc                 C   ó   |  || j| j¡ d S r   )Úrename_modelr‚   rƒ   rR   r   r   r   rT   ç  ó   zRenameModel.state_forwardsc                 C   s
  |j  || j¡}|  |jj|¡r�|j  || j¡}| ||jj	|jj	¡ |jj
D ]3}|j|kr6|}|| jf}	n|jjj|jjjf}	|j j|	Ž }|j j|	Ž j |jj¡}
| ||j|
¡ q't|jj|jjƒ}|D ]\}}|j|jksv|jjjjswqf|j|||dd� qfd S d S )NF)Ústrict)rV   rW   rƒ   rX   rY   rZ   r‚   Úalter_db_tablerB   rs   Úrelated_objectsÚrelated_modelr´   r(   Ú
model_nameÚ	get_fieldrr   r   Úalter_fieldÚzipÚlocal_many_to_manyra   Úremote_fieldÚthroughÚauto_createdÚ_alter_many_to_many)r   r(   r^   r_   r`   Ú	new_modelÚ	old_modelÚrelated_objectra   Úrelated_keyÚto_fieldr8   Ú	old_fieldÚ	new_fieldr   r   r   rc   ê  sP   ý
þÿýÿ
ÿüÙzRenameModel.database_forwardsc                 C   s\   | j | j| _| _ | j| j| _| _|  ||||¡ | j | j| _| _ | j| j| _| _d S r   )r�   r´   r‚   rƒ   rc   ©r   r(   r^   r_   r`   r   r   r   rh     s   
þ
þzRenameModel.database_backwardsc                 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   rl   .  r2   zRenameModel.describec                 C   rÏ   )Núrename_%s_%s)r�   r´   r#   r   r   r   rn   1  ó   z#RenameModel.migration_name_fragmentc                    sH   t |tƒr| j|jkrt| j|jƒgS tt| ƒ ||¡p#| 	| j|¡ S r   )
rE   rŒ   r´   r�   r‚   rƒ   r+   r   r,   r)   r.   r0   r   r   r,   5  s   ÿþÿ
ÿþzRenameModel.reduce)r3   r4   r5   r§   r   Ú
ALTERATIONr©   r   r	   r�   r´   rM   rT   rc   rh   r)   rl   r«   rn   r,   r6   r   r   r0   r   rŒ   Î  s"    

0
rŒ   c                       s"   e Zd ZejZ‡ fdd„Z‡  ZS )ÚModelOptionOperationc                    s0   t || jtfƒr| j|jkr|gS tƒ  ||¡S r   )rE   r1   r‹   r$   r+   r,   r.   r0   r   r   r,   J  s
   ÿzModelOptionOperation.reduce)r3   r4   r5   r   rÒ   r©   r,   r6   r   r   r0   r   rÓ   G  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 )r’   zRename a model's table.c                    ó   || _ tƒ  |¡ d S r   )r“   r+   r   )r   r   r“   r0   r   r   r   V  ó   zAlterModelTable.__init__c                 C   rµ   )N©r   r“   )r   r“   r1   r5   rK   r   r   r   rM   Z  r¶   zAlterModelTable.deconstructc                 C   ó   |  || jd| ji¡ d S )Nrs   )Úalter_model_optionsr$   r“   rR   r   r   r   rT   a  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   )rV   rW   r   rX   rY   rZ   r»   rB   rs   rÁ   rÂ   rÃ   rÄ   rÅ   )	r   r(   r^   r_   r`   rÇ   rÈ   rÌ   rÍ   r   r   r   rc   d  s(   ýÿ

ý€ôz!AlterModelTable.database_forwardsc                 C   ó   |   ||||¡S r   ©rc   rÎ   r   r   r   rh   x  r2   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   rl   {  s   þþzAlterModelTable.describec                 C   r°   )Nzalter_%s_tablerm   r#   r   r   r   rn   �  r%   z'AlterModelTable.migration_name_fragment)r3   r4   r5   r§   r   rM   rT   rc   rh   rl   r«   rn   r6   r   r   r0   r   r’   S  s    r’   c                       sP   e 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 )r”   c                    rÔ   r   )r•   r+   r   )r   r   r•   r0   r   r   r   ‡  rÕ   zAlterModelTableComment.__init__c                 C   rµ   )N)r   r•   )r   r•   r1   r5   rK   r   r   r   rM   ‹  r¶   z"AlterModelTableComment.deconstructc                 C   r×   )Nrt   )rØ   r$   r•   rR   r   r   r   rT   ’  ó   ÿz%AlterModelTableComment.state_forwardsc                 C   sN   |j  || j¡}|  |jj|¡r%|j  || j¡}| ||jj|jj¡ d S d S r   )	rV   rW   r   rX   rY   rZ   Úalter_db_table_commentrB   rt   )r   r(   r^   r_   r`   rÇ   rÈ   r   r   r   rc   —  s   ýþz(AlterModelTableComment.database_forwardsc                 C   rÙ   r   rÚ   rÎ   r   r   r   rh   ¡  r2   z)AlterModelTableComment.database_backwardsc                 C   ó   d| j › d�S )NzAlter z table commentr   r#   r   r   r   rl   ¤  r*   zAlterModelTableComment.describec                 C   rÝ   )NÚalter_Ú_table_commentrm   r#   r   r   r   rn   §  s   z.AlterModelTableComment.migration_name_fragment)r3   r4   r5   r   rM   rT   rc   rh   rl   r«   rn   r6   r   r   r0   r   r”   †  s    
r”   c                       st   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‡ f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˜   r0   r   r   r   ¯  s   z%AlterTogetherOptionOperation.__init__c                 C   s   t | | jƒS r   )Úgetattrr—   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˜   r1   r5   rK   r   r   r   rM   ¹  s   þz(AlterTogetherOptionOperation.deconstructc                 C   ó   |  || j| j| ji¡ d S r   )rØ   r$   r—   r˜   rR   r   r   r   rT   À  ó
   
ýz+AlterTogetherOptionOperation.state_forwardsc           	      C   s„   |j  || j¡}|  |jj|¡r@|j|| jf }|j|| jf }t|d| j	 ƒ}|||j
 | j	¡p3tƒ |j
 | j	¡p<tƒ ƒ d S d S )Nzalter_%s)rV   rW   r   rX   rY   rZ   r   r$   rá   r—   r9   r\   r   )	r   r(   r^   r_   r`   rÇ   Úfrom_model_staterb   Úalter_togetherr   r   r   rc   Ç  s   ýüz.AlterTogetherOptionOperation.database_forwardsc                 C   rÙ   r   rÚ   rÎ   r   r   r   rh   Ó  r2   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))rk   )r—   r   Úlenr˜   r#   r   r   r   rl   Ü  s
   ýz%AlterTogetherOptionOperation.describec                 C   rÏ   ©Nzalter_%s_%s)r$   r—   r#   r   r   r   rn   ã  rÑ   z4AlterTogetherOptionOperation.migration_name_fragmentc                    s(   t ƒ  ||¡pt|tƒot|ƒt| ƒuS r   )r+   r-   rE   r–   Útyper.   r0   r   r   r-   ç  s   
þz/AlterTogetherOptionOperation.can_reduce_through)r3   r4   r5   r—   r   r	   r˜   rM   rT   rc   rh   rè   rl   r«   rn   r-   r6   r   r   r0   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.
    r|   c                    ó   t ƒ  ||¡ d S r   ©r+   r   )r   r   r|   r0   r   r   r   ö  r¯   zAlterUniqueTogether.__init__©r3   r4   r5   r§   r—   r   r6   r   r   r0   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.
    rU   c                    rî   r   rï   )r   r   rU   r0   r   r   r     r¯   zAlterIndexTogether.__init__rð   r   r   r0   r   rò   ú  rñ   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 )r™   z9Represent a change with the order_with_respect_to option.ru   c                    rÔ   r   )ru   r+   r   )r   r   ru   r0   r   r   r     rÕ   z AlterOrderWithRespectTo.__init__c                 C   rµ   )N©r   ru   )r   ru   r1   r5   rK   r   r   r   rM     r¶   z#AlterOrderWithRespectTo.deconstructc                 C   râ   r   )rØ   r$   r—   ru   rR   r   r   r   rT     rã   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   )rV   rW   r   rX   rY   rZ   rB   ru   Úremove_fieldr¿   Úhas_defaultÚdefaultÚ	add_field)r   r(   r^   r_   r`   Úto_modelÚ
from_modelrr   r   r   r   rc     s.   ÿþÿÿþþíz)AlterOrderWithRespectTo.database_forwardsc                 C   s   |   ||||¡ d S r   rÚ   rÎ   r   r   r   rh   7  ó   z*AlterOrderWithRespectTo.database_backwardsc                 C   s    |   ||¡o| jd u p|| jkS r   )r)   ru   rç   r   r   r   rè   :  s   ÿz(AlterOrderWithRespectTo.references_fieldc                 C   rÏ   )Nz%Set order_with_respect_to on %s to %sró   r#   r   r   r   rl   ?  s   þz AlterOrderWithRespectTo.describec                 C   r°   )Nzalter_%s_order_with_respect_torm   r#   r   r   r   rn   E  r%   z/AlterOrderWithRespectTo.migration_name_fragment)r3   r4   r5   r§   r—   r   rM   rT   rc   rh   rè   rl   r«   rn   r6   r   r   r0   r   r™     s    r™   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 )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   )r9   r+   r   )r   r   r9   r0   r   r   r   `  rÕ   zAlterModelOptions.__init__c                 C   rµ   )N)r   r9   )r   r9   r1   r5   rK   r   r   r   rM   d  r¶   zAlterModelOptions.deconstructc                 C   ó   |  || j| j| j¡ d S r   )rØ   r$   r9   r�   rR   r   r   r   rT   k  s   üz AlterModelOptions.state_forwardsc                 C   ó   d S r   r   rÎ   r   r   r   rc   s  ó   z#AlterModelOptions.database_forwardsc                 C   r  r   r   rÎ   r   r   r   rh   v  r	  z$AlterModelOptions.database_backwardsc                 C   r°   )NzChange Meta options on %sr   r#   r   r   r   rl   y  r    zAlterModelOptions.describec                 C   r°   )Nzalter_%s_optionsrm   r#   r   r   r   rn   |  r%   z)AlterModelOptions.migration_name_fragment)r3   r4   r5   r§   r�   r   rM   rT   rc   rh   rl   r«   rn   r6   r   r   r0   r   rŽ   J  s    rŽ   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 )r‘   zAlter the model's managers.r:   c                    rÔ   r   )r:   r+   r   )r   r   r:   r0   r   r   r   †  rÕ   zAlterModelManagers.__init__c                 C   s   | j j| j| jgi fS r   )r1   r5   r   r:   r#   r   r   r   rM   Š  r¹   zAlterModelManagers.deconstructc                 C   r·   r   )Úalter_model_managersr$   r:   rR   r   r   r   rT   �  r¹   z!AlterModelManagers.state_forwardsc                 C   r  r   r   rÎ   r   r   r   rc   �  r	  z$AlterModelManagers.database_forwardsc                 C   r  r   r   rÎ   r   r   r   rh   “  r	  z%AlterModelManagers.database_backwardsc                 C   r°   )NzChange managers on %sr   r#   r   r   r   rl   –  r    zAlterModelManagers.describec                 C   r°   )Nzalter_%s_managersrm   r#   r   r   r   rn   ™  r%   z*AlterModelManagers.migration_name_fragment)r3   r4   r5   r§   rª   r   rM   rT   rc   rh   rl   r«   rn   r6   r   r   r0   r   r‘   �  s    r‘   c                   @   s   e Zd ZdZedd„ ƒZdS )rž   r…   c                 C   r!   r   )r¾   r"   r#   r   r   r   rš   ¡  r%   zIndexOperation.model_name_lowerN)r3   r4   r5   r—   r	   rš   r   r   r   r   rž   ž  s    rž   c                       sb   e Zd ZdZej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 )rŸ   z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   r·   r   )Ú	add_indexrš   r‡   rR   r   r   r   rT   ´  r¹   zAddIndex.state_forwardsc                 C   ó6   |j  || j¡}|  |jj|¡r| || j¡ d S d S r   )rV   rW   r¾   rX   rY   rZ   r  r‡   rg   r   r   r   rc   ·  ó   ÿzAddIndex.database_forwardsc                 C   s6   |j  || j¡}|  |jj|¡r| || j¡ d S d S r   )rV   rW   r¾   rX   rY   rZ   Úremove_indexr‡   rg   r   r   r   rh   ¼  r  zAddIndex.database_backwardsc                 C   rµ   ©N)r¾   r‡   )r¾   r‡   r1   r5   rK   r   r   r   rM   Á  ó   þýzAddIndex.deconstructc                 C   sN   | j jrd| 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 %sú, c                 S   s   g | ]}t |ƒ‘qS r   )rF   )r=   Ú
expressionr   r   r   rz   Ð  s    z%AddIndex.describe.<locals>.<listcomp>z*Create index %s on field(s) %s of model %s)r‡   Úexpressionsr   Újoinr¾   r8   r#   r   r   r   rl   Ì  s   ýýzAddIndex.describec                 C   ó   d| j | jj ¡ f S ©Nz%s_%s)rš   r‡   r   r"   r#   r   r   r   rn   Ù  ó   z AddIndex.migration_name_fragmentc                    s`   t |tƒr| jj|jkrg S t |tƒr)| jj|jkr)|j| j_| j| j| jd�gS t	ƒ  
||¡S r  )rE   r    r‡   r   ÚRenameIndexr‚   rƒ   r1   r¾   r+   r,   r.   r0   r   r   r,   Ý  s   
zAddIndex.reduce)r3   r4   r5   r§   r   r¨   r©   r   rT   rc   rh   rM   rl   r«   rn   r,   r6   r   r   r0   r   rŸ   ¦  s    	
rŸ   c                   @   r¬   )r    zRemove an index from a model.c                 C   ó   || _ || _d S r   ©r¾   r   ©r   r¾   r   r   r   r   r   ë  ó   
zRemoveIndex.__init__c                 C   r·   r   )r  rš   r   rR   r   r   r   rT   ï  r¹   zRemoveIndex.state_forwardsc                 C   sP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rV   rW   r¾   rX   rY   rZ   r   rš   Úget_index_by_namer   r  )r   r(   r^   r_   r`   ra   rä   r‡   r   r   r   rc   ò  ó   ýzRemoveIndex.database_forwardsc                 C   óP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rV   rW   r¾   rX   rY   rZ   r   rš   r  r   r  )r   r(   r^   r_   r`   ra   rb   r‡   r   r   r   rh   ù  r  zRemoveIndex.database_backwardsc                 C   rµ   ©Nr  )r¾   r   r1   r5   rK   r   r   r   rM      r  zRemoveIndex.deconstructc                 C   rÏ   )NzRemove index %s from %s©r   r¾   r#   r   r   r   rl     r2   zRemoveIndex.describec                 C   ó   d| j | j ¡ f S ©Nzremove_%s_%s©rš   r   r"   r#   r   r   r   rn     ó   z#RemoveIndex.migration_name_fragmentN)r3   r4   r5   r§   r   r±   r©   r   rT   rc   rh   rM   rl   r«   rn   r   r   r   r   r    æ  s    r    c                       s|   e Zd ZdZej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dd„ Zedd„ ƒZ‡ fdd„Z‡  ZS )r  zRename an index.Nc                 C   s<   |s|st dƒ‚|r|rt dƒ‚|| _|| _|| _|| _d S )NzHRenameIndex requires one of old_name and old_fields arguments to be set.z;RenameIndex.old_name and old_fields are mutually exclusive.)r   r¾   rƒ   r‚   Ú
old_fields)r   r¾   rƒ   r‚   r&  r   r   r   r     s   ÿÿ
zRenameIndex.__init__c                 C   r!   r   r²   r#   r   r   r   r�   '  r%   zRenameIndex.old_name_lowerc                 C   r!   r   r³   r#   r   r   r   r´   +  r%   zRenameIndex.new_name_lowerc                 C   s<   | j | jdœ}| jr| j|d< | jr| j|d< | jjg |fS )N)r¾   rƒ   r‚   r&  )r¾   rƒ   r‚   r&  r1   r5   rK   r   r   r   rM   /  s   þ

zRenameIndex.deconstructc                 C   sX   | j r| || jtj| j | jd�¡ | || jtj| j ¡ d S | 	|| j| j
| j¡ d S )N©r8   r   )r&  r  rš   r   ÚIndexrƒ   Úremove_model_optionsrò   r—   Úrename_indexr‚   rR   r   r   r   rT   :  s   ýüÿzRenameIndex.state_forwardsc                    sü   |j  || j¡}|  |jj|¡sd S | jrQ|j  || j¡‰ ‡ fdd„| jD ƒ}|jˆ |ddd�}t|ƒdkrFt	dt|ƒˆ j
jd |¡f ƒ‚tj| j|d	 d
�}n|j|| jf }	|	 | j¡}|j| jkrgd S |j|| jf }
|
 | j¡}| |||¡ d S )Nc                    s   g | ]	}ˆ j  |¡j‘qS r   )rB   r¿   Úcolumn)r=   rr   ©rú   r   r   rz   S  s    ÿz1RenameIndex.database_forwards.<locals>.<listcomp>TF)Úcolumn_namesr‡   Úuniquer
   z.Found wrong number (%s) of indexes for %s(%s).r  r   r'  )rV   rW   r¾   rX   rY   rZ   r&  Ú_constraint_namesré   r   rB   rs   r  r   r(  rš   r  r‚   r   rƒ   r*  )r   r(   r^   r_   r`   ra   ÚcolumnsÚmatching_index_nameÚ	old_indexrä   rb   Ú	new_indexr   r,  r   rc   L  sD   
ÿüýÿÿþzRenameIndex.database_forwardsc                 C   sf   | j rd S | j| j| _| _| j| j| _| _|  ||||¡ | j| j| _| _| j| j| _| _d S r   )r&  r�   r´   r‚   rƒ   rc   rÎ   r   r   r   rh   t  s   
þ
þzRenameIndex.database_backwardsc                 C   s>   | j rd| j › d| j› d| j› �S d| j› d| j› d| j› �S )NzRename index ú on z to zRename unnamed index for )r‚   r¾   rƒ   r&  r#   r   r   r   rl   ‡  s   ÿÿÿzRenameIndex.describec                 C   s0   | j rd| j| jf S d| jd | j¡| jf S )NrÐ   zrename_%s_%s_%sr>   )r‚   r�   r´   rš   r  r&  r#   r   r   r   rn   ‘  s   
ýz#RenameIndex.migration_name_fragmentc                    sP   t |tƒr!| j|jkr!|jr!| j|jkr!t| j|j| j| jd�gS t	ƒ  
||¡S )N)rƒ   r‚   r&  )rE   r  rš   r‚   r´   r�   r¾   rƒ   r&  r+   r,   r.   r0   r   r   r,   ›  s   ÿÿüÿzRenameIndex.reduce)NN)r3   r4   r5   r§   r   rÒ   r©   r   r	   r�   r´   rM   rT   rc   rh   rl   r«   rn   r,   r6   r   r   r0   r   r    s     


(

	r  c                       ób   e Zd Zej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‡ fdd„Z‡  ZS )r¡   r‰   c                 C   r  r   ©r¾   rŠ   )r   r¾   rŠ   r   r   r   r   ±  r  zAddConstraint.__init__c                 C   r·   r   )Úadd_constraintrš   rŠ   rR   r   r   r   rT   µ  r¹   zAddConstraint.state_forwardsc                 C   r  r   )rV   rW   r¾   rX   rY   rZ   r7  rŠ   rg   r   r   r   rc   ¸  r  zAddConstraint.database_forwardsc                 C   r  r   )rV   rW   r¾   rX   rY   rZ   Úremove_constraintrŠ   rg   r   r   r   rh   ½  r  z AddConstraint.database_backwardsc                 C   ó   | j jg | j| jdœfS )Nr6  )r1   r3   r¾   rŠ   r#   r   r   r   rM   Â  ó   þý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   rl   Ì  s   þzAddConstraint.describec                 C   r  r  ©rš   rŠ   r   r"   r#   r   r   r   rn   Ò  r  z%AddConstraint.migration_name_fragmentc                    sj   t |tƒr| j|jkr| jj|jkrg S t |tƒr.| j|jkr.| jj|jkr.t| j|jƒgS tƒ  	||¡S r   )
rE   r¢   rš   rŠ   r   ÚAlterConstraintr¡   r¾   r+   r,   r.   r0   r   r   r,   Ö  s   ÿÿzAddConstraint.reduce)r3   r4   r5   r   r¨   r©   r—   r   rT   rc   rh   rM   rl   r«   rn   r,   r6   r   r   r0   r   r¡   ­  s    

r¡   c                   @   sR   e Zd Zej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 )r¢   r‰   c                 C   r  r   r  r  r   r   r   r   ê  r  zRemoveConstraint.__init__c                 C   r·   r   )r8  rš   r   rR   r   r   r   rT   î  r¹   zRemoveConstraint.state_forwardsc                 C   sP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rV   rW   r¾   rX   rY   rZ   r   rš   Úget_constraint_by_namer   r8  )r   r(   r^   r_   r`   ra   rä   rŠ   r   r   r   rc   ñ  r  z"RemoveConstraint.database_forwardsc                 C   r  r   )rV   rW   r¾   rX   rY   rZ   r   rš   r=  r   r7  )r   r(   r^   r_   r`   ra   rb   rŠ   r   r   r   rh   ø  r  z#RemoveConstraint.database_backwardsc                 C   r9  r   )r1   r3   r¾   r   r#   r   r   r   rM   ÿ  r:  zRemoveConstraint.deconstructc                 C   rÏ   )Nz"Remove constraint %s from model %sr!  r#   r   r   r   rl   	  r2   zRemoveConstraint.describec                 C   r"  r#  r$  r#   r   r   r   rn     r%  z(RemoveConstraint.migration_name_fragmentN)r3   r4   r5   r   r±   r©   r—   r   rT   rc   rh   rM   rl   r«   rn   r   r   r   r   r¢   æ  s    
r¢   c                       r5  )r<  r‰   c                 C   s   || _ || _|| _d S r   ©r¾   r   rŠ   )r   r¾   r   rŠ   r   r   r   r     s   
zAlterConstraint.__init__c                 C   r  r   )Úalter_constraintrš   r   rŠ   rR   r   r   r   rT     rÛ   zAlterConstraint.state_forwardsc                 C   r  r   r   rÎ   r   r   r   rc     r	  z!AlterConstraint.database_forwardsc                 C   r  r   r   rÎ   r   r   r   rh   "  r	  z"AlterConstraint.database_backwardsc                 C   s   | j jg | j| j| jdœfS )Nr>  )r1   r3   r¾   r   rŠ   r#   r   r   r   rM   %  s   ýýzAlterConstraint.deconstructc                 C   s   d| j › d| j› �S )NzAlter constraint r4  r!  r#   r   r   r   rl   0  rû   zAlterConstraint.describec                 C   r  rê   r;  r#   r   r   r   rn   3  r  z'AlterConstraint.migration_name_fragmentc                    s:   t |ttfƒr| j|jkr| j|jkr|gS tƒ  ||¡S r   )rE   r<  r¢   rš   r   r+   r,   r.   r0   r   r   r,   7  s   ÿzAlterConstraint.reduce)r3   r4   r5   r   rÒ   r©   r—   r   rT   rc   rh   rM   rl   r«   rn   r,   r6   r   r   r0   r   r<    s    
r<  N))Ú	django.dbr   Ú$django.db.migrations.operations.baser   r   Údjango.db.migrations.stater   Údjango.db.migrations.utilsr   r   Údjango.db.models.optionsr   Údjango.utils.functionalr	   r8   r   r   r   r   r   r   r   r7   r‹   rŒ   rÓ   r’   r”   r–   rí   rò   r™   rŽ   r‘   rž   rŸ   r    r  r¡   r¢   r<  r   r   r   r   Ú<module>   s@    
   %y3&BD7@- 9+