î
ªÍ Xœ#  ã               @   s˜   d  d l  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 m Z Gd d „  d e ƒ Z Gd	 d
 „  d
 e ƒ Z d S)é    N)ÚOrderedDict)Úapps)Úserializers)ÚBaseCommandÚCommandError)ÚDEFAULT_DB_ALIASÚrouterc               @   s   e  Z d  Z d S)ÚProxyModelWarningN)Ú__name__Ú
__module__Ú__qualname__© r   r   úV/home/ubuntu/projects/ifolica/build/django/django/core/management/commands/dumpdata.pyr	   
   s   r	   c               @   s.   e  Z d  Z d Z d d „  Z d d „  Z d S)ÚCommandz„Output the contents of the database as a fixture of the given format (using each model's default manager unless --all is specified).c             C   sa  | j  d d d d d d d ƒ| j  d d	 d
 d d d d ƒ| j  d d	 d  d d d t d d ƒ| j  d d d d d d	 t d d ƒ| j  d d d d d d d	 g  d d ƒ| j  d d d d d d	 d d d  ƒ| j  d! d d d d" d	 d d d# ƒ| j  d$ d% d d d d& d	 d d d' ƒ| j  d( d d) d d* ƒ| j  d+ d, d	 d  d d- d d. ƒd  S)/NÚargsÚmetavarzapp_label[.ModelName]ÚnargsÚ*ÚhelpzHRestricts dumped data to the specified app_label or app_label.ModelName.z--formatÚdefaultÚjsonÚdestÚformatz7Specifies the output serialization format for fixtures.z--indentÚindentÚtypez>Specifies the indent level to use when pretty-printing output.z
--databaseÚactionÚstoreÚdatabasezXNominates a specific database to dump fixtures from. Defaults to the "default" database.z-ez	--excludeÚexcludeÚappendzhAn app_label or app_label.ModelName to exclude (use multiple --exclude to exclude multiple apps/models).z--natural-foreignÚ
store_trueÚuse_natural_foreign_keysFz/Use natural foreign keys if they are available.z--natural-primaryÚuse_natural_primary_keysz/Use natural primary keys if they are available.z-az--allÚuse_base_managerz–Use 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_keysz…Only dump objects with given primary keys. Accepts a comma-separated list of keys. This option only works when you specify one model.z-oz--outputÚoutputz.Specifies file to which the output is written.)Úadd_argumentÚintr   )ÚselfÚparserr   r   r   Úadd_arguments   s>    zCommand.add_argumentsc          #      s  | d } | d } | d ‰ | d } | d } | d } | d } | d }	 | d	 ‰ | d
 }
 |
 r| |
 j  d ƒ ‰ n g  ‰ t ƒ  ‰ t ƒ  ‰ x¼ | D]´ } d | k rõ y t j | ƒ } Wn" t k
 rä t d | ƒ ‚ Yn Xˆ j | ƒ q› y t j | ƒ } Wn7 t k
 rA} z t t | ƒ ƒ ‚ WYd  d  } ~ Xn Xˆ j | ƒ q› Wt	 | ƒ d k r¢ˆ rzt d ƒ ‚ n  t
 ‡ f d d †  t j ƒ  Dƒ ƒ ‰  nët	 | ƒ d k rÉˆ rÉt d ƒ ‚ n  t
 ƒ  ‰  x¸| D]°} y| j  d ƒ \ } } y t j | ƒ } Wn7 t k
 rC} z t t | ƒ ƒ ‚ WYd  d  } ~ Xn X| j d  k s_| ˆ k rewÙn  y | j | ƒ } Wn( t k
 r¢t d | | f ƒ ‚ Yn Xˆ  j | g  ƒ } | d  k	 rà| | k rà| j | ƒ qàn  WqÙt k
 rˆˆ rt d ƒ ‚ n  | } y t j | ƒ } Wn7 t k
 rX} z t t | ƒ ƒ ‚ WYd  d  } ~ Xn X| j d  k st| ˆ k rzwÙn  d  ˆ  | <YqÙXqÙW| t j ƒ  k rÛy t j | ƒ Wn t j k
 rÇYn Xt d | ƒ ‚ n  d ‡  ‡ ‡ ‡ ‡ f d d † } yØ d  |  j _ d  } d } | r]|  j j ƒ  r]| d d k r]|  j } t | d d ƒ ƒ } n  | rrt | d ƒ n d  } zD t j | | ƒ  d | d | d |	 d | p«|  j d | d | ƒWd  | rÒ| j ƒ  n  XWnA t k
 r} z! | rõ‚  n  t d | ƒ ‚ WYd  d  } ~ Xn Xd  S) Nr   r   r   r   r%   Ú	tracebackr!   r"   r#   r$   ú,Ú.zUnknown model in excludes: %sr   z,You can only use --pks option with one modelc             3   s6   |  ], } | j  d  k	 r | ˆ  k r | d  f Vq d  S)N)Úmodels_module)Ú.0Ú
app_config)Úexcluded_appsr   r   ú	<genexpr>h   s    z!Command.handle.<locals>.<genexpr>é   zUnknown model: %s.%sz Unknown serialization format: %sFc             3   s)  t  j ˆ  j ƒ  ƒ } x| D]} | ˆ k r4 q n  | j j rr | j j | k rr t j d | j j d t	 ƒn  | j j r t
 j ˆ | ƒ r ˆ r£ | j } n	 | j } | j ˆ ƒ j | j j j ƒ } ˆ rè | j d ˆ ƒ } n  |  r| j ƒ  j ƒ  Vq!x | j ƒ  D] } | VqWq q Wd S)z•
            Collate the objects to be serialized. If count_only is True, just
            count the number of objects to be serialized.
            z,%s is a proxy model and won't be serialized.ÚcategoryZpk__inN)r   Zsort_dependenciesÚitemsZ_metaÚproxyZproxy_for_modelÚwarningsÚwarnÚlabelr	   r   Zallow_migrate_modelZ_base_managerZ_default_managerÚusingZorder_byÚpkÚnameÚfilterÚcountÚiterator)Ú
count_onlyÚmodelsÚmodelZobjectsZquerysetÚobj)Úapp_listÚexcluded_modelsr$   r#   r:   r   r   Úget_objectsœ   s&    
	!z#Command.handle.<locals>.get_objectsÚ	verbosityr@   TÚwÚstreamÚprogress_outputÚobject_countz Unable to serialize database: %s)ÚsplitÚsetr   Z	get_modelÚLookupErrorr   ÚaddZget_app_configÚstrÚlenr   Zget_app_configsr.   Ú
setdefaultr   Ú
ValueErrorr   Zget_public_serializer_formatsZget_serializerZSerializerDoesNotExistÚstdoutZendingÚisattyÚsumÚopenÚ	serializeÚcloseÚ	Exception)r(   Z
app_labelsÚoptionsr   r   Zexcludesr%   Zshow_tracebackr!   r"   Zpksr   rB   r0   Úer9   Z	app_labelZmodel_labelZapp_list_valuerF   rJ   rK   rI   r   )rD   r1   rE   r$   r#   r:   r   ÚhandleC   s¶    









		%%	%%!%	zCommand.handleN)r
   r   r   r   r*   r]   r   r   r   r   r      s   /r   )r7   Úcollectionsr   Zdjango.appsr   Zdjango.corer   Zdjango.core.management.baser   r   Z	django.dbr   r   ÚWarningr	   r   r   r   r   r   Ú<module>   s   