o
    (S-ga­  ã                   @   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'd1S )2é    )Ú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   úe/var/www/html/map_library/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   ó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_forwards^   ó   ÿzCreateModel.database_forwardsc                 C   ó2   |j  || j¡}|  |jj|¡r| |¡ d S d S r   ©rW   rX   r   rY   rZ   r[   Údelete_modelr]   r   r   r   Údatabase_backwardsc   rc   zCreateModel.database_backwardsc                 C   s    d| j  dd¡r
dnd| jf S )NzCreate %smodel %sÚproxyFzproxy Ú )r9   Úgetr   r#   r   r   r   Údescribeh   s   þzCreateModel.describec                 C   s   | j S r   ©r$   r#   r   r   r   Úmigration_name_fragmentn   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)   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¥ˆ 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ƒ�rt| j‡ fdd„| j	D ƒ| j| j
| jd�gS t ˆ tƒ�rS| 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 ƒ�rœ| j ¡ }dD ]}| |¡}|�ru‡ 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"ƒ�rF| jˆ jk�rFt ˆ 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(ƒ�rF‡ fdd„| j dg ¡D ƒ}	t| j| j	i | j¥d|	i¥| j
| jd�gS t)ƒ  *ˆ |¡S )Nrh   F)r8   r9   rA   r:   Úorder_with_respect_toc                    s(   g | ]\}}||ˆ j krˆ jn|f‘qS r   )r   rq   ©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   rl   ©r=   Úfrv   r   r   r?   ÿ   s   € ÿz/CreateModel.reduce.<locals>.<genexpr>.<genexpr>N©rQ   ©r=   r8   rv   r   r   r?   þ   s   € ýÿ
ÿz%CreateModel.reduce.<locals>.<genexpr>c                    s&   g | ]\}}|  ¡ ˆ jkr||f‘qS r   r&   rs   rv   r   r   rw     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{   rv   r   r   r?     s
   € ÿ
ÿz/CreateModel.reduce.<locals>.<setcomp>.<genexpr>r}   r~   rv   r   r   Ú	<setcomp>  s    üþÿz%CreateModel.reduce.<locals>.<setcomp>c                    s(   g | ]\}}|ˆ j krˆ jn||f‘qS r   r   rs   rv   r   r   rw   *  rx   Úindexesc                    ó   g | ]
}|j ˆ j kr|‘qS r   r   )r=   Úindexrv   r   r   rw   H  ó
    þÚconstraintsc                    r„   r   r   )r=   Ú
