
    Evg]-                         d dl Z 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mZ d d	lmZ d d
lmZ d dlmZ  G d d          Z G d d          ZdZdZdS )    N)import_module)get_version)apps)SettingsReference)
migrations)MigrationLoader)
Serializerserializer_factory)get_func_args)
module_dir)nowc                   4    e Zd Zd	dZd Zd Zd Zd Zd ZdS )
OperationWriter   c                 0    || _         g | _        || _        d S N)	operationbuffindentation)selfr   r   s      X/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/django/db/migrations/writer.py__init__zOperationWriter.__init__   s    "	&    c                    
 
 fd}t                      
 j                                        \  }}}t           j        j                  }t          t          |d            j        j        k    r                     d|z             nQ
	                    d j        j        j
        z                                   j        j        j
        d|d                                             t          |          D ]\  }}|}||         }	 ||	|           t          |          }||d          D ]}	|	|v r||	         } ||	|                                                                  d                                            
fS )Nc                 R   | j         j        v rt          |t          t          t
          f          rt          |t
                    rz                    d| z                                              |                                D ]\  }}t          
                    |          \  }}t          
                    |          \  }}|                                }t          |          dk    ra                    |d|d                    |dd         D ]}	                    |	                               d|d         z             n                    |d|d                               |                               |                                                                d           d S                     d	| z                                              |D ]}
t          
                    |
          \  }}|                                }t          |          dk    rA|d d         D ]}	                    |	                               d|d         z             n                    d|z                                 |                                                                d
           d S t          
                    |          \  }}|                                }t          |          dk    ra                    | d|d                    |dd         D ]}	                    |	                               d|d         z             n                    | d|d                               |           d S )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   _writez)OperationWriter.serialize.<locals>._write   sw   DNDDDT5$/J JD j$//  $IIfy0111KKMMM&0&6&6&8&8 4 4
U2A2K2KC2P2P/
K2A2K2KE2R2R/
K)4466t99q== II***d1gg&FGGG'+AbDz / / $		# IIed2h&67777 II:::zzz&JKKK{333{3333MMOOOIIdOOOOOIIfy0111KKMMM * 	4 	42A2K2KD2Q2Q/
K)4466t99q=='+CRCy / / $		# IIed2h&67777 IIej&8999{3333MMOOOIIdOOOOO*9*C*CJ*O*O'
K!,,..t99q==IIDGG<===#AbDz ' '		#IIed2h.////II)))ZZZ@AAA{+++++r   zmigrations.%s(z	import %s.(z),)setr   deconstructr   r   getattrr   	__class__r%   add
__module__r&   	enumerater+   r-   render)r   r:   namer6   kwargsoperation_argsir7   	arg_valuearg_namer9   s   `         @r   r)   zOperationWriter.serialize   s   /	, /	, /	, /	, /	, /	,b %%!^7799dF&t~'>??
 :tT**dn.FFFII&-....KKt~'?'JKLLLII$.":"E"E"EtttLMMMoo 	( 	(FAsI%a(HF8Y''''II&qrr* 	, 	,H6!!"8,	x+++		${{}}g%%r   c                 &    | xj         dz  c_         d S Nr   r   r   s    r   r&   zOperationWriter.indenti       Ar   c                 &    | xj         dz  c_         d S rL   rM   rN   s    r   r-   zOperationWriter.unindentl   rO   r   c                 V    | j                             d| j        dz  z  |z              d S )N    )r   appendr   )r   lines     r   r%   zOperationWriter.feedo   s0    	 01 45<=====r   c                 6    d                     | j                  S )N
)joinr   rN   s    r   rD   zOperationWriter.renderr   s    yy###r   N)r   )	__name__rB   __qualname__r   r)   r&   r-   r%   rD    r   r   r   r      sw        ' ' ' '
O& O& O&b    > > >$ $ $ $ $r   r   c                       e Zd ZdZddZd Zed             Zed             Zed             Z	e
d             Ze
d	             Ze
d
             ZdS )r(   zj
    Take a Migration instance and is able to produce the contents
    of the migration file from it.
    Tc                 0    || _         || _        d| _        d S )NF)	migrationinclude_headerneeds_manual_porting)r   r^   r_   s      r   r   zMigrationWriter.__init__|   s    ",$)!!!r   c           	      *   ddd}t                      }g }| j        j        D ]P}t          |                                          \  }}|                    |           |                    |           Q|rd                    |          dz   nd|d<   g }| j        j        D ]s}|d         dk    r4|                    d|d         z             |	                    d	           B|                    d
|                     |          d         z             t|r%d                    t          |                    dz   nd|d<   t                      }	t          |          D ]s}
t          j        d|
          r\|		                    |
                    d          d                                                    |                    |
           d| _        td|v r+|                    d           |	                    d           n|	                    d           t          |d           }|rd                    |          dz   nd|d<   |	r3|dxx         dd                    t          |	                    z  z  cc<   | j        j        r+d|                     | j        j                  d         z  |d<   | j        r<t*          t-                      t/                                          d          dz  |d<   nd|d<   | j        j        rd|d<   t4          |z  S )z%Return a string of the file contents. )replaces_strinitial_strrW   
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                 r    |                                  d         dk    |                                  d         fS )Nr   fromr   )split)rH   s    r   <lambda>z+MigrationWriter.as_string.<locals>.<lambda>   s(    AGGIIaLF$:AGGIIaL#I r   )r0   r9   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
rc   z%Y-%m-%d %H:%M)version	timestampmigration_headerz
    initial = True
rd   )r=   r^   re   r   r)   r,   rT   rX   rg   rA   sortedr"   rematchrk   stripremover`   discardreplacesr_   MIGRATION_HEADER_TEMPLATEr   r   strftimeinitialMIGRATION_TEMPLATE)r   r'   r9   re   r   operation_stringoperation_importsrg   
dependencymigration_importsrU   sorted_importss               r   	as_stringzMigrationWriter.as_string   s}    
 

 %% 
