https://t.me/RX1948
Server : Apache
System : Linux iad1-shared-b8-43 6.6.49-grsec-jammy+ #10 SMP Thu Sep 12 23:23:08 UTC 2024 x86_64
User : dh_edsupp ( 6597262)
PHP Version : 8.2.26
Disable Function : NONE
Directory :  /lib/python3/dist-packages/django/db/backends/base/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/django/db/backends/base/__pycache__/creation.cpython-310.pyc
o

�a39�@s�ddlZddlZddlmZddlmZmZddlmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZd
ZGdd�d�ZdS)
�N)�StringIO)�expectedFailure�skip)�apps)�settings)�serializers)�router)�atomic)�
import_string�test_c@s�eZdZdZdd�Zdd�Zdd�Zd,dd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zd-dd�Z
d-dd�Zd.dd�Zdd�Zd-dd �Zd/d"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd!S)0�BaseDatabaseCreationzs
    Encapsulate backend-specific differences pertaining to creation and
    destruction of the test database.
    cCs
||_dS�N)�
connection)�selfr�r�B/usr/lib/python3/dist-packages/django/db/backends/base/creation.py�__init__�
zBaseDatabaseCreation.__init__cCs
|j��Sr
)r�_nodb_cursor�rrrrrrz!BaseDatabaseCreation._nodb_cursorcCstj�|tj�dSr
)�sys�stderr�write�os�linesep)r�msgrrr�logszBaseDatabaseCreation.log�FTc	CsHddlm}|��}|dkr!d}|rd}|�d||�||�f�|�|||�|j��|tj	|jj
d<||jjd<z6|jjdd	d
urTtj}dd�t
��D�t_|d
t|dd�d
|jj
dd�W|jjdd	d
urr|t_n|jjdd	d
ur�|t_w|r�|��|j_|d|jj
d�|j��tj�d�dkr�|��|S)z�
        Create a test database, prompting the user for confirmation if the
        database already exists. Return the name of the test database created.
        r)�call_commandr�CreatingzUsing existing� %s test database for alias %s...�NAME�TEST�MIGRATEFcSsi|]}|jd�qSr
)�label)�.0�apprrr�
<dictcomp>Cs��z7BaseDatabaseCreation.create_test_db.<locals>.<dictcomp>�migrateT)�	verbosity�interactive�database�
run_syncdb�createcachetable)r+�RUNNING_DJANGOS_TEST_SUITE�true)�django.core.managementr�_get_test_db_namer�_get_database_display_str�_create_test_dbr�closer�	DATABASES�alias�
settings_dict�MIGRATION_MODULESr�get_app_configs�max�serialize_db_to_string�_test_serialized_contents�ensure_connectionr�environ�get� mark_expected_failures_and_skips)	rr)�autoclobber�	serialize�keepdbr�test_database_name�action�old_migration_modulesrrr�create_test_db sN
�

����
z#BaseDatabaseCreation.create_test_dbcCs|d|jjd<dS)z�
        Set this database up to be used in testing as a mirror of a primary
        database whose settings are given.
        r!N)rr7)r�primary_settings_dictrrr�set_as_test_mirrorfsz'BaseDatabaseCreation.set_as_test_mirrorcs.�fdd�}t�}tjd|�d|d�|��S)z�
        Serialize all data in the database into a JSON string.
        Designed only for test runner usage; will not handle large
        amounts of data.
        c3s��ddlm}|�j�}t��D]>}|jdurN|j|jvrN|jt	j
vrN|��D]&}|j�
�j�rMt��jj|�rM|j��jj��|jjj�}|��EdHq'qdS)Nr)�MigrationLoader)�django.db.migrations.loaderrJrrr9�
models_moduler$�
migrated_apps�namer�TEST_NON_SERIALIZED_APPS�
get_models�_meta�can_migrater�allow_migrate_modelr6�
_base_manager�using�order_by�pk�iterator)rJ�loader�
app_config�model�querysetrrr�get_objectsts(�

������z@BaseDatabaseCreation.serialize_db_to_string.<locals>.get_objects�jsonN)�indent�stream)rrrB�getvalue)rr]�outrrrr;msz+BaseDatabaseCreation.serialize_db_to_stringc	Cs�t|�}t�}t|jjd��?|j���"tjd||jjd�D]}|��|�	|j
jjj
�qWd�n1s9wY|jj|d�Wd�dS1sPwYdS)zw
        Reload the database with data from a string generated by
        the serialize_db_to_string() method.
        )rUr^N)�table_names)r�setr	rr6�constraint_checks_disabledr�deserialize�save�add�object�	__class__rQ�db_table�check_constraints)r�datarc�objrrr�deserialize_db_from_string�s��"�z/BaseDatabaseCreation.deserialize_db_from_stringcCs$d|jj|dkrd|fSdfS)zR
        Return display string for a database for use in various actions.
        z'%s'%s�z ('%s')�)rr6)rr)�
