o
    _J@h                     @   s   d dl Z d dlmZmZ d dlmZmZ d dlmZ d dl	m
Z
mZmZ ddlmZ dd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! ZdS )"    N)ConflictingIdErrorJobLookupError)SchedulerAlreadyRunningErrorSchedulerNotRunningError)OrderedDict)current_apprequestResponse   )jsonifyc                  C   s.   t j} td| jfd| jfd| jfg}t|S )zGets the scheduler info.Zcurrent_hostallowed_hostsrunning)r   apschedulerr   Z	host_namer   r   r   )Z	schedulerd r   H/var/www/html/venv/lib/python3.10/site-packages/flask_apscheduler/api.pyget_scheduler_info   s   r   c               
   C   R   zt j  tddW S  ty( }  zttt| dddW  Y d} ~ S d} ~ ww )z
    Pauses job processing in the scheduler.

    This will prevent the scheduler from waking up to do job processing until :meth:`resume`
    is called. It will not however stop any already running job processing.
       statuserror_message  N)r   r   pauser	   	Exceptionr   dictstrer   r   r   pause_scheduler&   s   
"r    c               
   C   r   )z2
    Resumes job processing in the scheduler.
    r   r   r   r   N)r   r   resumer	   r   r   r   r   r   r   r   r   resume_scheduler4   s   
"r"   c               
   C   s   zt j  tddW S  ty( }  zttt| dddW  Y d} ~ S d} ~ w tyD }  zttt| dddW  Y d} ~ S d} ~ ww )z
    Starts the scheduler.
    r   r   r     Nr   )	r   r   startr	   r   r   r   r   r   r   r   r   r   start_scheduler@   s   
""r%   c               
   C   s   zt jdddp	i } | ddu}tjj|d tddW S  ty: } ztt	t
|dd	dW  Y d
}~S d
}~w tyV } ztt	t
|dddW  Y d
}~S d
}~ww )zR
    Shuts down the scheduler. Does not interrupt any currently running jobs.
    T)ZsilentforcewaitF)r'   r   r   r   r#   Nr   )r   get_jsongetr   r   shutdownr	   r   r   r   r   r   )datar'   r   r   r   r   shutdown_schedulerN   s   ""r,   c               
   C   s   t jdd} ztjjdi | }t|W S  ty9   td| 	d d tt
d| 	d dddd Y S  ty\ } ztj|dd	 tt
t|dd
dW  Y d}~S d}~ww )zAdds a new job.Tr&   Job idz already exists.r   i  r   exc_infor   Nr   )r   r(   r   r   add_jobr   r   loggingwarningr)   r   r   errorr   )r+   jobr   r   r   r   r2   _   s   
$"r2   c              
   C   s   zt j|  tddW S  ty+   td|  d ttd|  dddd Y S  t	yN } ztj
|dd	 ttt|dd
dW  Y d}~S d}~ww )zDeletes a job.r   r   r.    not found.
 not foundr     Tr0   r   N)r   r   Z
remove_jobr	   r   r3   r4   r   r   r   r5   r   )job_idr   r   r   r   
delete_jobo   s   "r;   c                 C   sD   t j| }|std|  d ttd|  ddddS t|S )zGets a job.r.   r7   r8   r   r9   r   )r   r   get_jobr3   r4   r   r   )r:   r6   r   r   r   r<   }   s
   r<   c                  C   s*   t j } g }| D ]}|| q	t|S )zGets all scheduled jobs.)r   r   get_jobsappendr   )jobsZ
job_statesr6   r   r   r   r=      s
   
r=   c              
   C   s   t jdd}ztjj| fi | tj| }t|W S  ty:   t	d|  d tt
d|  dddd Y S  ty] } ztj|dd	 tt
t|dd
dW  Y d}~S d}~ww )zUpdates a job.Tr-   r.   r7   r8   r   r9   r   r0   r   N)r   r(   r   r   Z
modify_jobr<   r   r   r3   r4   r   r   r5   r   )r:   r+   r6   r   r   r   r   
update_job   s   
"r@   c              
   C      zt j|  t j| }t|W S  ty0   td|  d ttd|  dddd Y S  t	yS } ztj
|dd ttt|dd	dW  Y d
}~S d
}~ww )zPauses a job.r.   r7   r8   r   r9   r   Tr0   r   N)r   r   	pause_jobr<   r   r   r3   r4   r   r   r5   r   r:   r6   r   r   r   r   rB         
"rB   c              
   C   rA   )zResumes a job.r.   r7   r8   r   r9   r   Tr0   r   N)r   r   
resume_jobr<   r   r   r3   r4   r   r   r5   r   rC   r   r   r   rE      rD   rE   c              
   C   rA   )zExecutes a job.r.   r7   r8   r   r9   r   Tr0   r   N)r   r   run_jobr<   r   r   r3   r4   r   r   r5   r   rC   r   r   r   rF      rD   rF   )r3   Zapscheduler.jobstores.baser   r   Zapscheduler.schedulersr   r   collectionsr   Zflaskr   r   r	   jsonr   r   r    r"   r%   r,   r2   r;   r<   r=   r@   rB   rE   rF   r   r   r   r   <module>   s&   