o
    ‹ågÃ
  ã                   @  s¾   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r5ddlmZ eƒ Ze d¡Z	 e d	¡Z	 ddd„Zddd„Zddd„Zddd„Zd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                 C  sR   t j| dtdd� t j| dtdd� t  | dt¡ t  | dt¡ t  | 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   © r   ú`/var/www/html/flaskapp/venv/lib/python3.10/site-packages/flask_sqlalchemy/track_modifications.pyÚ_listen    s
   r   r   Úkwargsút.Anyc                 K  sx   t ƒ sd S tjd sd S | jdf| jdf| jdffD ]\}}|D ]}t |¡}|jr-|j	nt
|ƒ}||f| j|< q qd 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Úkeyr   r   r   r   (   s   
ý
ýûr   c                 C  sJ   t ƒ sd S t ¡ }|jd sd S | jr#t| j ¡ ƒ}tj||d� d S d S ©Nr   )Úchanges)	r   r   Ú_get_current_objectr!   r*   ÚlistÚvaluesÚbefore_models_committedÚsend©r   Úappr1   r   r   r   r   :   s   
þr   c                 C  sT   t ƒ sd S t ¡ }|jd sd S | jr(t| j ¡ ƒ}tj||d� | j 	¡  d S d S r0   )
r   r   r2   r!   r*   r3   r4   Úmodels_committedr6   Úclearr7   r   r   r   r   H   s   
ýr   c                 C  s   | j  ¡  d S )N)r*   r:   r   r   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Úsignalr9   r5   r   r   r   r   r   r   r   r   r   Ú<module>   s(    





