U
    c                     @   sh   d dl mZ d dlT d dlT d dlmZ d dlmZmZ d dlmZ G dd dej	Z	e
je	j dS )	    fields)*)cmf_automation_cron_trigger)datetimetimezone)croniterc                       s0   e Zd Zdd Zedd Z fddZ  ZS )CmfAutomationCronTriggerc                 C   s<   t d| j  t| jjd }| j  | j	dd |S )Nu    Запускаем Cron-Trigger T)Z	only_data)
gdebugnameZcmfutilZexec_bzpython	eval_codevaluecron_run_lastZset_nowsave)selfres r   :./modules/automation/models/cmf_automation_cron_trigger.pyrun   s
    
zCmfAutomationCronTrigger.runc                 C   sB  t d ttj}g }tjjddddgdD ]}|j	s<q0t
|j	j|t}t
|j	j|t}t d|j d||   d	||    krd
krn n&|jr||j  dk rq0|| q0||  dkr0|jr||j  dk rq0d||    krd
kr0n q0|| q0q0|D ]}|  q$t d d S )Nu#   Обработка Cron-Triggers...r   r   	cron_ruler   r   u:   До следующего запуска триггера z: ir   <   i,  iu.   Конец обработки Cron-Triggers...)r
   r   r   nowr   ZutcZmodelsr	   listr   r   r   Zget_nextZget_prevr   Ztotal_secondsr   appendr   )clsr   Zto_runZcron_jobnextprevr   r   r   minutely_hook   s0    
 
"

z&CmfAutomationCronTrigger.minutely_hookc                    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   5   s    zCmfAutomationCronTrigger.save)__name__
__module____qualname__r   classmethodr   r   __classcell__r   r   r#   r   r	   
   s   
"r	   N)Zcmfr   Z
cmf.fieldsZcmf.includeZmodules.automation.fieldsr   r   r   r   r	   ZAPPZHOOK_CRON_MINUTELYr   r   r   r   r   r   <module>   s   5