a
    8Xh                     @   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   q/var/www/viveiro_mudafortebrasil/venv/lib/python3.9/site-packages/django_extensions/management/commands/sqldsn.py_sqlite_name   s    r   c              	   C   s:   d|  d| d| d| d	}|d ur6|d| d7 }|S )Nzhost="z", db="z	", user="z", passwd=""z, port="r   r   r   r   r   r   Zdsnstrr   r   r   _mysql_keyvalue   s    r   c              	   C   s8   d|  d| d| d| d	}|d ur4|d| 7 }|S )Nz-h "z" -D "z" -u "z" -p "r   z -P r   r   r   r   r   _mysql_args   s    r   c              	   C   s:   d|  d| d| d| d	}|d ur6|d| d7 }|S )Nzhost='z
' dbname='z' user='z' password=''z port='r   r   r   r   r   _postgresql_keyvalue&   s    r   c                 C   s6   d| d|d|d|}|d ur2|d|7 }|S )Nzhost=z, database=z, user=z, password=z, port=r   r   r   r   r   _postgresql_kwargs-   s    r   c                 C   s   d dd | ||||fD S )N:c                 s   s   | ]}t |V  qd S r   )str).0sr   r   r   	<genexpr>5       z%_postgresql_pgpass.<locals>.<genexpr>)joinr   r   r   r   _postgresql_pgpass4   s    r$   c                    s    fdd}|S )Nc                    sz   | pd}|d ur&|dkr&|d| 7 }|d urf|dkrf|}|d u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                       sF   e Zd ZU dZg Zee ed< dZ fddZ	dd Z
dd	 Z  ZS )
Commandz1Prints DSN on stdout, as specified in settings.pyrequires_system_checksTc              	      s   t  | | }|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.)r8   r9   c                 S   s   g | ]\}}}|d ur|qS r   r   )r   _styler   r   r   
<listcomp>g   r"   z)Command.add_arguments.<locals>.<listcomp>z-sz--styler;   allzDSN format style.)r6   r7   r8   choicesr9   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   rB   [   s6    zCommand.add_argumentsc                 O   s   t  | _|d }|r tj }n0|d g}|d tkrPtjdtdd |d g}t	|D ](\}}|dkrtt
jd | || qXd S )	Nr=   databaser5   z2--router is deprecated. You should use --database.   )
stacklevelr   
)r   r;   r   	DATABASESkeysr   warningswarnr   	enumeratesysstdoutwriteshow_dsn)rH   r0   optionsZall_databasesZ	databasesirL   r   r   r   handlex   s    

zCommand.handlec              	      s&  t j|}|d }|d |d u r0td| |d|d|d|d|d |d	d
krxd  fddtD }|sdfddtD }| j|rd d d| dndg}|stj	
| jd|dd |D ]}tj	
| d qd S )Nr@   r;   zUnknown database %sZENGINEUSERZPASSWORDNAMEZHOSTZPORTr%   c                    sB   g | ]:\}}}|v r|ks.d kr|dur| qS )r=   Nr   )r   enginesr;   	formatterr   r   r   r   r   Z	dsn_styler+   r   r   r<      s   z$Command.show_dsn.<locals>.<listcomp>z, c                 3   s(   | ] \}}} |v r|d ur|V  qd S r   r   )r   r^   r;   r:   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:
rO   )r   rP   getr   rG   r#   r;   ERRORrU   rV   rW   Z	SQL_TABLE)rH   rL   rY   Zdbinfor@   Zdsn	availableoutputr   r`   r   rX      s:    





"zCommand.show_dsn)__name__
__module____qualname__r9   r3   r   r   __annotations__Zcan_import_settingsrB   r[   rX   __classcell__r   r   rJ   r   r2   V   s   
r2   )__doc__rU   rR   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-   rG   r2   r   r   r   r   <module>   s<   