Ë
    q^ëin_  ã                   ó‚   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d d	lmZ  G d
„ de«      Zy)é    N)ÚDecimal)ÚApps)ÚNotSupportedError)ÚBaseDatabaseSchemaEditor)Ú	Statement)Ústrip_quotes)ÚUniqueConstraint)Úatomicc                   óÈ   ‡ — e Zd ZdZdZdZeZdZdZdZ	ˆ fd„Z
ˆ fd„Zd	„ Zd
„ Z	 dd„Z	 dˆ fd„	Zdˆ fd„	Z	 dd„Zdˆ fd„	Zˆ fd„Zˆ fd„Z	 dd„Zd„ Zˆ fd„Zˆ fd„Zd„ Zˆ xZS )ÚDatabaseSchemaEditorzDROP TABLE %(table)sNzEREFERENCES %(to_table)s (%(to_column)s) DEFERRABLE INITIALLY DEFERREDz,ALTER TABLE %(table)s DROP COLUMN %(column)sz7CREATE UNIQUE INDEX %(name)s ON %(table)s (%(columns)s)zDROP INDEX %(name)sc                 ój   •— | j                   j                  «       st        d«      ‚t        ‰| �  «       S )NzüSQLite schema editor cannot be used while foreign key constraint checks are enabled. Make sure to disable them before entering a transaction.atomic() context because SQLite does not support disabling them in the middle of a multi-statement transaction.)Ú
connectionÚdisable_constraint_checkingr   ÚsuperÚ	__enter__)ÚselfÚ	__class__s    €úR/var/www/eb/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/schema.pyr   zDatabaseSchemaEditor.__enter__   s7   ø€ ð �‰×:Ñ:Ô<Ü#ð1óð ô ‰wÑ Ó"Ð"ó    c                 ó�   •— | j                   j                  «        t        ‰| �  |||«       | j                   j	                  «        y ©N)r   Úcheck_constraintsr   Ú__exit__Úenable_constraint_checking)r   Úexc_typeÚ	exc_valueÚ	tracebackr   s       €r   r   zDatabaseSchemaEditor.__exit__%   s4   ø€ Ø�‰×)Ñ)Ô+Ü‰Ñ˜ 9¨iÔ8Ø�‰×2Ñ2Õ4r   c                 óà  — 	 dd l }|j                  |«      }t	        |t
        «      rt        t        |«      «      S t	        |t        t        t        f«      rt        |«      S t	        |t        «      rd|j                  dd«      z  S |€yt	        |t        t        t        f«      rd|j                  «       z  S t        d|›dt!        |«      ›�«      ‚# t        $ r Y ŒÅj                  $ r Y ŒÕw xY w)	Nr   z'%s'ú'z''ÚNULLzX'%s'zCannot quote parameter value z	 of type )Úsqlite3ÚadaptÚImportErrorÚProgrammingErrorÚ
isinstanceÚboolÚstrÚintr   ÚfloatÚreplaceÚbytesÚ	bytearrayÚ
memoryviewÚhexÚ
ValueErrorÚtype)r   Úvaluer!   s      r   Úquote_valuez DatabaseSchemaEditor.quote_value*   s×   € ð	Ûà—M‘M %Ó(ˆEô �eœTÔ"Ü”s˜5“z“?Ð"Ü˜¤¬´Ð4Ô5Ü�u“:ÐÜ˜œsÔ#Ø˜EŸM™M¨#¨tÓ4Ñ4Ð4Øˆ]ØÜ˜¤¤y´*Ð=Ô>ð ˜UŸY™Y›[Ñ(Ð(åÚ@EÄtÈEÄ{ÐSóð øô' ò 	ÙØ×'Ñ'ò 	Ùð	ús   ‚C Ã	C-ÃC-Ã,C-c                 ó$   — | j                  |«      S r   )r2   )r   r1   s     r   Úprepare_defaultz$DatabaseSchemaEditor.prepare_defaultI   s   € Ø×Ñ Ó&Ð&r   c                 óœ  — | j                   j                  «       5 }| j                   j                  j                  |«      D ]t  }|r|j                  |k(  rŒ| j                   j                  j                  ||j                  «      }|j                  «       D ]  \  }}||k(  sŒ|�||k(  sŒ  ddd«       y Œv 	 ddd«       y# 1 sw Y   yxY w)a  
        Return whether or not the provided table name is referenced by another
        one. If `column_name` is specified, only references pointing to that
        column are considered. If `ignore_self` is True, self-referential
        constraints are ignored.
        NTF)r   ÚcursorÚintrospectionÚget_table_listÚnameÚget_relationsÚvalues)	r   Ú
