3
g                 @   s0  d 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 ddlmZmZmZ dd	lmZ d
d Zdd Zdd Zdd Zdd Zdd Zdd Zedefedefededfedefedefedefededfedefedefedefededfed efgZG d!d" d"eZdS )#z.
sqldns.py

Prints Data Source Name on stdout
    N)List)settings)BaseCommandCommandError)color_style)DEFAULT_DB_ALIAS)SQLITE_ENGINESPOSTGRESQL_ENGINESMYSQL_ENGINES)RemovedInNextVersionWarningc             C   s   |S )N )dbhostdbportdbnamedbuserdbpassr   r   j/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django_extensions/management/commands/sqldsn.py_sqlite_name   s    r   c          	   C   s:   d|  d| d| d| d	}|d k	r6|d| d7 }|S )Nzhost="z", db="z	", user="z", passwd=""z, port="r   )r   r   r   r   r   dsnstrr   r   r   _mysql_keyvalue   s    r   c          	   C   s8   d|  d| d| d| d	}|d k	r4|d| 7 }|S )Nz-h "z" -D "z" -u "z" -p "r   z -P r   )r   r   r   r   r   r   r   r   r   _mysql_args   s    r   c          	   C   s:   d|  d| d| d| d	}|d k	r6|d| d7 }|S )Nzhost='z
' dbname='z' user='z' password=''z port='r   )r   r   r   r   r   r   r   r   r   _postgresql_keyvalue&   s    r   c             C   s6   d| d|d|d|}|d k	r2|d|7 }|S )Nzhost=z, database=z, user=z, password=z, port=r   )r   r   r   r   r   r   r   r   r   _postgresql_kwargs-   s    r   c             C   s   dj dd | ||||gD S )N:c             s   s   | ]}t |V  qd S )N)str).0sr   r   r   	<genexpr>5   s    z%_postgresql_pgpass.<locals>.<genexpr>)join)r   r   r   r   r   r   r   r   _postgresql_pgpass4   s    r!   c                s    fdd}|S )Nc                sz   | pd}|d k	r&|dkr&|d| 7 }|d k	rf|dkrf|}|d k	rX|dkrX|d| 7 }| d| }  d| d| S )N r   @z:///r   )r   r   r   r   r   hostuser)enginer   r   inner9   s    z_uri.<locals>.innerr   )r'   r(   r   )r'   r   _uri8   s    
r)   filenameuriZsqliteZkeyvalueargsZmysqlkwargsZ
postgresqlZpgpassc                   sB   e Zd ZU dZg Zee dZ fddZdd Z	dd Z
  ZS )	Commandz1Prints DSN on stdout, as specified in settings.pyTc          	      s   t  j| |j }|jddddtdd |jdtdt d	 ttd
d tD }|jddddd |dg dd |jddddddd |jddddddd d S )Nz-Rz--routerstorerouterzPUse this router-database other then default (deprecated: use --database instead))actiondestdefaulthelpz
--databasezGNominates a database to run command for. Defaults to the "%s" database.)r3   r4   c             S   s   g | ]\}}}|d k	r|qS )Nr   )r   _styler   r   r   
<listcomp>g   s    z)Command.add_arguments.<locals>.<listcomp>z-sz--styler6   allzDSN format style.)r1   r2   r3   choicesr4   z-az--all
store_trueFz Show DSN for all database routesz-qz--quietquietzQuiet mode only show DSN)superadd_argumentsadd_mutually_exclusive_groupadd_argumentr   sortedset_FORMATTERS)selfparserZdbspecZstyles)	__class__r   r   r=   [   s,    zCommand.add_argumentsc             O   s   t  | _|d }|r tjj }n0|d g}|d tkrPtjdtdd |d g}x4t	|D ](\}}|dkrvt
jjd | j|| qZW d S )	Nr8   databaser0   z2--router is deprecated. You should use --database.   )
stacklevelr   
)r   r6   r   	DATABASESkeysr   warningswarnr   	enumeratesysstdoutwriteshow_dsn)rC   r,   optionsZall_databasesZ	databasesirF   r   r   r   handlex   s    

zCommand.handlec                s*  t jj|}|d }|d |d kr0td| |jd|jd|jd|jd|jd |jd	d
krxd  fddtD }|sdjfddtD }| jj|rd d d| dndg}|stj	j
| jjd|dd x |D ]}tj	j
| d q
W d S )Nr;   r6   zUnknown database %sZENGINEUSERZPASSWORDNAMEZHOSTZPORTr"   c                sB   g | ]:\}}}|kr|ks.d kr|dk	r| qS )r8   Nr   )r   enginesr6   	formatter)r   r   r   r   r   	dsn_styler'   r   r   r7      s   z$Command.show_dsn.<locals>.<listcomp>z, c             3   s(   | ] \}}} |kr|d k	r|V  qd S )Nr   )r   rX   r6   r5   )r'   r   r   r      s    z#Command.show_dsn.<locals>.<genexpr>zInvalid style z for z (available: )z$Unknown database, can't generate DSNzDSN for database z with engine z:
rI   )r   rJ   getr   rB   r    r6   ERRORrO   rP   rQ   Z	SQL_TABLE)rC   rF   rS   Zdbinfor;   Zdsn	availableoutputr   )r   r   r   r   r   rZ   r'   r   rR      s0    





$"
zCommand.show_dsn)__name__
__module____qualname__r4   Zrequires_system_checksr   r   Zcan_import_settingsr=   rU   rR   __classcell__r   r   )rE   r   r.   V   s   
r.   )__doc__rO   rL   typingr   Zdjango.confr   Zdjango.core.management.baser   r   Zdjango.core.management.colorr   Z	django.dbr   Zdjango_extensions.settingsr   r	   r
   Z#django_extensions.utils.deprecationr   r   r   r   r   r   r!   r)   rB   r.   r   r   r   r   <module>   s:   