
    [h
                       d dl mZ d dlZd dlZd dlmZ d dl	m
Z d dlmZ d dlmZ d dlmZ ej        rddlmZ  e            Ze                    d          Z	 e                    d	          Z	 ddZddZddZddZddZdS )    )annotationsN)current_app)has_app_context)	Namespace   )Sessionzmodels-committedzbefore-models-committedsessionsa_orm.scoped_session[Session]returnNonec                   t          j        | dt          d           t          j        | dt          d           t          j        | dt                     t          j        | dt                     t          j        | dt
                     d S )Nbefore_flushT)namedbefore_commitafter_commitafter_rollback)sa_eventlisten_record_ops_before_commit_after_commit_after_rollbackr	   s    s/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/flask_sqlalchemy/track_modifications.py_listenr       sw    OG^[EEEEOG_kFFFFOG_n===OG^];;;OG-?????    r   kwargst.Anyc                   t                      sd S t          j        d         sd S | j        df| j        df| j        dffD ]G\  }}|D ]?}t          j        |          }|j        r|j	        nt          |          }||f| j        |<   @Hd S )NSQLALCHEMY_TRACK_MODIFICATIONSinsertupdatedelete)r   r   confignewdirtydeletedsainspecthas_identityidentity_keyid_model_changes)r	   r   targets	operationtargetstatekeys          r   r   r   (   s     >?  
h	!	(# > >
  	> 	>FJv&&E(-(:J%$$6

C+19*=G"3''	>> >r   c                    t                      sd S t          j                    }|j        d         sd S | j        rDt          | j                                                  }t                              ||           d S d S Nr    )changes)	r   r   _get_current_objectr$   r-   listvaluesbefore_models_committedsendr	   appr5   s      r   r   r   :   s     

)
+
+C:67  ;w-446677$$S'$:::::; ;r   c                2   t                      sd S t          j                    }|j        d         sd S | j        r]t          | j                                                  }t                              ||           | j        	                                 d S d S r4   )
r   r   r6   r$   r-   r7   r8   models_committedr:   clearr;   s      r   r   r   H   s     

)
+
+C:67  'w-446677c7333$$&&&&&' 'r   c                8    | j                                          d S )N)r-   r?   r   s    r   r   r   W   s      """""r   )r	   r
   r   r   )r	   r   r   r   r   r   )r	   r   r   r   )
__future__r   typingt
sqlalchemyr(   sqlalchemy.eventeventr   sqlalchemy.ormormsa_ormflaskr   r   flask.signalsr   TYPE_CHECKINGr	   r   _signalssignalr>   r9   r   r   r   r   r    r   r   <module>rP      sT   " " " " " "         # # # # # #             ! ! ! ! ! ! # # # # # #? !      9;;??#566  #//*CDD 
@ @ @ @> > > >$; ; ; ;' ' ' '# # # # # #r   