table_nameÚcolumn_nameÚignore_selfr6   Úother_tableÚ	relationsÚconstraint_columnÚconstraint_tables	            r   Ú_is_referenced_by_fk_constraintz4DatabaseSchemaEditor._is_referenced_by_fk_constraintL   sÑ   € ð �_‰_×#Ñ#Ó%ð 	$¨Ø#Ÿ™×<Ñ<×KÑKÈFÓSò 
$�Ù ;×#3Ñ#3°zÒ#AØØ ŸO™O×9Ñ9×GÑGØ˜K×,Ñ,ó�	ð <E×;KÑ;KÓ;Mò $Ñ7Ð%Ð'7Ø'¨:Ó5Ø#Ð+Ð/@ÀKÓ/Oá#÷	$ð 	$ñ$ñ
$÷	$ð ÷	$ð ús   ›BCÂ"CÂ*CÂ5CÃCc                 ób  •— | j                   j                  j                  s}|r{| j                  |«      rj| j                   j                  rt        d|z  «      ‚| j                   j                  «        t        ‰| �!  |||«       | j                   j                  «        y t        ‰| �!  |||«       y )Nz°Renaming the %r table while in a transaction is not supported on SQLite < 3.26 because it would break referential integrity. Try adding `atomic = False` to the Migration class.)
r   ÚfeaturesÚ!supports_atomic_references_renamerC   Úin_atomic_blockr   r   r   Úalter_db_tabler   )r   ÚmodelÚold_db_tableÚnew_db_tableÚdisable_constraintsr   s        €r   rH   z#DatabaseSchemaEditor.alter_db_tablec   s—   ø€ ð —‘×(Ñ(×JÒJÙ#Ø×4Ñ4°\ÔBà�‰×.Ò.Ü'ðYð #ñ#óð ð �O‰O×6Ñ6Ô8Ü‰GÑ" 5¨,¸ÔEØ�O‰O×7Ñ7Õ9ä‰GÑ" 5¨,¸ÕEr   c                 ór  •— | j                  ||«      sy |j                  }|j                  j                  }|j	                  «       \  }}|j                  |k7  �r§| j
                  j                  j                  �s†| j                  ||d¬«      �rq| j
                  j                  r&t        d|j                  j                  ›d|›d�«      ‚t        | j
                  j                  «      5  t        ‰| �9  ||||¬«       | j
                  j                  «       5 }	|	j!                  d«      j#                  «       d   }
|	j!                  d	«       d
|z  }|j	                  «       d   }||z  }||z  }|	j!                  d||f«       |	j!                  d|
dz   z  «       |	j!                  d«       |	j!                  d«       d d d «       d d d «       | j
                  j                  «       5 }	|	j!                  d«       d d d «       y t        ‰| �9  ||||¬«       y # 1 sw Y   ŒZxY w# 1 sw Y   Œ^xY w# 1 sw Y   y xY w)NT)r>   zRenaming the ú.z¢ column while in a transaction is not supported on SQLite < 3.26 because it would break referential integrity. Try adding `atomic = False` to the Migration class.)ÚstrictzPRAGMA schema_versionr   zPRAGMA writable_schema = 1z REFERENCES "%s" ("%%s") é   z3UPDATE sqlite_master SET sql = replace(sql, %s, %s)zPRAGMA schema_version = %dzPRAGMA writable_schema = 0zPRAGMA integrity_checkÚVACUUM)Ú_field_should_be_alteredr9   Ú_metaÚdb_tableÚget_attname_columnr   rE   rF   rC   rG   r   r
   Úaliasr   Úalter_fieldr6   ÚexecuteÚfetchone)r   rI   Ú	old_fieldÚ	new_fieldrO   Úold_field_namer<   Ú_Úold_column_namer6   Úschema_versionÚreferences_templateÚnew_column_nameÚsearchÚreplacementr   s                  €r   rW   z DatabaseSchemaEditor.alter_fieldz   s  ø€ Ø×,Ñ,¨Y¸	ÔBØØ"Ÿ™ˆØ—[‘[×)Ñ)ˆ
