
    h]-                         S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJr  S S	KJr  S S
KJr  S SKJr   " S S5      r " S S5      rSrSrg)    N)import_module)get_version)apps)SettingsReference)
migrations)MigrationLoader)
Serializerserializer_factory)get_func_args)
module_dir)nowc                   <    \ rS rSrS
S jrS rS rS rS rS r	Sr
g	)OperationWriter   c                 *    Xl         / U l        X l        g N)	operationbuffindentation)selfr   r   s      M/var/www/html/env/lib/python3.13/site-packages/django/db/migrations/writer.py__init__OperationWriter.__init__   s    "	&    c                 
  ^ ^
 U
U 4S jn[        5       m
T R                  R                  5       u  p#n[        T R                  R                  5      n[        [        US 5      T R                  R                  :X  a  T R                  SU-  5        OiT
R                  ST R                  R                  R                  -  5        T R                  T R                  R                  R                  < SU< S35        T R                  5         [        U5       H  u  pgUnXV   n	U" X5        M     [        U5      nXVS   H  n	X;   d  M
  XI   nU" X5        M     T R                  5         T R                  S5        T R                  5       T
4$ )Nc                 6  > U TR                   R                  ;   GaM  [        U[        [        [
        45      (       Ga,  [        U[
        5      (       Ga7  TR                  SU -  5        TR                  5         UR                  5        H  u  p#[        R                  U5      u  pE[        R                  U5      u  pgUR                  5       n[        U5      S:  aP  TR                  U< SUS   < 35        USS  H  n	TR                  U	5        M     TR                  SUS   -  5        OTR                  U< SU< S35        TR                  U5        TR                  U5        M     TR                  5         TR                  S5        g TR                  S	U -  5        TR                  5         U H  n
[        R                  U
5      u  pgUR                  5       n[        U5      S:  a5  US S  H  n	TR                  U	5        M     TR                  SUS   -  5        OTR                  SU-  5        TR                  U5        M     TR                  5         TR                  S
5        g [        R                  U5      u  pgUR                  5       n[        U5      S:  aP  TR                  U < SUS   < 35        USS  H  n	TR                  U	5        M     TR                  SUS   -  5        OTR                  U < SU< S35        TR                  U5        g )Nz%s={   z: r   z%s,,z},z%s=[z],=)r   serialization_expand_args
isinstancelisttupledictfeedindentitemsMigrationWriter	serialize
splitlineslenupdateunindent)	_arg_name
_arg_valuekeyvalue
key_stringkey_imports
arg_stringarg_importsargsargitemimportsr   s              r   _write)OperationWriter.serialize.<locals>._write   sq   DNNDDDT5$/J J j$//IIfy01KKM&0&6&6&8
2A2K2KC2P/
2A2K2KE2R/
)446t9q= II*d1g&FG'+Abz $		# (2 IIed2h&67 II:z&JK{3{3 '9 MMOIIdOIIfy01KKM *2A2K2KD2Q/
)446t9q='+CRy $		# (1 IIed2h&67 IIej&89{3 !+ MMOIIdO*9*C*CJ*O'
!,,.t9q=IIDG<=#Abz		#  *IIed2h./II)Z@A{+r   zmigrations.%s(z	import %s.(z),)setr   deconstructr   r   getattrr   	__class__r&   add
__module__r'   	enumerater,   r.   render)r   r;   namer7   kwargsoperation_argsir8   	arg_valuearg_namer:   s   `         @r   r*   OperationWriter.serialize   s3   /	,b %!^^779F&t~~'>'>?
 :tT*dnn.F.FFII&-.KKt~~'?'?'J'JKLII$..":":"E"EtLMoFAI%(H8' &
 I&r*H!",	x+ +
 			${{}g%%r   c                 .    U =R                   S-  sl         g Nr   r   r   s    r   r'   OperationWriter.indenti       Ar   c                 .    U =R                   S-  sl         g rO   rP   rQ   s    r   r.   OperationWriter.unindentl   rS   r   c                 `    U R                   R                  SU R                  S-  -  U-   5        g )N    )r   appendr   )r   lines     r   r&   OperationWriter.feedo   s)    		 0 01 45<=r   c                 8    SR                  U R                  5      $ )N
)joinr   rQ   s    r   rF   OperationWriter.renderr   s    yy##r   )r   r   r   N)   )__name__rD   __qualname____firstlineno__r   r*   r'   r.   r&   rF   __static_attributes__ r   r   r   r      s"    '
O&b>$r   r   c                       \ rS rSrSrSS jrS r\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       r\S
 5       rSrg)r)   v   z^
Take a Migration instance and is able to produce the contents
of the migration file from it.
c                 *    Xl         X l        SU l        g )NF)	migrationinclude_headerneeds_manual_porting)r   ri   rj   s      r   r   MigrationWriter.__init__|   s    ",$)!r   c           	         SSS.n[        5       n/ nU R                  R                   H@  n[        U5      R	                  5       u  pVUR                  U5        UR                  U5        MB     U(       a  SR                  U5      S-   OSUS'   / nU R                  R                   H\  nUS   S:X  a*  UR                  SUS   -  5        UR                  S	5        M6  UR                  S
U R	                  U5      S   -  5        M^     U(       a  SR                  [        U5      5      S-   OSUS'   [        5       n	[        U5       Hj  n
[        R                  " SU
5      (       d  M!  U	R                  U
R                  S5      S   R                  5       5        UR!                  U
5        SU l        Ml     SU;   a#  UR%                  S5        UR                  S5        OUR                  S5        [        US S9nU(       a  SR                  U5      S-   OSUS'   U	(       a(  US==   SSR                  [        U	5      5      -  -  ss'   U R                  R&                  (       a.  SU R	                  U R                  R&                  5      S   -  US'   U R(                  (       a/  [*        [-        5       [/        5       R1                  S5      S.-  US'   OSUS'   U R                  R2                  (       a  SUS'   [4        U-  $ )z%Return a string of the file contents. )replaces_strinitial_strr]   
operationsr   __setting__z5        migrations.swappable_dependency(settings.%s),r   z from django.conf import settingsz        %s,dependenciesz^import (.*)\.\d+[^\s]*$importTzfrom django.db import modelsz(from django.db import migrations, modelsz from django.db import migrationsc                 T    U R                  5       S   S:H  U R                  5       S   4$ )Nr   fromr   )split)rJ   s    r   <lambda>+MigrationWriter.as_string.<locals>.<lambda>   s"    AGGIaLF$:AGGIaL#Ir   )r1   r:   z

# Functions from the following migrations need manual copying.
# Move them and any dependencies into this file, then update the
# RunPython operations to refer to the local versions:
# %sz
# z
    replaces = %s
ro   z%Y-%m-%d %H:%M)version	timestampmigration_headerz
    initial = True
rp   )r?   ri   rq   r   r*   r-   rY   r^   rs   rC   sortedr#   rematchrw   stripremoverk   discardreplacesrj   MIGRATION_HEADER_TEMPLATEr   r   strftimeinitialMIGRATION_TEMPLATE)r   r(   r:   rq   r   operation_stringoperation_importsrs   
dependencymigration_importsrZ   sorted_importss               r   	as_stringMigrationWriter.as_string   s    

 % 
22I2A)2L2V2V2X/NN,-./ 3 ?Idii
3d:bl ..55J!}-##K m$ >?##MDNN:4Nq4Q$QR 6 7CDIIf\*+d2 	n  EMDxx3T::!%%djj&:1&=&C&C&EFt$,0)	 " *W4OO:;KKBCKK:;
  I
 @G499^4t;Bi)" F#456!7 7 >>""'$..9P9P*QRS*TT .! (A&= U^^,<=E )E$%
 )+E$%>>!!#;E- !E))r   c                    [         R                  " U R                  R                  5      u  pUc"  [	        SU R                  R                  -  5      e [        U5      n [        U5      $ ! [         a     Of = f! [         a     Of = f[        R                  " U R                  R                  5      nUR                  S5      u  nnnUR                  U:X  a*  [        R                  R                  UR                  U5      $ UR                  S5      / pU(       aq  UR!                  SUR#                  S5      5         [        SR                  U5      5      n	 [        U	5      n
