
    jg                     @   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
 Zd Zd Zd Zd Zd Z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e      Zy)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                     |S N dbhostdbportdbnamedbuserdbpasss        g/var/www/html/Stanley/venv/lib/python3.12/site-packages/django_extensions/management/commands/sqldsn.py_sqlite_namer      s    M    c           	      :    d|  d| d| d| d	}|	|d| dz  }|S )Nzhost="z", db="z	", user="z", passwd=""z, port="r   r   r   r   r   r   dsnstrs         r   _mysql_keyvaluer      sA    fXWVHIfX[PQRFHVHA&&Mr   c           	      8    d|  d| d| d| d	}||d| z  }|S )Nz-h "z" -D "z" -u "z" -p "r   z -P r   r   s         r   _mysql_argsr      s=    F86&xvfXQGFD/!Mr   c           	      :    d|  d| d| d| d	}|	|d| dz  }|S )Nzhost='z
' dbname='z' user='z' password=''z port='r   r   s         r   _postgresql_keyvaluer"   &   sA    fXZxxx|F8STUFGF81%%Mr   c                 6    d| d|d|d|}||d|z  }|S )Nzhost=z, database=z, user=z, password=z, port=r   r   s         r   _postgresql_kwargsr$   -   s=    VJk&76*KPVzZFGF:&&Mr   c                 <    dj                  d | ||||fD              S )N:c              3   2   K   | ]  }t        |        y wr   )str).0ss     r   	<genexpr>z%_postgresql_pgpass.<locals>.<genexpr>5   s     M$LqCF$Ls   )joinr   s        r   _postgresql_pgpassr-   4   s"    88MVVVVV$LMMMr   c                       fd}|S )Nc                     | xs d}||dk7  r|d| z  }||dk7  r|}||dk7  r|d| z  }| d| } d| d| S )N r&   @z:///r   )r   r   r   r   r   hostuserengines          r   innerz_uri.<locals>.inner9   s|    |&B,axL D&B,D!fl!F8$V1TF#DTF!F8,,r   r   )r5   r6   s   ` r   _urir7   8   s    	- Lr   filenameurisqlitekeyvalueargsmysqlkwargs
postgresqlpgpassc                   H     e Zd ZU dZg Zee   ed<   dZ fdZ	d Z
d Z xZS )Commandz1Prints DSN on stdout, as specified in settings.pyrequires_system_checksTc                    t         |   |       |j                         }|j                  ddddt        d       |j                  dt        dt        z  	       t        t        t        D cg c]  \  }}}|
| c}}            }|j                  d
dddd |dgz   d       |j                  dddddd       |j                  dddddd       y c c}}w )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.)rI   rJ   z-sz--stylestyleallzDSN format style.)rG   rH   rI   choicesrJ   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parserdbspec_rK   styles	__class__s         r   rQ   zCommand.add_arguments[   s	   f%446*W#3c 	 	

 	"2Z]mm 	 	
 kWk{q%UEVUkWXY)G$%0@$ 	 	

 	',3 	 	

 	)L%+ 	 	
 Xs   .C:Cc                 h   t               | _        |d   }|rt        j                  j	                         }n4|d   g}|d   t
        k7  r"t        j                  dt        d       |d   g}t        |      D ];  \  }}|dk7  rt        j                  j                  d       | j                  ||       = y )	NrL   databaserF   z2--router is deprecated. You should use --database.   )
stacklevelr   
)r   rK   r   	DATABASESkeysr   warningswarnr   	enumeratesysstdoutwriteshow_dsn)rW   r<   optionsall_databases	databasesir^   s          r   handlezCommand.handlex   s     ]
 **//1I ,-Ix $44RTo|}~$X./	$Y/KAxAv

  &MM(G, 0r   c                 2   t         j                  j                  |      }|d   }|d   }|t        d|z        |j                  d      |j                  d      }|j                  d      }|j                  d      }|j                  d      }	|j                  d	      }
|
d
k(  rd }
t        D cg c]"  \  }}}|v r||k(  s|dk(  r| ||	|
|||      $ }}}}|sHdj                  fdt        D              }| j                  j                  |rd| d d| dnd      g}|s?t        j                  j                  | j                  j                  d|dd             |D ]$  }t        j                  j                  | d       & y c c}}}w )NrO   rK   zUnknown database %sENGINEUSERPASSWORDNAMEHOSTPORTr0   rL   z, c              3   6   K   | ]  \  }}}|v r||  y wr   r   )r)   enginesrK   rZ   r5   s       r   r+   z#Command.show_dsn.<locals>.<genexpr>   s,      "</:+'5!W$): {s   zInvalid style z for z (available: )z$Unknown database, can't generate DSNzDSN for database z with engine z:
ra   )r   rb   getr   rV   r,   rK   ERRORrg   rh   ri   	SQL_TABLE)rW   r^   rk   dbinforO   	dsn_styler   r   r   r   r   rx   rK   	formatterdsn	availableoutputr5   s                    @r   rj   zCommand.show_dsn   s   ##''1 G$	>4x?@@H%F#J'F#F#F#R<F .9
-8)	 U"i5&8U=N fffff=-8 	 
 		 "</:"< <I ::## !5i[PQR"H C
 JJTZZ114Eh\Q^_e^hhk2lmnFJJxr]+ '
s   2'F)__name__
__module____qualname__rJ   rC   r   r(   __annotations__can_import_settingsrQ   ro   rj   __classcell__)r\   s   @r   rB   rB   V   s,    >D(*DI*
:-"%,r   rB   )__doc__rg   rd   typingr   django.confr   django.core.management.baser   r   django.core.management.colorr   	django.dbr   django_extensions.settingsr	   r
   r   #django_extensions.utils.deprecationr   r   r   r   r"   r$   r-   r7   rV   rB   r   r   r   <module>r      s         A 4 & X X KN T<(Z.UDN+D/*J0FK(E4=)34%9:#56\ 23#56 X,k X,r   