Ø&×9Ñ9Ó;Ñˆˆ?à�N‰N˜nÓ,Ø—O‘O×,Ñ,×NÓNØ×4Ñ4Ø˜O¸ð 5õ ð �‰×.Ò.Ý'ð —{‘{×+Ó+ª^ð=óð ô ˜Ÿ™×-Ñ-Ó.ñ =Ü‘Ñ# E¨9°iÈÐ#ÔOð —_‘_×+Ñ+Ó-ð =°Ø%+§^¡^Ð4KÓ%L×%UÑ%UÓ%WØñ&�Nð —N‘NÐ#?Ô@Ø*EÈ
Ñ*RÐ'Ø&/×&BÑ&BÓ&DÀQÑ&G�OØ0°?ÑB�FØ"5¸Ñ"G�KØ—N‘NØMØ Ð-ôð —N‘NÐ#?À>ÐTUÑCUÑ#VÔWØ—N‘NÐ#?Ô@ð —N‘NÐ#;Ô<÷%=÷=ð4 —‘×'Ñ'Ó)ð )¨VØ—‘˜xÔ(÷)ð )ô ‰GÑ  y°)ÀFÐÕK÷1=ð =ú÷=ð =ú÷4)ð )ús1   Ã+.H!ÄB#HÆ<H!Ç&H-ÈH	ÈH!È!H*È-H6c                 óÌ  ‡ ‡‡— ˆfd„}‰j                   j                  D �ci c]'  }|j                   ||«      r|j                  «       n|“Œ) }}‰j                   j                  D �ci c](  }|j                  ‰ j                  |j                  «      “Œ* }}i }	d}
|xs g }t        |dd«      st        d„ |D «       «      rit        |j                  «       «      D ]M  \  Š}|j                  sŒt        ˆfd„|D «       «      rŒ(d|_
        |}