O6! [         a     M]  f = f! [        [        4 a     Mt  f = f[	        SU-  5      e[        R                  R                  " U
/UQ76 n[        R$                  " USS9  U Hh  n[        R                  R                  X5      n
['        [        R                  R                  U
S5      S	5          S S S 5        MX  ! , (       d  f       Mg  = f   U$ )
NztDjango can't create migrations for app '%s' because migrations have been disabled via the MIGRATION_MODULES setting.r=   r   r   zCould not locate an appropriate location to create migrations package %s. Make sure the toplevel package exists and can be imported.T)exist_okz__init__.pyw)r   migrations_moduleri   	app_label
ValueErrorr   r   ImportErrorr   get_app_config
rpartitionrG   ospathr^   rw   insertpopmakedirsopen)r   migrations_package_name_r   
app_configmaybe_app_namemigrations_package_basenameexisting_dirsmissing_dirsbase_modulebase_dir	final_dirmissing_dirs                r   basedirMigrationWriter.basedir   s   %4%F%FNN$$&
" #*!^^556 	 -.E F!"344   		 (()A)AB

 $..s3		
'??n,77<<
1LMM '>&C&CC&H"|=#4#4R#89
+CHH],CD)+6H  "   ,  68OP  GGLL9L9	
I-'Kww||H:Hbggll8];SA BAAA (
 sT   A: 
A* *
A76A7:
BB>E6 E% %
E32E36F
	F
H++
H:	c                 4    SU R                   R                  -  $ )Nz%s.py)ri   rG   rQ   s    r   filenameMigrationWriter.filename  s    ,,,,r   c                 j    [         R                  R                  U R                  U R                  5      $ r   )r   r   r^   r   r   rQ   s    r   r   MigrationWriter.path  s    ww||DLL$--88r   c                 4    [        U5      R                  5       $ r   )r
   r*   )clsr2   s     r   r*   MigrationWriter.serialize  s    !%(2244r   c                 0    [         R                  " X5        g r   )r	   register)r   type_
serializers      r   register_serializer#MigrationWriter.register_serializer!  s    E.r   c                 0    [         R                  " U5        g r   )r	   
unregister)r   r   s     r   unregister_serializer%MigrationWriter.unregister_serializer%  s    e$r   )rj   ri   rk   N)T)ra   rD   rb   rc   __doc__r   r   propertyr   r   r   classmethodr*   r   r   rd   re   r   r   r)   r)   v   s    
*
P*d ? ?B - - 9 9 5 5 / / % %r   r)   z4# Generated by Django %(version)s on %(timestamp)s

z%(migration_header)s%(imports)s

class Migration(migrations.Migration):
%(replaces_str)s%(initial_str)s
    dependencies = [
%(dependencies)s    ]

    operations = [
%(operations)s    ]
)r   r~   	importlibr   djangor   django.appsr   django.confr   	django.dbr   django.db.migrations.loaderr   django.db.migrations.serializerr	   r
   django.utils.inspectr   django.utils.module_loadingr   django.utils.timezoner   r   r)   r   r   re   r   r   <module>r      sU    	 	 #   *   7 J . 2 %a$ a$Hq% q%h  r   