U
    `e'                     @   sj   d dl mZ d dlT d dlT d dlmZmZ d dlmZ d dl	m	Z	m
Z
 d dlmZ G dd dejZd	S )
    fields)*)commit_all_dsrollback_all_ds)cmf_automation_cron_trigger)datetimetimezone)croniterc                       s>   e Zd Zdd Zeedddddd Z fdd	Z  ZS )
CmfAutomationCronTriggerc              
   C   s   t d| j  z$| d }| j  | jdd W nD tk
rz } z&t  t d|  d|  W Y d S d }~X Y nX t d|   t	  |S )Nu    Запускаем Cron-Trigger T)Z	only_datauB   Ошибка при выполнении CmfAutomationCronTrigger : zCommit )
gdebugnameZeval_bzpythoncron_run_lastZset_nowsave	Exceptionr   r   )selfrese r   :./modules/automation/models/cmf_automation_cron_trigger.pyrun   s    

zCmfAutomationCronTrigger.runTz	@minutely)Z	only_onceZ
system_jobZschedulec               	   C   sp  t d tt  j} g }tjjddddddgdD ]}|j	sJq<t
|j	j| t}t
|j	j| t}t d	|j d
||    t d| d| d|   d| |    krdkrn n&|jr| |j  dk rq<|| q<||  dkr<|jr| |j  dk rq<d| |    kr<dkr<n q<|| q<q<|D ]}|  qRt d d S )Nu#   Обработка Cron-Triggers...r   Z	eval_codeZ	eval_fileZeval_file_path	cron_ruler   r   u:   До следующего запуска триггера r   znext=z; prev=z; now=r   <   i,  iX  u.   Конец обработки Cron-Triggers...)r   r   r   nowZ
astimezoneZtzinfoZmodelsr   listr   r
   valueZget_nextZget_prevr   Ztotal_secondsr   appendr   )r   Zto_runZcron_jobnextprevr   r   r   sched_cron_tasks   s<    

   
"

z)CmfAutomationCronTrigger.sched_cron_tasksc                    s>   t jstd | jjr0t| jjs0tddd t j	||S )Nu   Использование bzPython и Автоматизации недоступно в Вашей версии, обратитесь в Техническую поддержку.uT   Введите корректное cron-выражение. Пример: 0 0 * * *T)abort)
ZconfigZBZPYTHON_ENABLEDZ	cmf_alertr   Z
is_changedr
   Zis_validr   superr   )r   argskwargs	__class__r   r   r   D   s    zCmfAutomationCronTrigger.save)	__name__
__module____qualname__r   staticmethodZcmf_deferred_jobr!   r   __classcell__r   r   r&   r   r      s
   'r   N)Zcmfr   Z
cmf.fieldsZcmf.includeZcmf.data_providers.baser   r   Zmodules.automation.fieldsr   r   r	   r
   r   r   r   r   r   <module>   s   