|j                  sŒ>|‰= ||j                  = ŒO |rT|||j                  <   |j                  s9|j                  r-‰ j                  ‰ j                  |«      «      ||j                  <   |D ]ö  }|\  }}|j!                  |j                  d«       |j!                  |j                  d«       |||j                  <   |j"                  r[|j"                  sOd‰ j                  |j                  «      ‰ j                  ‰ j                  |«      «      dœz  }|||j                  <   n(‰ j                  |j                  «      ||j                  <   |j                  |	|j                  <   Œø |ru||j                  = ||j                  = |j                  rO|j$                  j&                  j                   j                  r%‰ j)                  |j$                  j&                  «      S t+        «       }‰j                   j,                  D ��cg c]"  }|D �cg c]  }|	j/                  ||«      ‘Œ c}‘Œ$ }}}‰j                   j0                  D ��cg c]"  }|D �cg c]  }|	j/                  ||«      ‘Œ c}‘Œ$ }}}‰j                   j2                  }|r(|D �cg c]  }|j                  |j4                  vsŒ|‘Œ }}t        ‰j                   j6                  «      }t9        j:                  |«      }‰j                   j<                  ‰j                   j>                  |||||d	œ}tA        d
d|«      }||d
<   ‰jB                  |d<   tA        ‰j                   jD                  ‰jF                  |«       t9        j:                  |«      }‰j                   j<                  dtI        ‰j                   j>                  «      z  |||||d	œ}tA        d
d|«      }||d
<   ‰jB                  |d<   tA        d‰j                   jD                  z  ‰jF                  |«      }‰ jK                  |«       ‰ jM                  d‰ j                  |j                   j>                  «      ›ddjO                  ˆ fd„|D «       «      ›ddjO                  |jQ                  «       «      ›d‰ j                  ‰j                   j>                  «      ›�«       ‰ j)                  ‰d¬«       ‰ jS                  ||j                   j>                  ‰j                   j>                  d¬«       ‰ jT                  D ]  }‰ jM                  |«       Œ g ‰ _*        |
rd|
_
        yyc c}w c c}w c c}w c c}}w c c}w c c}}w c c}w )a|  
        Shortcut to transform a model from old_model into new_model

        This follows the correct procedure to perform non-rename or column
        addition operations based on SQLite's documentation

        https://www.sqlite.org/lang_altertable.html#caution

        The essential steps are:
          1. Create a table with the updated definition called "new__app_model"
          2. Copy the data from the existing "app_model" table to the new table
          3. Drop the "app_model" table
          4. Rename the "new__app_model" table to "app_model"
          5. Restore any index of the previous "app_model" table.
        c                 óP   •— | j                   xr | j                  j                  ‰u S r   )Úis_relationÚremote_fieldrI   )ÚfrI   s    €r   Úis_self_referentialz?DatabaseSchemaEditor._remake_table.<locals>.is_self_referentialÅ   s!   ø€ Ø—=‘=ÒB Q§^¡^×%9Ñ%9¸UÐ%BÐBr   NÚprimary_keyFc              3   ó<   K  — | ]  \  }}t        |d d«      –— Œ y­w)rj   FN)Úgetattr)Ú.0r]   r[   s      r   ú	<genexpr>z5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>Ù   s"   è ø€ ò >
Ù9E¸¸IŒG�I˜}¨e×4ñ>
ùs   ‚c              3   óB   •K  — | ]  \  }}‰|j                   k(  –— Œ y ­wr   )r9   )rm   r]   r[   r9   s      €r   rn   z5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>Ý   s(   øè ø€ ò 1ñ %˜˜9ð ˜IŸN™NÕ*ñ1ùs   ƒzcoalesce(%(col)s, %(default)s))ÚcolÚdefault)Ú	app_labelrT   Úunique_togetherÚindex_togetherÚindexesÚconstraintsÚappsÚMeta© Ú
__module__znew__%szNew%súINSERT INTO ú (ú, c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   )Ú
quote_name)rm   Úxr   s     €r   rn   z5DatabaseSchemaEditor._remake_table.<locals>.<genexpr>R  s   øè ø€ Ò>°˜$Ÿ/™/¨!×,Ñ>ùs   ƒú	) SELECT ú FROM )Úhandle_autom2m)rL   T)+rS   Úlocal_concrete_fieldsr9   ÚcloneÚcolumnr   rl   ÚanyÚlistÚitemsrj   Úauto_createdÚmany_to_manyÚconcreter4   Úeffective_defaultÚpopÚnullrg   ÚthroughÚdelete_modelr   rs   Úgetrt   ru   Úfieldsrv   ÚcopyÚdeepcopyrr   rT   r0   rz   Úobject_nameÚ	__bases__r   Úcreate_modelrX   Újoinr;   rH   Údeferred_sql)r   rI   Úcreate_fieldÚdelete_fieldÚalter_fieldsri   rh   ÚbodyÚmappingÚrename_mappingÚrestore_pk_fieldÚfieldrW   rZ   r[   Úcase_sqlrw   ÚuniqueÚnrs   Úindexrt   ru   rv   Ú	body_copyÚmeta_contentsÚmetaÚ	new_modelÚsqlr9   s   ``                           @r   Ú_remake_tablez"DatabaseSchemaEditor._remake_table¯   sÔ  ú€ ô,	Cð —[‘[×6Ñ6ö
àð �F‰FÑ!4°QÔ!7�A—G‘G”I¸QÑ>ð
ˆð 
ð —[‘[×6Ñ6ö
àð �H‰H�d—o‘o a§h¡hÓ/Ñ/ð
ˆð 
ð
 ˆð  ÐØ#Ò) rˆÜ�< °Ô6¼#ñ >
ØIUô>
ô ;
ô  $ D§J¡J£LÓ1ò 2‘��eØ×$Ó$¬Só 1ð )5ô	1õ .ð ).�EÔ%Ø',Ð$Ø×)Ó)Ø  ˜JØ# E§L¡LÑ1ð2ñ Ø&2ˆD�×"Ñ"Ñ#à×,Ò,°×1FÒ1FØ/3×/CÑ/CØ×*Ñ*¨<Ó8ó0�˜×+Ñ+Ñ,ð (ò 	<ˆKØ#.Ñ ˆI�yØ�H‰H�Y—^‘^ TÔ*Ø�K‰K˜	×(Ñ(¨$Ô/Ø#,ˆD�—‘Ñ Ø�~Š~ i§n¢nØ;ØŸ?™?¨9×+;Ñ+;Ó<Ø#×3Ñ3°D×4JÑ4JÈ9Ó4UÓVñ?ñ �ð -5�˜	×(Ñ(Ò)à,0¯O©O¸I×<LÑ<LÓ,M�˜	×(Ñ(Ñ)Ø-6¯^©^ˆN˜9Ÿ>™>Ò*ð	<ñ Ø�\×&Ñ&Ð'Ø˜×+Ñ+Ð,ð ×)Ò)Ø ×-Ñ-×5Ñ5×;Ñ;×HÒHà×(Ñ(¨×)BÑ)B×)JÑ)JÓKÐKä‹vˆð  Ÿ+™+×5Ñ5÷
àð 06Ö6¨!ˆ^×Ñ  1Õ%Ô6ð
ˆñ 
ð Ÿ™×3Ñ3÷
àð 05Ö5¨!ˆ^×Ñ  1Õ%Ô5ð
ˆñ 
ð
 —+‘+×%Ñ%ˆÙà#*öØ¨l×.?Ñ.?ÀuÇ|Á|Ò.S’ðˆGð ô ˜5Ÿ;™;×2Ñ2Ó3ˆô
 —M‘M $Ó'ˆ	ð Ÿ™×.Ñ.ØŸ™×,Ñ,Ø.Ø,ØØ&Øñ
