U
    ÓZj¤
  ã                   @  sÒ   d dl mZ d dlZ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 ejrbddlmZ eƒ Ze d¡Ze d	¡Zd
ddœdd„Zddddœdd„Zdddœdd„Zdddœdd„Zdddœdd„ZdS )é    )ÚannotationsN)Úcurrent_app)Úhas_app_context)Ú	Namespaceé   )ÚSessionzmodels-committedzbefore-models-committedzsa.orm.scoped_sessionÚNone)ÚsessionÚreturnc                 C  s\   t jj| dtdd� t jj| dtdd� t j | dt¡ t j | dt¡ t j | dt¡ d S )NZbefore_flushT)ÚnamedZbefore_commitZafter_commitZafter_rollback)ÚsaÚeventÚlistenÚ_record_opsÚ_before_commitÚ_after_commitÚ_after_rollback©r	   © r   úg/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/flask_sqlalchemy/track_modifications.pyÚ_listen    s
    r   r   zt.Any)r	   Úkwargsr
   c                 K  sx   t ƒ s
d S tjd sd S | jdf| jdf| jdffD ]>\}}|D ]0}t |¡}|jrZ|j	nt
|ƒ}||f| j|< q@q4d S )NÚSQLALCHEMY_TRACK_MODIFICATIONSÚinsertÚupdateÚdelete)r   r   ÚconfigÚnewZdirtyZdeletedr   ÚinspectZhas_identityZidentity_keyÚidÚ_model_changes)r	   r   ÚtargetsZ	operationÚtargetÚstateÚkeyr   r   r   r   (   s    
ý
r   c                 C  sF   t ƒ s
d S t ¡ }|jd s d S | jrBt| j ¡ ƒ}tj||d� d S ©Nr   )Úchanges)	r   r   Ú_get_current_objectr   r    ÚlistÚvaluesÚbefore_models_committedÚsend©r	   Zappr&   r   r   r   r   :   s    
r   c                 C  sP   t ƒ s
d S t ¡ }|jd s d S | jrLt| j ¡ ƒ}tj||d� | j 	¡  d S r%   )
r   r   r'   r   r    r(   r)   Úmodels_committedr+   Úclearr,   r   r   r   r   H   s    
r   c                 C  s   | j  ¡  d S )N)r    r.   r   r   r   r   r   W   s    r   )Ú
__future__r   ÚtypingÚtZ
sqlalchemyr   Zsqlalchemy.eventZsqlalchemy.ormZflaskr   r   Zflask.signalsr   ÚTYPE_CHECKINGr	   r   Z_signalsÚsignalr-   r*   r   r   r   r   r   r   r   r   r   Ú<module>   s"   
	