constraintrv   r   r   rw   j  r†   )+rE   ÚDeleteModelr$   r9   rj   ÚRenameModelÚold_name_lowerr7   r�   r8   rA   r:   ÚAlterModelOptionsÚALTER_OPTION_KEYSÚpopr   ÚAlterModelManagersÚAlterTogetherOptionOperationÚoption_nameÚoption_valueÚAlterOrderWithRespectTorr   r   Úmodel_name_lowerr   rq   r   r   Úcopyr   ÚfilterÚboolr   r€   ÚIndexOperationÚAddIndexr…   ÚRemoveIndexÚAddConstraintrˆ   ÚRemoveConstraintr+   r,   )
r   r/   r(   r9   Úkeyr‘   Úoptionrr   Úoptions_indexesÚoptions_constraintsr0   rv   r   r,   ‰   s¶  ÿÿÿûÿ
ÿ

€ûÿ
ÿûÿ
ÿÿ
þøÿÿÿþøÿÿ
ûÿ	
þøÿ

üþÿ€

þ÷ÿ



û€


þøÿñÿÿÿþþõÿ
þÿþøÿÿÿþþõÿ
þÿþøÿzCreateModel.reduce)NNN)r3   r4   r5   Ú__doc__r   ÚADDITIONÚcategoryÚserialization_expand_argsr   rM   rT   rb   rg   rk   Úpropertyrm   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   r]   r   r   r   rb   Œ  rc   zDeleteModel.database_forwardsc                 C   rU   r   rV   r]   r   r   r   rg   ‘  rc   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   rk   ›  r    zDeleteModel.describec                 C   rª   )Nz	delete_%srl   r#   r   r   r   rm   ž  r%   z#DeleteModel.migration_name_fragmentN)r3   r4   r5   r¡   r   ÚREMOVALr£   rM   rT   rb   rg   r)   rk   r¥   rm   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)rW   rX   r�   rY   rZ   r[   r€   Úalter_db_tablerB   Údb_tableÚrelated_objectsÚrelated_modelr®   r(   Ú
model_nameÚ	get_fieldrq   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   rb   ¿  sP   ý
þÿýÿ
ÿüÙzRenameModel.database_forwardsc                 C   s\   | j | j| _| _ | j| j| _| _|  ||||¡ | j | j| _| _ | j| j| _| _d S r   )r‹   r®   r€   r�   rb   ©r   r(   r^   r_   r`   r   r   r   rg   ï  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   rk     r2   zRenameModel.describec                 C   rÊ   )Núrename_%s_%s)r‹   r®   r#   r   r   r   rm     ó   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,   
  s   ÿþÿ
ÿþzRenameModel.reduce)r3   r4   r5   r¡   r   Ú
ALTERATIONr£   r   r	   r‹   r®   rM   rT   rb   rg   r)   rk   r¥   rm   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,     s
   ÿzModelOptionOperation.reduce)r3   r4   r5   r   rÍ   r£   r,   r6   r   r   r0   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                    ó   || _ tƒ  |¡ d S r   )Útabler+   r   )r   r   rÑ   r0   r   r   r   +  ó   zAlterModelTable.__init__c                 C   r¯   )N©r   rÑ   )r   rÑ   r1   r5   rK   r   r   r   rM   /  r°   zAlterModelTable.deconstructc                 C   ó   |  || jd| ji¡ d S )Nr¶   )Úalter_model_optionsr$   rÑ   rR   r   r   r   rT   6  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   )rW   rX   r   rY   rZ   r[   rµ   rB   r¶   r¼   r½   r¾   r¿   rÀ   )	r   r(   r^   r_   r`   rÂ   rÃ   rÇ   rÈ   r   r   r   rb   9  s(   ýÿ

ý€ôz!AlterModelTable.database_forwardsc                 C   ó   |   ||||¡S r   ©rb   rÉ   r   r   r   rg   M  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   rk   P  s   þþzAlterModelTable.describec                 C   rª   )Nzalter_%s_tablerl   r#   r   r   r   rm   V  r%   z'AlterModelTable.migration_name_fragment)r3   r4   r5   r¡   r   rM   rT   rb   rg   rk   r¥   rm   r6   r   r   r0   r   rÏ   (  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 )ÚAlterModelTableCommentc                    rÐ   r   )Útable_commentr+   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Ô   )NÚdb_table_comment)rÕ   r$   rÙ   rR   r   r   r   rT   g  s   ÿz%AlterModelTableComment.state_forwardsc                 C   sN   |j  || j¡}|  |jj|¡r%|j  || j¡}| ||jj|jj¡ d S d S r   )	rW   rX   r   rY   rZ   r[   Úalter_db_table_commentrB   rÚ   )r   r(   r^   r_   r`   rÂ   rÃ   r   r   r   rb   l  s   ýþz(AlterModelTableComment.database_forwardsc                 C   rÖ   r   r×   rÉ   r   r   r   rg   v  r2   z)AlterModelTableComment.database_backwardsc                 C   ó   d| j › d�S )NzAlter z table commentr   r#   r   r   r   rk   y  r*   zAlterModelTableComment.describec                 C   rÜ   )NÚalter_Ú_table_commentrl   r#   r   r   r   rm   |  s   z.AlterModelTableComment.migration_name_fragment)r3   r4   r5   r   rM   rT   rb   rg   rk   r¥   rm   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   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)
rW   rX   r   rY   rZ   r[   rà   r‘   rB   r   )r   r(   r^   r_   r`   rÂ   rÃ   Úalter_togetherr   r   r   rb   œ  s   ýýz.AlterTogetherOptionOperation.database_forwardsc                 C   rÖ   r   r×   rÉ   r   r   r   rg   §  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))ri   )r‘   r   Úlenr’   r#   r   r   r   rk   °  s
   ýz%AlterTogetherOptionOperation.describec                 C   rÊ   )Nzalter_%s_%s)r$   r‘   r#   r   r   r   rm   ·  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   rb   rg   ræ   rk   r¥   rm   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.
    ry   c                    ó   t ƒ  ||¡ d S r   ©r+   r   )r   r   ry   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.
    rz   c                    rë   r   rì   )r   r   rz   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.rr   c                    rÐ   r   )rr   r+   r   )r   r   rr   r0   r   r   r   ß  rÒ   z AlterOrderWithRespectTo.__init__c                 C   r¯   )N©r   rr   )r   rr   r1   r5   rK   r   r   r   rM   ã  r°   z#AlterOrderWithRespectTo.deconstructc                 C   rá   r   )rÕ   r$   r‘   rr   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   )rW   rX   r   rY   rZ   r[   rB   rr   Úremove_fieldrº   Úhas_defaultÚdefaultÚ	add_field)r   r(   r^   r_   r`   Úto_modelÚ
from_modelrq   r   r   r   rb   ñ  s.   ÿþÿÿþþíz)AlterOrderWithRespectTo.database_forwardsc                 C   s   |   ||||¡ d S r   r×   rÉ   r   r   r   rg     s   z*AlterOrderWithRespectTo.database_backwardsc                 C   s    |   ||¡o| jd u p|| jkS r   )r)   rr   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   rk     s   þz AlterOrderWithRespectTo.describec                 C   rª   )Nzalter_%s_order_with_respect_torl   r#   r   r   r   rm     r%   z/AlterOrderWithRespectTo.migration_name_fragment)r3   r4   r5   r¡   r‘   r   rM   rT   rb   rg   ræ   rk   r¥   rm   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   4  rÒ   zAlterModelOptions.__init__c                 C   r¯   )N)r   r9   )r   r9   r1   r5   rK   r   r   r   rM   8  r°   zAlterModelOptions.deconstructc                 C   s   |  || j| j| j¡ d S r   )rÕ   r$   r9   r�   rR   r   r   r   rT   ?  s   üz AlterModelOptions.state_forwardsc                 C   ó   d S r   r   rÉ   r   r   r   rb   G  ó   z#AlterModelOptions.database_forwardsc                 C   r  r   r   rÉ   r   r   r   rg   J  r  z$AlterModelOptions.database_backwardsc                 C   rª   )NzChange Meta options on %sr   r#   r   r   r   rk   M  r    zAlterModelOptions.describec                 C   rª   )Nzalter_%s_optionsrl   r#   r   r   r   rm   P  r%   z)AlterModelOptions.migration_name_fragment)r3   r4   r5   r¡   r�   r   rM   rT   rb   rg   rk   r¥   rm   r6   r   r   r0   r   rŒ     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   Z  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   a  r³   z!AlterModelManagers.state_forwardsc                 C   r  r   r   rÉ   r   r   r   rb   d  r  z$AlterModelManagers.database_forwardsc                 C   r  r   r   rÉ   r   r   r   rg   g  r  z%AlterModelManagers.database_backwardsc                 C   rª   )NzChange managers on %sr   r#   r   r   r   rk   j  r    zAlterModelManagers.describec                 C   rª   )Nzalter_%s_managersrl   r#   r   r   r   rm   m  r%   z*AlterModelManagers.migration_name_fragment)r3   r4   r5   r¡   r¤   r   rM   rT   rb   rg   rk   r¥   rm   r6   r   r   r0   r   r�   U  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”   u  r%   zIndexOperation.model_name_lowerN)r3   r4   r5   r‘   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   )rW   rX   r¹   rY   rZ   r[   r  r…   r]   r   r   r   rb   ‹  ó   ÿzAddIndex.database_forwardsc                 C   s6   |j  || j¡}|  |jj|¡r| || j¡ d S d S r   )rW   rX   r¹   rY   rZ   r[   Úremove_indexr…   r]   r   r   r   rg   �  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   rw   ¤  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   rk      s   ýýzAddIndex.describec                 C   ó   d| j | jj ¡ f S ©Nz%s_%s)r”   r…   r   r"   r#   r   r   r   rm   ­  ó   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_t| j| jd�gS t	ƒ  
||¡S r
  )rE   rš   r…   r   ÚRenameIndexr€   r�   r™   r¹   r+   r,   r.   r0   r   r   r,   ±  s   