ˆô �F˜B Ó.ˆØ ˆ	�&ÑØ"'×"2Ñ"2ˆ	�,ÑÜˆU�[‰[×$Ñ$ e§o¡o°yÔAô —M‘M $Ó'ˆ	àŸ™×.Ñ.Ø!¤L°·±×1EÑ1EÓ$FÑFØ.Ø,ØØ&Øñ
ˆô �F˜B Ó.ˆØ ˆ	�&ÑØ"'×"2Ñ"2ˆ	�,ÑÜ˜ 5§;¡;×#:Ñ#:Ñ:¸E¿O¹OÈYÓWˆ	ð 	×Ñ˜)Ô$ð 	�Šð —‘ 	§¡× 8Ñ 8Õ9Ø—	‘	Ó>°gÔ>Õ>Ø—	‘	˜'Ÿ.™.Ó*Õ+Ø—‘ §¡× 4Ñ 4Ô5ðô	
ð 	×Ñ˜%°ÐÔ6ð 	×ÑØØ�O‰O×$Ñ$Ø�K‰K× Ñ Ø %ð	 	ô 	
ð ×$Ñ$ò 	ˆCØ�L‰L˜Õð	àˆÔáØ+/ÐÕ(ð ùò
ùò
ùò@ 7ùó
ùò 6ùó
ùòsG   ¡,YÁ'-YÌ	YÌYÌ5YÍ	YÍYÍ8YÎY!Î:Y!ÙYÙYc                 óˆ  •— |rt         ‰| �  |«       y | j                  | j                  d| j	                  |j
                  j                  «      iz  «       t        | j                  «      D ]T  }t        |t        «      sŒ|j                  |j
                  j                  «      sŒ:| j                  j                  |«       ŒV y )NÚtable)r   r‘   rX   Úsql_delete_tabler   rS   rT   rˆ   rš   r%   r   Úreferences_tableÚremove)r   rI   rƒ   r«   r   s       €r   r‘   z!DatabaseSchemaEditor.delete_modelk  s¢   ø€ ÙÜ‰GÑ  Õ'ð �L‰LØ×%Ñ%à˜TŸ_™_¨U¯[©[×-AÑ-AÓBðñôô ˜D×-Ñ-Ó.ò 2�Ü˜c¤9Õ-°#×2FÑ2FØ—K‘K×(Ñ(õ3ð ×%Ñ%×,Ñ,¨SÕ1ñ	2r   c                 óp  •— |j                   rP|j                  j                  j                  j                  r&| j                  |j                  j                  «       y|j                  s)|j                  s|j                  r| j                  |«      �| j                  ||¬«       yt        ‰| �1  ||«       y)zCreate a field on a model.N)r›   )r‹   rg   r�   rS   rŠ   r˜   rj   r¤   r�   r�   r¬   r   Ú	add_field©r   rI   r¢   r   s      €r   r³   zDatabaseSchemaEditor.add_field}  s�   ø€ ð ×Ò %×"4Ñ"4×"<Ñ"<×"BÑ"B×"OÒ"OØ×Ñ˜e×0Ñ0×8Ñ8Õ9ð ×ÒØ�|Š|ð
 —
