ó
¸9—^c           @   sb   d  Z  d d l Z d d l m Z d d l m Z m Z d d l m Z d e f d „  ƒ  YZ	 d S(   s.   
sqldns.py

Prints Data Source Name on stdout
iÿÿÿÿN(   t   settings(   t   BaseCommandt   CommandError(   t   color_stylet   Commandc           B   sJ   e  Z d  Z e Z e Z d „  Z d „  Z d „  Z	 d „  Z
 d d „ Z RS(   sr   Prints DSN on stdout, as specified in settings.py

    ./manage.py sqldsn [--router=<routername>] [--style=pgpass]c         C   sº   t  t |  ƒ j | ƒ | j d 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 d d t d d ƒ| j d d d d d d d t d d ƒd  S(   Ns   -Rs   --routert   actiont   storet   destt   routert   defaultt   helps+   Use this router-database other then defaults   -ss   --stylet   styles,   DSN format style: keyvalue, uri, pgpass, alls   -as   --allt
   store_truet   alls    Show DSN for all database routess   -qs   --quiett   quiets   Quiet mode only show DSN(   t   superR   t   add_argumentst   add_argumentt   Nonet   False(   t   selft   parser(    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyR      s"    c         O   s‹   t  ƒ  |  _ | d } | r. t j j ƒ  } n | d g } xI t | ƒ D]; \ } } | d k rs t j j d ƒ n  |  j	 | | ƒ qH Wd  S(   NR   R   i    s   
(
   R   R   R    t	   DATABASESt   keyst	   enumeratet   syst   stdoutt   writet   show_dsn(   R   t   argst   optionst   all_routerst   routerst   iR   (    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyt   handle-   s    
c      	   C   sµ  t  j j | ƒ } | d } | d } | d  k rE t d | ƒ ‚ n  | j d ƒ j d ƒ d } | j d ƒ } | j d ƒ } | j d	 ƒ }	 | j d
 ƒ }
 | j d ƒ } g  } | d k rã | j |  j |
 | |	 | | ƒ ƒ nu | d k r| j |  j	 |
 | |	 | | d | ƒƒ n> | d k r?| j d j
 |	 ƒ ƒ n | j |  j j d ƒ ƒ | s‡t j j |  j j d | | f ƒ ƒ n  x' | D] } t j j d j
 | ƒ ƒ qŽWd  S(   NR   R   s   Unknown database router %st   ENGINEt   .iÿÿÿÿt   USERt   PASSWORDt   NAMEt   HOSTt   PORTt   mysqlt
   postgresqlt   postgresql_psycopg2t   postgist	   dsn_stylet   sqlite3s   {}s#   Unknown database, cant generate DSNs&   DSN for router '%s' with engine '%s':
s   {}
(   R+   R,   R-   (   R    R   t   getR   R   t   splitt   appendt   _mysqlt   extendt   _postgresqlt   formatR   t   ERRORR   R   R   t	   SQL_TABLE(   R   R   R   t   dbinfoR   R.   t   enginet   dbusert   dbpasst   dbnamet   dbhostt   dbportt   dsnt   output(    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyR   ;   s0    

%)c         C   s8   d } | d  k	 r | d 7} n  | j | | | | | ƒ S(   Ns.   host="{0}", db="{2}", user="{3}", passwd="{4}"s   , port="{1}"(   R   R6   (   R   R>   R?   R=   R;   R<   t   dsnstr(    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyR3   \   s    c   	      C   sŠ  g  } | d k s* | d k s* | d k rn d } | d k	 rI | d 7} n  | j | j | | | | | ƒ ƒ n  | d k s† | d k rÊ d } | d k	 r¥ | d 7} n  | j | j | | | | | ƒ ƒ n  | d k sâ | d k r4d	 } | j | j d
 | rd j d
 | d | ƒ n | d | d | d | ƒ ƒ n  | d k sL| d k r†| j d j t t t d | | | | | g ƒ ƒ ƒ ƒ n  | S(   s`   PostgreSQL psycopg2 driver accepts two syntaxes

        Plus a string for .pgpass file
        R   t   keyvalues1   host='{0}' dbname='{2}' user='{3}' password='{4}'s    port='{1}'t   kwargss6   host='{0}', database='{2}', user='{3}', password='{4}'s   , port='{1}'t   uris,   postgresql://{user}:{password}@{host}/{name}t   hosts   {host}:{port}t   portt   namet   usert   passwordt   pgpasst   :N(   R   R2   R6   t   joint   mapt   strt   filter(	   R   R>   R?   R=   R;   R<   R.   R@   RB   (    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyR5   d   s8    $$%N(   t   __name__t
   __module__R
   R   t   requires_system_checkst   Truet   can_import_settingsR   R"   R   R3   R   R5   (    (    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyR      s   			!	(
   t   __doc__R   t   django.confR    t   django.core.management.baseR   R   t   django.core.management.colorR   R   (    (    (    sN   /tmp/pip-unpacked-wheel-a0M10Y/django_extensions/management/commands/sqldsn.pyt   <module>   s
   