
    De'                         d dl mZ d dl d dl 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ej                        Zy	)
    fields)*)commit_all_dsrollback_all_ds)cmf_automation_cron_trigger)datetimetimezone)croniterc                   P     e Zd Zd Ze eddd      d               Z fdZ xZS )CmfAutomationCronTriggerc                    t         j                  d| j                          	 | j                  d       }| j                  j                          | j                  d       t         j                  d|         t                |S # t        $ r/}t                t         j                  d|  d|        Y d }~y d }~ww xY w)Nu    Запускаем Cron-Trigger T)	only_datauB   Ошибка при выполнении CmfAutomationCronTrigger : zCommit )
gdebugnameeval_bzpythoncron_run_lastset_nowsave	Exceptionr   r   )selfreses      :./modules/automation/models/cmf_automation_cron_trigger.pyrunzCmfAutomationCronTrigger.run   s    	2499+>?	$$T*C&&(III% 	
'$ !
  	GGXY]X^^`ab`cde		s   =B 	B=%B88B=Tz	@minutely)	only_once
system_jobschedulec            	      ~   t         j                  d       t        j                  t        j                         j	                         j
                        } g }t        j                  j                  g d      D ]  }|j                  st        |j                  j                  |       j                  t              }t        |j                  j                  |       j                  t              }t         j                  d|j                   d|| z
          t         j                  d| d| d|         d	| |z
  j                         cxk  rd
k  rDn nA|j                   r"| |j                   z
  j                         d
k  r
|j#                  |       ||z
  j                         dkD  s5|j                   r"| |j                   z
  j                         dk  rcd	| |z
  j                         cxk  rdk  sn |j#                  |        |D ]  }|j%                           t         j                  d       y )Nu#   Обработка Cron-Triggers...)r   	eval_code	eval_fileeval_file_path	cron_ruler   r   u:   До следующего запуска триггера r   znext=z; prev=z; now=r   <   i,  iX  u.   Конец обработки Cron-Triggers...)r   r   r	   now
astimezonetzinfomodelsr   listr%   r   valueget_nextget_prevr   total_secondsr   appendr   )r'   to_runcron_jobnextprevs        r   sched_cron_tasksz)CmfAutomationCronTrigger.sched_cron_tasks   s    	
56ll8<<>446==>77<< Ec< d 	H %%H..44c:CCHMDH..44c:CCHMDGGPQYQ^Q^P__abfgjbjaklmGGeD6fSE:;S4Z..06B6))sX5K5K/K.Z.Z.\_a.ah' t**,v5))sX5K5K/K.Z.Z.\_f.ft224>>>MM(+9	:  	HLLN		@A    c                     t         j                  st        d       | j                  j                  r6t        j                  | j                  j                        st        dd       t        | $  |i |S )Nu   Использование bzPython и Автоматизации недоступно в Вашей версии, обратитесь в Техническую поддержку.uT   Введите корректное cron-выражение. Пример: 0 0 * * *T)abort)
configBZPYTHON_ENABLED	cmf_alertr%   
is_changedr   is_validr,   superr   )r   argskwargs	__class__s      r   r   zCmfAutomationCronTrigger.saveD   s`    && \ ^>>$$$$T^^%9%9:py}~w|T,V,,r6   )	__name__
__module____qualname__r   staticmethodcmf_deferred_jobr5   r   __classcell__)rA   s   @r   r   r      s9     L% M %N- -r6   r   N)cmfr   
cmf.fieldscmf.includecmf.data_providers.baser   r   modules.automation.fieldsr   r	   r
   r   r    r6   r   <module>rN      s/       B A ' @-:SS @-r6   