’
Ø×%Ñ% eÓ,Ð8à×Ñ˜u°5ÐÕ9ä‰GÑ˜e UÕ+r   c                 ó   •— |j                   rQ|j                  j                  j                  j                  r&| j                  |j                  j                  «       yy| j                  j                  j                  rM|j                  sA|j                  s5|j                  s)|j                  r|j                  st        ‰| �9  ||«       y|j                  | j                  ¬«      d   €y| j!                  ||¬«       y)z…
        Remove a field from a model. Usually involves deleting a column,
        but for M2Ms may involve deleting a table.
        )r   r0   N)rœ   )r‹   rg   r�   rS   rŠ   r‘   r   rE   Úcan_alter_table_drop_columnrj   r¤   Údb_indexÚdb_constraintr   Úremove_fieldÚdb_parametersr¬   r´   s      €r   r¹   z!DatabaseSchemaEditor.remove_field’  sË   ø€ ð ×Òà×!Ñ!×)Ñ)×/Ñ/×<Ò<Ø×!Ñ! %×"4Ñ"4×"<Ñ"<Õ=ð =ð �O‰O×$Ñ$×@Ò@ð ×%Ò%Ø—L’LØ—N’NØ×'Ò'¨E×,?Ò,?ä‰GÑ  ¨Õ.ð ×"Ñ"¨d¯o©oÐ"Ó>¸vÑFÐNØØ×Ñ˜u°5ÐÕ9r   c	                 óô  — | j                   j                  j                  r¥|j                  |j                  k7  rŒ| j	                  ||«      | j	                  ||«      k(  rg|j
                  r|j                  sO|j
                  r|j                  s7| j                  | j                  |j                  j                  |||«      «      S | j                  |||fg¬«       |j                  d«      }	|j                  d«      }
|j                  �rn||k7  s|	|
k7  �rbt        «       }|j                  j                  }|j                   D ]�  }|j"                  |k(  rŒ|j$                  s6|j&                  |j(                  k(  sŒ9|j+                  |j"                  «       ŒU|j,                  sŒb|j.                  j                  j0                  sŒƒ|j+                  |j.                  «       ŒŸ |j,                  rq|j$                  D ]b  }|j"                  |k(  rŒ|j
                  j.                  j                  j0                  sŒ>|j+                  |j
                  j.                  «       Œd |D ]  }| j                  |«       Œ yyy)z3Perform a "physical" (non-ManyToMany) field update.©r�   Ú	collationN)r   rE   Úcan_alter_table_rename_columnr†   Ú
column_sqlrg   r¸   rX   Ú_rename_field_sqlrS   rT   r¬   r’   r¤   ÚsetrI   Úrelated_objectsÚrelated_modelr‹   Ú
field_namer9   Úaddrj   r�   rŠ   )r   rI   rZ   r[   Úold_typeÚnew_typeÚold_db_paramsÚnew_db_paramsrO   Úold_collationÚnew_collationÚrelated_modelsÚoptsrg   r‹   rÃ   s                   r   Ú_alter_fieldz!DatabaseSchemaEditor._alter_field®  s$  € ð �O‰O×$Ñ$×BÒBØ× Ñ  I×$4Ñ$4Ò4Ø—‘  yÓ1°T·_±_ÀUÈIÓ5VÒVà×&Ò&Ø×+Ò+Ø×)Ò)Ø×+Ò+ð —<‘<Ø×&Ñ&Ø—K‘K×(Ñ(¨)°YÀóóð ð 	×Ñ˜5°¸IÐ0FÐ/GÐÔHà%×)Ñ)¨+Ó6ˆØ%×)Ñ)¨+Ó6ˆØ×ÓØ˜Ò  M°]Ó$Bä ›UˆNØ—?‘?×(Ñ(ˆDØ $× 4Ñ 4ò =�à×-Ñ-°Ò6ØØ#×0Ò0Ø#×.Ñ.°)·.±.Ó@Ø&×*Ñ*¨<×+EÑ+EÕFØ×*Ó*¨|×/CÑ/C×/IÑ/I×/VÓ/VØ"×&Ñ& |×';Ñ';Õ<ð=ð ×$Ò$Ø$(×$5Ñ$5ò N�Là#×1Ñ1°UÒ:Ø Ø#×0Ñ0×8Ñ8×>Ñ>×KÓKØ&×*Ñ*¨<×+DÑ+D×+LÑ+LÕMðNð "0ò 2�Ø×"Ñ" =Õ1ñ2ð) %Cð r   c                 óF  — |j                   j                  j                  j                  |j                   j                  j                  j                  k(  �r| j	                  |j                   j                  |j                   j                  j                  j                  |j                  «       «      |j                   j                  j                  j                  |j                  «       «      f|j                   j                  j                  j                  |j                  «       «      |j                   j                  j                  j                  |j                  «       «      fg¬«       y| j                  |j                   j                  «       | j                  d| j                  |j                   j                  j                  j                  «      ›ddj                  d|j                  «       |j                  «       g«      ›ddj                  d|j                  «       |j                  «       g«      ›d| j                  |j                   j                  j                  j                  «      ›�«       | j                  |j                   j                  «       y)	z*Alter M2Ms to repoint their to= endpoints.r¼   Nr{   r|   r}   Úidr�   r‚   )rg   r�   rS   rT   r¬   Ú	get_fieldÚm2m_reverse_field_nameÚm2m_field_namer˜   rX   r   r™   Úm2m_column_nameÚm2m_reverse_namer‘   )r   rI   rZ   r[   rO   s        r   Ú_alter_many_to_manyz(DatabaseSchemaEditor._alter_many_to_manyé  s  € ð ×"Ñ"×*Ñ*×0Ñ0×9Ñ9Ø×%Ñ%×-Ñ-×3Ñ3×<Ñ<ó=ð
 ×ÑØ×&Ñ&×.Ñ.ð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×<Ñ<Ó>óð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×<Ñ<Ó>óð
ð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×4Ñ4Ó6óð "×.Ñ.×6Ñ6×<Ñ<×FÑFØ%×4Ñ4Ó6óð
ðð ô ð6 ð 	×Ñ˜)×0Ñ0×8Ñ8Ô9à�Šð —‘ 	× 6Ñ 6× >Ñ >× DÑ D× MÑ MÕNØ—	‘	àØ!×1Ñ1Ó3Ø!×2Ñ2Ó4ðõð —	‘	àØ!×1Ñ1Ó3Ø!×2Ñ2Ó4ðõð —‘ 	× 6Ñ 6× >Ñ >× DÑ D× MÑ MÔNð#ô	
ð, 	×Ñ˜)×0Ñ0×8Ñ8Õ9r   c                 óÊ   •— t        |t        «      rA|j                  s$|j                  s|j                  s|j
                  rt        ‰| �  ||«       y | j                  |«       y r   )	r%   r	   Ú	conditionÚcontains_expressionsÚincludeÚ
