o
    XJ@h
                     @  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 )NZbefore_flushT)namedZbefore_commitZafter_commitZafter_rollback)sa_eventlisten_record_ops_before_commit_after_commit_after_rollbackr    r   W/var/www/html/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newZdirtyZdeletedsainspectZhas_identityZidentity_keyid_model_changes)r   r   targetsZ	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   Zappr(   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 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"   r0   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tZ
sqlalchemyr   Zsqlalchemy.eventeventr   Zsqlalchemy.ormZormZsa_ormZflaskr   r   Zflask.signalsr   TYPE_CHECKINGr   r   Z_signalssignalr/   r,   r   r   r   r   r   r   r   r   r   <module>   s(    