zAddIndex.reduce)r3   r4   r5   r¡   r   r¢   r£   r   rT   rb   rg   rM   rk   r¥   rm   r,   r6   r   r   r0   r   r™   z  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   )rW   rX   r¹   rY   rZ   r[   r   r”   Úget_index_by_namer   r	  )r   r(   r^   r_   r`   ra   Úfrom_model_stater…   r   r   r   rb   Æ  ó   ýzRemoveIndex.database_forwardsc                 C   óP   |j  || j¡}|  |jj|¡r&|j|| jf }| | j	¡}| 
||¡ d S d S r   )rW   rX   r¹   rY   rZ   r[   r   r”   r  r   r  )r   r(   r^   r_   r`   ra   Úto_model_stater…   r   r   r   rg   Í  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   rk   ß  r2   zRemoveIndex.describec                 C   ó   d| j | j ¡ f S ©Nzremove_%s_%s©r”   r   r"   r#   r   r   r   rm   â  ó   z#RemoveIndex.migration_name_fragmentN)r3   r4   r5   r¡   r   r«   r£   r   rT   rb   rg   rM   rk   r¥   rm   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=   rq   ©r÷   r   r   rw   '  s    ÿz1RenameIndex.database_forwards.<locals>.<listcomp>TF)Úcolumn_namesr…   Úuniquer
   z.Found wrong number (%s) of indexes for %s(%s).r  r   r$  )rW   rX   r¹   rY   rZ   r[   r#  Ú_constraint_namesrç   r   rB   r¶   r  r   r%  r”   r  r€   r   r�   r'  )r   r(   r^   r_   r`   ra   ÚcolumnsÚmatching_index_nameÚ	old_indexr  r  Ú	new_indexr   r)  r   rb      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�   rb   rÉ   r   r   r   rg   H  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 z on z to zRename unnamed index for )r€   r¹   r�   r#  r#   r   r   r   rk   [  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   rm   e  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,   o  s   ÿÿüÿzRenameIndex.reduce)NN)r3   r4   r5   r¡   r   rÍ   r£   r   r	   r‹   r®   rM   rT   rb   rg   rk   r¥   rm   r,   r6   r   r   r0   r   r  ç  s     


(

	r  c                       sb   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   )rW   rX   r¹   rY   rZ   r[   r2  rˆ   r]   r   r   r   rb   Œ  r  zAddConstraint.database_forwardsc                 C   r  r   )rW   rX   r¹   rY   rZ   r[   Úremove_constraintrˆ   r]   r   r   r   rg   ‘  r  z AddConstraint.database_backwardsc                 C   ó   | j jg | j| jdœfS )Nr1  )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   rk      s   þzAddConstraint.describec                 C   r  r  )r”   rˆ   r   r"   r#   r   r   r   rm   ¦  r  z%AddConstraint.migration_name_fragmentc                    s6   t |tƒr| j|jkr| jj|jkrg S tƒ  ||¡S r   )rE   rœ   r”   rˆ   r   r+   r,   r.   r0   r   r   r,   ª  s   ÿzAddConstraint.reduce)r3   r4   r5   r   r¢   r£   r‘   r   rT   rb   rg   rM   rk   r¥   rm   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   )r3  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   )rW   rX   r¹   rY   rZ   r[   r   r”   Úget_constraint_by_namer   r3  )r   r(   r^   r_   r`   ra   r  rˆ   r   r   r   rb   ¿  r  z"RemoveConstraint.database_forwardsc                 C   r  r   )rW   rX   r¹   rY   rZ   r[   r   r”   r6  r   r2  )r   r(   r^   r_   r`   ra   r  rˆ   r   r   r   rg   Æ  r  z#RemoveConstraint.database_backwardsc                 C   r4  r  )r1   r3   r¹   r   r#   r   r   r   rM   Í  r5  zRemoveConstraint.deconstructc                 C   rÊ   )Nz"Remove constraint %s from model %sr  r#   r   r   r   rk   ×  r2   zRemoveConstraint.describec                 C   r  r   r!  r#   r   r   r   rm   Ú  r"  z(RemoveConstraint.migration_name_fragmentN)r3   r4   r5   r   r«   r£   r‘   r   rT   rb   rg   rM   rk   r¥   rm   r   r   r   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   Ú<module>   s<    
  W%y3&AD7@- 3