o Úøa,ã@s´ddlZddlZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZdd lmZdd lmZdd lmZGd d „d ƒZGdd„dƒZdZdZdS)éN)Ú import_module)Ú get_version)Úapps)ÚSettingsReference)Ú migrations)ÚMigrationLoader)Ú SerializerÚserializer_factory)Ú get_func_args)Ú module_dir)Únowc@s>eZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „ZdS)ÚOperationWriterécCs||_g|_||_dS©N)Ú operationÚbuffÚ indentation)Úselfrr©rú=/usr/lib/python3/dist-packages/django/db/migrations/writer.pyÚ__init__ó zOperationWriter.__init__c s‡‡fdd„}tƒ‰ˆj ¡\}}}tˆjjƒ}tt|dƒˆjjkr*ˆ d|¡nˆ  dˆjjj ¡ˆ dˆjjj |f¡ˆ  ¡t |ƒD]\}}|}||} || |ƒqHt |ƒ}||d…D]} | |vrq|| }|| |ƒqbˆ ¡ˆ d¡ˆ ¡ˆfS)Nc s*|ˆjjvrÐt|tttfƒrÐt|tƒr€ˆ d|¡ˆ ¡| ¡D]R\}}t   |¡\}}t   |¡\}}|  ¡}t |ƒdkraˆ d||df¡|dd…D]} ˆ | ¡qOˆ d|d¡n ˆ d||f¡ˆ  |¡ˆ  |¡q"ˆ ¡ˆ d¡dSˆ d |¡ˆ ¡|D]7} t   | ¡\}}|  ¡}t |ƒdkr¸|dd…D]} ˆ | ¡q¦ˆ d|d¡nˆ d|¡ˆ  |¡qˆ ¡ˆ d ¡dSt   |¡\}}|  ¡}t |ƒdkrˆ d ||df¡|dd…D]} ˆ | ¡qóˆ d|d¡n ˆ d ||f¡ˆ  |¡dS) Nz%s={éz%s: %sréÿÿÿÿz%s,z%s: %s,z},z%s=[z],z%s=%sz%s=%s,)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©ÚimportsrrrÚ_writesT ÿ         z)OperationWriter.serialize.._writezmigrations.%s(z import %sz%s.%s(z),)ÚsetrÚ deconstructr rÚgetattrrÚ __class__rÚaddÚ __module__r Ú enumerater%r'Úrender) rr5Únamer0ÚkwargsÚoperation_argsÚir1Ú arg_valueÚarg_namerr3rr#s,0   €  zOperationWriter.serializecCs|jd7_dS©Nr©r©rrrrr iózOperationWriter.indentcCs|jd8_dSrDrErFrrrr'lrGzOperationWriter.unindentcCs|j d|jd|¡dS)Nú é)rÚappendr)rÚlinerrrroszOperationWriter.feedcCs d |j¡S)NÚ )ÚjoinrrFrrrr=rs zOperationWriter.renderN)r) Ú__name__r;Ú __qualname__rr#r r'rr=rrrrr s Q r c@sjeZdZdZddd„Zdd„Zedd„ƒZed d „ƒZed d „ƒZ e d d„ƒZ e dd„ƒZ e dd„ƒZ dS)r"zj Take a Migration instance and is able to produce the contents of the migration file from it. TcCs||_||_d|_dS)NF)Ú migrationÚinclude_headerÚneeds_manual_porting)rrPrQrrrr|rzMigrationWriter.__init__c Csðdddœ}tƒ}g}|jjD]}t|ƒ ¡\}}| |¡| |¡q|r,d |¡dnd|d<g}|jjD]#}|ddkrM| d|d¡|  d ¡q6| d | |¡d¡q6|rcd |¡dnd|d <tƒ} t |ƒD]} t   d | ¡rŠ|   |   d ¡d ¡¡| | ¡d|_qnd|vrš| d¡|  d¡n|  d¡t|dd„d} |r°d | ¡dnd|d<| rÅ|ddd t| ƒ¡7<|jjrÖd| |jj¡d|d<|jrèttƒtƒ d¡dœ|d<nd|d<|jjrôd|d<t|S)z%Return a string of the file contents.Ú)Ú replaces_strÚ initial_strrLÚ operationsrÚ __setting__z5 migrations.swappable_dependency(settings.%s),rz from django.conf import settingsz %s,Ú dependenciesz^import (.*)\.\d+[^\s]*$ÚimportTzfrom django.db import modelsz(from django.db import migrations, modelsz from django.db import migrationscSs | ¡dSrD)Úsplit)rArrrÚ¯s z+MigrationWriter.as_string..)r*r4z½ # 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 rTz%Y-%m-%d %H:%M)ÚversionÚ timestampÚmigration_headerz initial = True rU)r6rPrVr r#r&rJrMrXr:rÚreÚmatchrZÚstripÚremoverRÚdiscardÚsortedÚreplacesrQÚMIGRATION_HEADER_TEMPLATErr ÚstrftimeÚinitialÚMIGRATION_TEMPLATE) rr!r4rVrÚoperation_stringÚoperation_importsrXÚ dependencyÚmigration_importsrKÚsorted_importsrrrÚ as_strings\þ         €    û þzMigrationWriter.as_stringc Cst |jj¡\}}|durtd|jjƒ‚zt|ƒ}Wn ty$Ynwzt|ƒWSty3Ynwt  |jj¡}|  d¡\}}}|j |krPt j  |j |¡S| d¡g}}|r‰| d| d¡¡z td |¡ƒ} Wn ttfywYqXwzt| ƒ} Wn ty‡YqXwntd|ƒ‚t j j| g|¢RŽ} t j| dd|D]#} t j  | | ¡} tt j  | d¡d ƒWdƒn1sÀwYq¢| S) NztDjango can't create migrations for app '%s' because migrations have been disabled via the MIGRATION_MODULES setting.Ú.rrz„Could 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_modulerPÚ app_labelÚ ValueErrorrÚ ImportErrorr rÚget_app_configÚ rpartitionr>ÚosÚpathrMrZÚinsertÚpopÚmakedirsÚopen) rÚmigrations_package_nameÚ_rsÚ app_configÚmaybe_app_nameÚmigrations_package_basenameÚ existing_dirsÚ missing_dirsÚ base_moduleÚbase_dirÚ final_dirÚ missing_dirrrrÚbasedirÉsbþÿ  ÿ  ÿ ÿ  ÿýÿÿ€zMigrationWriter.basedircCs d|jjS)Nz%s.py)rPr>rFrrrÚfilenameó zMigrationWriter.filenamecCstj |j|j¡Sr)ryrzrMrŠr‹rFrrrrz szMigrationWriter.pathcCs t|ƒ ¡Sr)r r#)Úclsr+rrrr# rŒzMigrationWriter.serializecCst ||¡dSr)rÚregister)rÚtype_Ú serializerrrrÚregister_serializersz#MigrationWriter.register_serializercCst |¡dSr)rÚ unregister)rrrrrÚunregister_serializersz%MigrationWriter.unregister_serializerN)T)rNr;rOÚ__doc__rroÚpropertyrŠr‹rzÚ classmethodr#r‘r“rrrrr"vs  H ;    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 ] )ryr_Ú importlibrÚdjangorÚ django.appsrÚ django.confrÚ django.dbrÚdjango.db.migrations.loaderrÚdjango.db.migrations.serializerrr Údjango.utils.inspectr Údjango.utils.module_loadingr Údjango.utils.timezoner r r"rfrirrrrÚs"         d%