a
    [f*                     @   s   d dl Z d dlZd dl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mZ zd dlZdZW n ey   dZY n0 zd dlZdZW n ey   dZY n0 G d	d
 d
eZG dd deZdS )    N)apps)serializers)BaseCommandCommandError)parse_apps_and_model_labels)DEFAULT_DB_ALIASrouterTFc                   @   s   e Zd ZdS )ProxyModelWarningN)__name__
__module____qualname__ r   r   zC:\Users\91910\OneDrive\Desktop\vts_admin_rebuild-master\vts\Lib\site-packages\django/core/management/commands/dumpdata.pyr	      s   r	   c                   @   s    e Zd ZdZdd Zdd ZdS )CommandzOutput the contents of the database as a fixture of the given format (using each model's default manager unless --all is specified).c                 C   s   |j ddddd |j dddd	 |j d
tdd |j dtdd	 |j dddg dd |j ddddd |j ddddd |j dddddd |j d d!d"d# |j d$d%d&d' d S )(Nargszapp_label[.ModelName]*zHRestricts dumped data to the specified app_label or app_label.ModelName.)metavarnargshelpz--formatjsonz7Specifies the output serialization format for fixtures.)defaultr   z--indentz>Specifies the indent level to use when pretty-printing output.)typer   z
--databasezXNominates a specific database to dump fixtures from. Defaults to the "default" database.z-ez	--excludeappendzhAn app_label or app_label.ModelName to exclude (use multiple --exclude to exclude multiple apps/models).)actionr   r   z--natural-foreign
store_trueuse_natural_foreign_keysz/Use natural foreign keys if they are available.)r   destr   z--natural-primaryuse_natural_primary_keysz/Use natural primary keys if they are available.z-az--alluse_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.)r   r   z-oz--outputz.Specifies file to which the output is written.)r   )add_argumentintr   )selfparserr   r   r   add_arguments$   sn    	zCommand.add_argumentsc                    s\  |d }|d }|d |d }|d }|d }|d |d }|d	 |d
 }	|	rjdd |	 dD ng t|\|srtdtfddt D  nt|dkrrtdi  |D ]\}
z|
 d\}}zt|}W n2 t	y  } ztt
|W Y d }~n
d }~0 0 |jd u s8|v r<W qz||}W n$ t	yn   td||f Y n0  |g }|d ur||vr|| W q ty&   rtd|
}zt|}W n2 t	y } ztt
|W Y d }~n
d }~0 0 |jd u s|v rY qd  |< Y q0 q|t vrjzt| W n tjy\   Y n0 td| d& fdd	}zd | j_d }d}|r| j r|d dkr| j}t|dd}|rtj|\}}ti |ftji |fti |fti |fti |fd}tr&tji |f|d< trRt jdt j!i|f|d< t ji |f|d< z|| \}}}W n$ t"y   ti |  }}}Y n0 ||krtj#|}t$%d | d!| d"t& ||d#fi |}nd }z6tj'|| |||p| j||d$ W |r|(  n|r|(  0 W n: t)yV } z |r6 td%| W Y d }~n
d }~0 0 d S )'NformatindentZdatabaseexcludeoutput	tracebackr   r   r   r   c                 S   s   g | ]}|  qS r   )strip).0pkr   r   r   
<listcomp>t       z"Command.handle.<locals>.<listcomp>,z,You can only use --pks option with one modelc                 3   s$   | ]}|j d ur| vr|V  qd S )N)models_module)r+   
app_config)excluded_appsr   r   	<genexpr>}   s   
z!Command.handle.<locals>.<genexpr>   .zUnknown model: %s.%sz Unknown serialization format: %sFc                 3   s   rt j  dd}n8g }  D ]*\}}|du rD||  q$|| q$|D ]}|v rbqT|jjr|jj|vrtj	d|jj
 td |jjsTt|rTr|j}n|j}||jjj}r|jd}| r|  V  qT| E dH  qTdS )z
            Collate the objects to be serialized. If count_only is True, just
            count the number of objects to be serialized.
            T)Zallow_cyclesNz,%s is a proxy model and won't be serialized.)category)Zpk__in)r   Zsort_dependenciesitemsextendZ
get_models_metaproxyZproxy_for_modelwarningswarnlabelr	   r   Zallow_migrate_modelZ_base_managerZ_default_managerusingZorder_byr,   namefiltercountiterator)
count_onlymodelsr1   Z
model_listmodelobjectsZqueryset)app_listexcluded_modelsr   r   r   r>   r   r   get_objects   s:    z#Command.handle.<locals>.get_objectsr   	verbosityT)rC   ).bz2z.gz.lzma.xzz.ziprK   rL   rM   zUnsupported file extension (z). Fixtures saved in 'z'.wt)r&   r   r   streamprogress_outputobject_countz Unable to serialize database: %s)F)*splitr   r   dictfromkeysr   Zget_app_configslenZget_app_configLookupErrorstrr0   Z	get_model
setdefaultr   
ValueErrorr   Zget_public_serializer_formatsZget_serializerZSerializerDoesNotExiststdoutendingisattysumospathsplitextopengziphas_bz2bz2has_lzmalzmaFORMAT_ALONEKeyErrorbasenamer;   r<   RuntimeWarning	serializeclose	Exception)r"   Z
app_labelsoptionsr%   r&   excludesr(   show_tracebackr   Zpksr=   Z	app_labelZmodel_labelr1   erE   Zapp_list_valuerI   rP   rQ   Z	file_rootZfile_extZcompression_formatsZopen_methodkwargs	file_path	file_namerO   r   )rG   r2   rH   r   r   r   r>   r   handleg   s    
"

") 



zCommand.handleN)r
   r   r   r   r$   ru   r   r   r   r   r      s   Cr   )rb   r^   r;   Zdjango.appsr   Zdjango.corer   Zdjango.core.management.baser   r   Zdjango.core.management.utilsr   Z	django.dbr   r   rd   rc   ImportErrorrf   re   Warningr	   r   r   r   r   r   <module>   s&   

