o a(@sddlZddlZddlZddlmZddlmZddlmZm Z ddl m Z ddl m Z mZzddlZdZWn eyAdZYnwzddlZdZWn eyUdZYnwGd d d eZGd d d eZdS) N)apps) serializers) BaseCommand CommandError)parse_apps_and_model_labels)DEFAULT_DB_ALIASrouterTFc@s eZdZdS)ProxyModelWarningN)__name__ __module__ __qualname__r r J/usr/lib/python3/dist-packages/django/core/management/commands/dumpdata.pyr sr c@s eZdZdZddZddZdS)CommandzOutput the contents of the database as a fixture of the given format (using each model's default manager unless --all is specified).cCs|jddddd|jdddd |jd td d |jd tdd |jdddgdd|jddddd|jddddd|jdddddd|jd d!d"d#|jd$d%d&d'dS)(Nargszapp_label[.ModelName]*zHRestricts dumped data to the specified app_label or app_label.ModelName.)metavarnargshelpz--formatjsonz7Specifies the output serialization format for fixtures.)defaultrz--indentz>Specifies the indent level to use when pretty-printing output.)typerz --databasezXNominates a specific database to dump fixtures from. Defaults to the "default" database.z-ez --excludeappendzhAn app_label or app_label.ModelName to exclude (use multiple --exclude to exclude multiple apps/models).)actionrrz--natural-foreign store_trueuse_natural_foreign_keysz/Use natural foreign keys if they are available.)rdestrz--natural-primaryuse_natural_primary_keysz/Use natural primary keys if they are available.z-az--alluse_base_managerzUse Django's base manager to dump all models stored in the database, including those that would otherwise be filtered or modified by a custom manager.z--pks primary_keyszOnly dump objects with given primary keys. Accepts a comma-separated list of keys. This option only works when you specify one model.)rrz-oz--outputz.Specifies file to which the output is written.)r) add_argumentintr)selfparserr r r add_arguments"sR zCommand.add_argumentscs|d}|d}|d|d}|d}|d}|d|d}|d |d } | r5d d | d Dngt|\|sTrEtdtfddtDnt|dkr`r`tdi|D]} zX| d\} } zt| } Wnt y}ztt |d}~ww| j dus| vrWqdz| | }Wnt ytd| | fw | g}|dur||vr||Wqdtyrtd| } zt| } Wnt y}ztt |d}~ww| j dus| vrYqdd| <Yqdw|tvrzt|Wn tjyYnwtd|d&fdd }zd|j_d}d}|rH|jrH|ddkrH|j}t|dd}|rtj|\}}ti|ftji|fti|fti|fti|fd}trvtji|f|d<trt jdt j!i|f|d<t ji|f|d<z ||\}}}Wnt"yti|}}}Ynw||krtj#|}t$%d |d!|d"t&||d#fi|}nd}z tj'|||||p|j||d$W|r|(WdSWdS|r|(wwt)y }z |rtd%|d}~ww)'Nformatindentdatabaseexcludeoutput tracebackrrrrcSsg|]}|qSr )strip).0pkr r r ^sz"Command.handle..,z,You can only use --pks option with one modelc3s&|]}|jdur|vr|VqdS)N) models_module)r, app_config) excluded_appsr r gsz!Command.handle...zUnknown model: %s.%sz Unknown serialization format: %sFc3sr tjdd}ng}D]\}}|dur#||q||q|D]S}|vr2q+|jjrG|jj|vrGtj d|jj t d|jjs~t |r~rW|j}n|j}||jjj}rm|jd}|rw|Vq+|EdHq+dS)z Collate the objects to be serialized. If count_only is True, just count the number of objects to be serialized. T) allow_cyclesNz,%s is a proxy model and won't be serialized.)category)pk__in)rsort_dependenciesitemsextend get_models_metaproxyproxy_for_modelwarningswarnlabelr rallow_migrate_model _base_manager_default_managerusingorder_byr-namefiltercountiterator) count_onlymodelsr1 model_listmodelobjectsqueryset)app_listexcluded_modelsrrrrFr r get_objectss8   z#Command.handle..get_objectsr verbosityT)rL).bz2z.gz.lzma.xzz.ziprVrWrXzUnsupported file extension (z). Fixtures saved in 'z'.wt)r&rrstreamprogress_output object_countz Unable to serialize database: %s)F)*splitrrdictfromkeysrget_app_configslenget_app_config LookupErrorstrr0 get_model setdefaultr ValueErrorrget_public_serializer_formatsget_serializerSerializerDoesNotExiststdoutendingisattysumospathsplitextopengziphas_bz2bz2has_lzmalzma FORMAT_ALONEKeyErrorbasenamer@rARuntimeWarning serializeclose Exception)r" app_labelsoptionsr%r&excludesr)show_tracebackrpksrB app_label model_labelr1erOapp_list_valuerTr[r\ file_rootfile_extcompression_formats open_methodkwargs file_path file_namerZr )rRr2rSrrrrFrhandleQs          &       zCommand.handleN)r r r rr$rr r r rrs  /r)rsror@ django.appsr django.corerdjango.core.management.baserrdjango.core.management.utilsr django.dbrrrurt ImportErrorrwrvWarningr rr r r rs,