3
g                 @   s   d dl 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 d dlmZmZmZ G d	d
 d
eZdS )    N)List)settings)BaseCommandCommandError)DEFAULT_DB_ALIAS)signalcommand)RemovedInNextVersionWarning)SQLITE_ENGINESPOSTGRESQL_ENGINESMYSQL_ENGINESc                   s>   e Zd ZU dZg Zee dZ fddZe	dd Z
  ZS )Commanda+  Generates the SQL to create your database for you, as specified in settings.py
The envisioned use case is something like this:

    ./manage.py sqlcreate [--database=<databasename>] | mysql -u <db_administrator> -p
    ./manage.py sqlcreate [--database=<databasname>] | psql -U <db_administrator> -WTc                sP   t  j| |jddddtdd |jdtdt d	 |jd
dddddd d S )Nz-Rz--routerstorerouterz:Use this router-database other then defined in settings.py)actiondestdefaulthelpz
--databasezGNominates a database to run command for. Defaults to the "%s" database.)r   r   z-Dz--drop
store_truedropFzCIf given, includes commands to drop any existing user and database.)superadd_argumentsadd_argumentr   )selfparser)	__class__ m/var/www/tester-filtro-web/env/lib/python3.6/site-packages/django_extensions/management/commands/sqlcreate.pyr      s    

zCommand.add_argumentsc             O   s  |d }|d t kr,tjdtdd |d }tjj|}|d krLtd| |jd}|jd}|jd	}|jd
}|jd}	tj	 }
|	sd}	|t
krtjjd n|tkrtjjd td|  td|||
|f  n|tkrf|d rtd|f  |rtd|f  |rN|rNtd||f  td||f  td||f  ntd td|f  n,tjjd|  td|  td||f  d S )Ndatabaser   z2--router is deprecated. You should use --database.   )
stacklevelzUnknown database %sZENGINEUSERZPASSWORDNAMEZHOST	localhostzH-- manage.py migrate will automatically create a sqlite3 database file.
z-- WARNING!: https://docs.djangoproject.com/en/dev/ref/databases/#collation-settings
-- Please read this carefully! Collation will be set to utf8_bin to have case-sensitive data.
z7CREATE DATABASE %s CHARACTER SET utf8 COLLATE utf8_bin;z=GRANT ALL PRIVILEGES ON %s.* to '%s'@'%s' identified by '%s';r   zDROP DATABASE IF EXISTS %s;zDROP USER IF EXISTS %s;z5CREATE USER %s WITH ENCRYPTED PASSWORD '%s' CREATEDB;z4CREATE DATABASE %s WITH ENCODING 'UTF-8' OWNER "%s";z*GRANT ALL PRIVILEGES ON DATABASE %s TO %s;z-- Assuming that unix domain socket connection mode is being used because
-- USER or PASSWORD are blank in Django DATABASES configuration.z)CREATE DATABASE %s WITH ENCODING 'UTF-8';z6-- Don't know how to handle '%s' falling back to SQL.
zCREATE DATABASE %s;z*GRANT ALL PRIVILEGES ON DATABASE %s to %s;)r   warningswarnr   r   Z	DATABASESgetr   socketgethostnamer	   sysstderrwriter   printr
   )r   argsoptionsr   ZdbinfoZengineZdbuserZdbpassZdbnameZdbhostZdbclientr   r   r   handle)   sL    






zCommand.handle)__name__
__module____qualname__r   Zrequires_system_checksr   strZcan_import_settingsr   r   r.   __classcell__r   r   )r   r   r      s
   
r   )r&   r(   r#   typingr   Zdjango.confr   Zdjango.core.management.baser   r   Z	django.dbr   Z"django_extensions.management.utilsr   Z#django_extensions.utils.deprecationr   Zdjango_extensions.settingsr	   r
   r   r   r   r   r   r   <module>   s   