database_namerrrr2�s��z.BaseDatabaseCreation._get_database_display_strcCs0|jjddr|jjddSt|jjdS)z�
        Internal implementation - return the name of the test DB that will be
        created. Only useful when called from create_test_db() and
        _create_test_db() and when no external munging is done with the 'NAME'
        settings.
        r"r!)rr7�TEST_DATABASE_PREFIXrrrrr1�sz&BaseDatabaseCreation._get_test_db_namecCs|�d|�dS)Nz%CREATE DATABASE %(dbname)s %(suffix)s)�execute)r�cursor�
parametersrCrrr�_execute_create_test_db�sz,BaseDatabaseCreation._execute_create_test_dbc	Cst|��}|jj�|�|��d�}|����}z	|�|||�Wn�ty�}zu|r7|WYd}~Wd�S|�d|�|sFt	d|�}|sL|dkr�z |dkr]|�d|�
||�f�|�d|�|�|||�Wn(ty�}z|�d	|�t�
d
�WYd}~nd}~ww|�d�t�
d�WYd}~n
d}~wwWd�|SWd�|S1s�wY|S)zF
        Internal implementation - create the test db tables.
        )�dbname�suffixNz+Got an error creating the test database: %szXType 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: �yesrz,Destroying old test database for alias %s...zDROP DATABASE %(dbname)sz-Got an error recreating the test database: %srpzTests cancelled.)r1r�ops�
quote_name�sql_table_creation_suffixrrw�	Exceptionr�inputr2rtr�exit)	rr)rArCrD�test_db_paramsru�e�confirmrrrr3�sV�
�	��
���

���
��
��z$BaseDatabaseCreation._create_test_dbcCsL|jjd}|dkrd}|rd}|�d||�||�f�|�|||�dS)z(
        Clone a test database.
        r!rzCloning test databasezUsing existing clonez%s for alias %s...N)rr7rr2�_clone_test_db)rryr)rArC�source_database_namerErrr�
clone_test_db�s
�z"BaseDatabaseCreation.clone_test_dbcCs$|jj}i|�dd�|d|�i�S)zX
        Return a modified connection settings dict for the n-th clone of a DB.
        r!z{}_{})rr7�format)rry�orig_settings_dictrrr�get_test_db_clone_settings�sz/BaseDatabaseCreation.get_test_db_clone_settingscCstd��)zI
        Internal implementation - duplicate the test db tables.
        znThe database backend doesn't support cloning databases. Disable the option to run tests in parallel processes.)�NotImplementedError)rryr)rCrrrr��s�z#BaseDatabaseCreation._clone_test_dbNcCs�|j��|dur|jjd}n|�|�d}|dkr.d}|r!d}|�d||�||�f�|s6|�||�|durK|tj|jj	d<||jjd<dSdS)zv
        Destroy a test database, prompting the user for confirmation if the
        database already exists.
        Nr!r�
Destroying�
Preservingr )
rr4r7r�rr2�_destroy_test_dbrr5r6)r�old_database_namer)rCryrDrErrr�destroy_test_dbs$

��z$BaseDatabaseCreation.destroy_test_dbcCsF|���}|�d|jj�|��Wd�dS1swYdS)zF
        Internal implementation - remove the test db tables.
        zDROP DATABASE %sN)rrtrr{r|)rrDr)rurrrr�!s

�"�z%BaseDatabaseCreation._destroy_test_dbc
Cs�|jjjD]'}|�d�\}}}|�d�d}|tjvr,t|�}t||�}t	||t
|��q|jjj��D]0\}}	|	D])}|�d�\}}}|�d�d}|tjvrct|�}t||�}t	||t
|�|��q:q4dS)z�
        Mark tests in Django's test suite which are expected failures on this
        database and test which should be skipped on this database.
        �.rN)r�features�django_test_expected_failures�
rpartition�splitr�INSTALLED_APPSr
�getattr�setattrr�django_test_skips�itemsr)
r�	test_name�test_case_name�_�test_method_name�test_app�	test_case�test_method�reason�testsrrrr@-s&

�

���z5BaseDatabaseCreation.mark_expected_failures_and_skipscCsdS)zQ
        SQL to append to the end of the test table creation statements.
        rqrrrrrr}Dsz.BaseDatabaseCreation.sql_table_creation_suffixcCs$|jj}|d|d|d|��fS)z�
        Return a tuple with elements of self.connection.settings_dict (a
        DATABASES setting value) that uniquely identify a database
        accordingly to the RDBMS particularities.
        �HOST�PORT�ENGINE)rr7r1)rr7rrr�test_db_signatureJs�z&BaseDatabaseCreation.test_db_signature)rFTF)F)rFF)NrFN)�__name__�
__module__�__qualname__�__doc__rrrrGrIr;ror2r1rwr3r�r�r�r�r�r@r}r�rrrrrs*
F	


)


r)rr�ior�unittestrr�django.appsr�django.confr�django.corer�	django.dbr�django.db.transactionr	�django.utils.module_loadingr
rsrrrrr�<module>s

https://t.me/RX1948 - 2025