deferrabler   Úadd_constraintr¬   ©r   rI   Ú
constraintr   s      €r   rÜ   z#DatabaseSchemaEditor.add_constraint)  sO   ø€ Ü�jÔ"2Ô3Ø× Ò Ø×.Ò.Ø×!Ò!Ø×$Ò$ä‰GÑ" 5¨*Õ5à×Ñ˜uÕ%r   c                 óÊ   •— t        |t        «      rA|j                  s$|j                  s|j                  s|j
                  rt        ‰| �  ||«       y | j                  |«       y r   )	r%   r	   rØ   rÙ   rÚ   rÛ   r   Úremove_constraintr¬   rÝ   s      €r   rà   z&DatabaseSchemaEditor.remove_constraint4  sO   ø€ Ü�jÔ"2Ô3Ø× Ò Ø×.Ò.Ø×!Ò!Ø×$Ò$ä‰GÑ% e¨ZÕ8à×Ñ˜uÕ%r   c                 ó   — d|z   S )NzCOLLATE ry   )r   r½   s     r   Ú_collate_sqlz!DatabaseSchemaEditor._collate_sql?  s   € Ø˜IÑ%Ð%r   )NF)T)F)NNN)Ú__name__rz   Ú__qualname__r¯   Úsql_create_fkÚsql_create_inline_fkÚsql_create_column_inline_fkÚsql_delete_columnÚsql_create_uniqueÚsql_delete_uniquer   r   r2   r4   rC   rH   rW   r¬   r‘   r³   r¹   rÎ   rÖ   rÜ   rà   râ   Ú__classcell__)r   s   @r   r   r      s    ø„ Ø-ÐØ€MàOð ð #7ÐØFÐØQÐØ-Ðô#ô5ò
ò>'ð 9>óð0 FJõFõ.3Lðl IMóz0õx2ô$,ô*:ðJ ó92òv>:ô@	&ô	&ö&r   r   )r”   Údecimalr   Údjango.apps.registryr   Ú	django.dbr   Údjango.db.backends.base.schemar   Ú!django.db.backends.ddl_referencesr   Údjango.db.backends.utilsr   Údjango.db.modelsr	   Údjango.db.transactionr
   r   ry   r   r   ú<module>rô      s/   ðÛ Ý å %Ý 'Ý CÝ 7Ý 1Ý -Ý (ôs&Ð3õ s&r   