2 	0 	0I2A)2L2L2V2V2X2X//NN,---.////>HPdii
33d::bl .5 	S 	SJ!}--##K m$   >????##MDNN:4N4Nq4Q$QRRRR6BJDIIf\**++d22 	n  EEMM 	1 	1Dx3T:: 1!%%djj&:&:1&=&C&C&E&EFFFt$$$,0) *W44OO:;;;KKBCCCCKK:;;;
  II
 
 
 @GN499^44t;;Bi 	7)" F#45566!7 7 >" 	'$..9P*Q*QRS*TT .!  	+(A&== UU^^,<==E E )E$%%
 )+E$%>! 	<#;E- !E))r   c                 b   t          j        | j        j                  \  }}|t	          d| j        j        z            	 t          |          }	 t          |          S # t          $ r Y nw xY w# t          $ r Y nw xY wt          j	        | j        j                  }|
                    d          \  }}}|j        |k    r%t          j                            |j        |          S |                    d          g }}|r|                    d|                    d                     	 t          d                    |                    }		 t          |	          }
n9# t          $ r Y kw xY w# t          t          f$ r Y w xY wt	          d|z            t          j        j        |
g|R  }t          j        |d           |D ]i}t          j                            |
|          }
t'          t          j                            |
d          d	          5  	 d d d            n# 1 swxY w Y   j|S )
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_moduler^   	app_label
ValueErrorr   r   ImportErrorr   get_app_config
rpartitionrE   ospathrX   rk   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   basedirzMigrationWriter.basedir   s   %4%FN$&
 &
" #*!^56  	 -.E F F!"3444     	 	 	D	 ()ABB

 $..s33		
'?n,,7<<
1LMMM '>&C&CC&H&H"| 	=#4#4R#8#8999
+CHH],C,CDD)+66H  "   H  ,    68OP   GL9L999	
I----' 	 	Kw||Hk::Hbgll8];;SAA                 sZ   A0 A   
A-,A-0
A=<A=*"E- E 
E*)E*-F FH##H'	*H'	c                      d| j         j        z  S )Nz%s.py)r^   rE   rN   s    r   filenamezMigrationWriter.filename  s    ,,,r   c                 V    t           j                            | j        | j                  S r   )r   r   rX   r   r   rN   s    r   r   zMigrationWriter.path  s    w||DL$-888r   c                 D    t          |                                          S r   )r
   r)   )clsr1   s     r   r)   zMigrationWriter.serialize  s    !%((22444r   c                 0    t          j        ||           d S r   )r	   register)r   type_
serializers      r   register_serializerz#MigrationWriter.register_serializer!  s    E:.....r   c                 .    t          j        |           d S r   )r	   
unregister)r   r   s     r   unregister_serializerz%MigrationWriter.unregister_serializer%  s    e$$$$$r   N)T)rY   rB   rZ   __doc__r   r   propertyr   r   r   classmethodr)   r   r   r[   r   r   r(   r(   v   s         
* * * *
P* P* P*d ? ? X?B - - X- 9 9 X9 5 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   rq   	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(   rw   rz   r[   r   r   <module>r      sK   				 				 # # # # # #             * ) ) ) ) )             7 7 7 7 7 7 J J J J J J J J . . . . . . 2 2 2 2 2 2 % % % % % %a$ a$ a$ a$ a$ a$ a$ a$Hq% q% q% q% q% q% q% q%h    r   