ó
TR¹Nc           @   sÄ   d  d l  m 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
 m Z d  d l m Z m Z m Z m Z m Z d  d l m Z d  d	 l m Z d
 e f d „  ƒ  YZ d S(   iÿÿÿÿ(   t   make_optionN(   t   settings(   t   NoArgsCommand(   t   no_style(   t   custom_sql_for_modelt   emit_post_sync_signal(   t   connectionst   routert   transactiont   modelst   DEFAULT_DB_ALIAS(   t
   SortedDict(   t   import_modulet   Commandc           B   sf   e  Z e j e d  d d d d d e d d ƒe d d d	 d d
 d e d d ƒf Z d Z d „  Z RS(   s	   --noinputt   actiont   store_falset   destt   interactivet   defaultt   helps:   Tells Django to NOT prompt the user for input of any kind.s
   --databaset   storet   databasesH   Nominates a database to synchronize. Defaults to the "default" database.sd   Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created.c            s«  t  | j d d ƒ ƒ } | j d ƒ } | j d t ƒ } t ƒ  |  _ xg t j D]\ } y t d | ƒ WqO t k
 rª } | j	 d } | j
 d ƒ s¡ d | k r« ‚  q« qO XqO W| j d	 t ƒ } t | ‰ ˆ j ƒ  }	 ˆ j j ƒ  ‰  ˆ j j ˆ  ƒ }
 t ƒ  } i  } g  t j ƒ  D]V } | j j d
 ƒ d g  t j | d t ƒD] } t j | | ƒ rC| ^ qCf ^ q} ‡ ‡  f d †  ‰ t ‡ f d †  | Dƒ ƒ } xt| j ƒ  D]f\ } } xW| D]O} | d k rèd | | j j f GHn  ˆ j j | |  j |
 ƒ \ } } |
 j  | ƒ | j  | ƒ xd | j ƒ  D]V \ } } | j! | g  ƒ j" | ƒ | |
 k r0| j" ˆ j j# | |  j | ƒ ƒ q0q0W| j" ˆ j j# | |  j | ƒ ƒ | d k rÐ| rÐd | j j$ GHn  x | D] } |	 j% | ƒ q×Wˆ  j& ˆ j j' | j j$ ƒ ƒ q¾Wq«Wt( j) d | ƒ t* | | | | ƒ ˆ j ƒ  }	 x:| j ƒ  D],\ } } x| D]} | | k rdt+ | |  j ˆ ƒ } | rR| d k rµd | | j j f GHn  y" x | D] } |	 j% | ƒ q¿WWne t, k
 r>} t- j. j/ d | | j j | f ƒ | r+d d  l0 } | j1 ƒ  n  t( j2 d | ƒ qvXt( j) d | ƒ qy| d k ryd | | j j f GHqyqdqdWqQWxú | j ƒ  D]ì \ } } xÝ | D]Õ } | | k r¡ˆ j j3 | |  j ƒ } | rv| d k rõd | | j j f GHn  y" x | D] } |	 j% | ƒ qÿWWnF t, k
 r_} t- j. j/ d | | j j | f ƒ t( j2 d | ƒ qsXt( j) d | ƒ qvq¡q¡WqŽWd d l4 m5 } | d d d | d	 | ƒd  S(   Nt	   verbosityi   R   t	   tracebacks   .managementi    s   No module namedt
   managementR   t   .iþÿÿÿt   include_auto_createdc            sM   |  j  } ˆ  j j } | | j ƒ ˆ k pK | j oK | | j j  j ƒ ˆ k S(   N(   t   _metat   introspectiont   table_name_convertert   db_tablet   auto_created(   t   modelt   optst	   converter(   t
   connectiont   tables(    sS   /home/panlixing/Python_Projects/gaeseries/django/core/management/commands/syncdb.pyt   model_installedC   s    	c         3   s*   |  ]  \ } } | t  ˆ  | ƒ f Vq d  S(   N(   t   filter(   t   .0t   app_namet
   model_list(   R%   (    sS   /home/panlixing/Python_Projects/gaeseries/django/core/management/commands/syncdb.pys	   <genexpr>J   s   i   s   Processing %s.%s models   Creating table %st   usings%   Installing custom SQL for %s.%s models1   Failed to install custom SQL for %s.%s model: %s
iÿÿÿÿs   No custom SQL for %s.%s models    Installing index for %s.%s models,   Failed to install index for %s.%s model: %s
(   t   call_commandt   loaddatat   initial_data(6   t   intt   gett   FalseR   t   styleR   t   INSTALLED_APPSR   t   ImportErrort   argst
   startswithR
   R   t   cursorR   t   table_namest   installed_modelst   setR	   t   get_appst   __name__t   splitt
   get_modelst   TrueR   t   allow_syncdbR   t   itemsR   t   object_namet   creationt   sql_create_modelt   addt
   setdefaultt   extendt   sql_for_pending_referencesR   t   executet   appendR   R   t   commit_unless_managedR   R   t	   Exceptiont   syst   stderrt   writeR   t	   print_exct   rollback_unless_managedt   sql_indexes_for_modelt   django.core.managementR+   (   t   selft   optionsR   R   t   show_tracebackR(   t   exct   msgt   dbR6   t   seen_modelst   created_modelst   pending_referencest   appt   mt
   all_modelst   manifestR)   R    t   sqlt
   referencest   reftot   refst	   statementt
   custom_sqlt   eR   t	   index_sqlR+   (    (   R$   R%   R#   sS   /home/panlixing/Python_Projects/gaeseries/django/core/management/commands/syncdb.pyt   handle_noargs   s¢    

	f!)"'#(	   R;   t
   __module__R   t   option_listR    R>   R
   R   Rh   (    (    (    sS   /home/panlixing/Python_Projects/gaeseries/django/core/management/commands/syncdb.pyR      s   (   t   optparseR    RL   t   django.confR   t   django.core.management.baseR   t   django.core.management.colorR   t   django.core.management.sqlR   R   t	   django.dbR   R   R   R	   R
   t   django.utils.datastructuresR   t   django.utils.importlibR   R   (    (    (    sS   /home/panlixing/Python_Projects/gaeseries/django/core/management/commands/syncdb.pyt   <module>   s   (