
    Efp                     R    d dl Z d dlZd dlT d dlmZ d dlmZ  G d de          ZdS )    N)*)fields)CmfOrderc                       e Zd ZdZdZdZ ej        ej        dd          Z	 ej        ej
        d          Z ej        ej
        d	          Z ej        ej
        d
          Z ej        ej
        d          Z ej        ej        d          Z ej        ej        d          Zej                            ej        j        dddd          Zej                            ej        j        dddd          Z ej        ej        dd          Zd Zd Zd Zd Zd Zd Z fdZedd            Z d Z! xZ"S ) 
CmfTriggerTriggersettingsTRGu<   К какой модели относится триггерT)captionindexu(   Настройка точки входа)r   u.   Фильтр для методов get и listuJ   Где должен вызываться, отображение в вебu,   Все остальные параметрыu8   Имя вызываемой функции у CmfTriggeruM   Кеш даты и времени следующего вызова из cronu!   Настройка статусаCmfStatusOpttriggersF)r   modelbackrefvisible	CmfStatusu(   Где должен вызыватьсяc                 j    | j         j        D ]%}t          ||d         |d         d                    &d S )N	fieldNamevalueid)	json_datar   setattr)selfobjfields      ./common/models/cmf_trigger.py	set_fieldzCmfTrigger.set_field'   sG    ^) 	C 	CEC{+U7^D-ABBBB	C 	C    c                    | j         D ]}|d         s|                    d          s;t          ||d         |d         d         d                    |d         d         |d<   [|d         |d         v r@|d                             |d                   dz   }t	          |d                   |k    rd}nd}t          ||d         |d         |                    |d         |         |d<   |                     d           d	S )
uY   
        Распределение из списка пользователей
        r   recent_personr   r   r      T)	only_dataN)r   getr   r   lensave)r   r   r   
next_indexs       r   distribution_personzCmfTrigger.distribution_person+   s    ^ 	D 	DE> 99_-- DU;/w1B41HIII).w):o&&)U7^;;!&w!5!5eO6L!M!MPQ!QJ5>**j88%&
!"JU;/w
1KLLL).w
)Co&&		D	!!!!!r   c                 H   | j         j        D ]}t          |d                   }|s d S |                                st	          d|             d S |j                                         |j        j        t          j        t          |                    z   |_
         d S d S )Nr   u[   Неверно указан срок выполнения в "автоматизация": )days)r   r   strisdigit	cmf_alertplan_start_dateset_nowdatetime	timedeltaintplan_end_date)r   r   r   r   s       r   set_planzCmfTrigger.set_plan@   s    ^) 		 		Eg''E ==?? x}  A  A  A''))) # 3 9H<NTWX]T^T^<_<_<_ _CEE		 		r   c                 (   g }| j         j        D ](}|d         D ]}|                    |d                    )|rV|                    |           |D ]@}t	          ||          j        r't          dt	          ||          j         d           ?dS dS )u   
        Проверка что поля заполнены
        json_data = {..., value: [field_name1, field_name2, ...]}
        r   	classNameu2   Необходимо заполнить поле: TabortN)r   r   appendload_fieldsgetattris_nullr,   r   )r   r   field_namesr   option
field_names         r   required_fieldszCmfTrigger.required_fieldsL   s    
 ^) 	8 	8E. 8 8""6+#677778 	COOK((() C C
3
++3 CuSZ[^`jSkSkSsuu  ~B  C  C  C  C		C 	CC Cr   c           	         t           j                            | j        j        d         d         d         dg          }|st          dd           |j        sd	|_        |j        r|j        n|j        }t          j        	                                
                    dddd
          }|                    |t          j        	                                |t          j        | j        j        d         d                   z   |           dS )u7   
        Создание автозадачи
        r   r   task_idz***)r   r   u=   Необходимо создать шаблон задачиTr6   z.CmfStatus:00000000-0000-0000-0001-000000000002)hourminutesecondmicroseconddeadline)seconds)parent
alarm_daterF   responsibleN)modelsCmfTaskr#   r   r   r,   statusrJ   r/   nowreplacecreate_from_templater0   json)r   r   obj_taskrJ   	start_days        r   	auto_taskzCmfTrigger.auto_task[   s    >%%)=a)@)I))T^c]d%ee 	dV^bcccc 	ONHO.6.BWh**%))++331Q\]3^^	%%(,,..!3DN<OPQ<RS]<^!_!_!__#	 	& 	 	 	 	 	r   c                 l    t          dt          j        j        j         t          j        g           d S )Nzsuccess_trigger-)event_persons)cmf_emit_eventgcurrent_personr   r   )r   r   s     r   success_emitzCmfTrigger.success_emitp   s4    E!*:*=*CEEVWVfUghhhhhhr   c                 Z    | j         d         | _         t                      j        |i |S )Nr   )json_actioncache_actionsuperr%   )r   argskwargs	__class__s      r   r%   zCmfTrigger.saves   s.     ,W5uww|T,V,,,r   Nc                     t           j                            dd|g|          }||_        |d         |_        |                                 |S )Nr   ==)filterr   json_entry_point)rK   r   r#   cache_kanban_statusre   r%   )clsobj_idkanban_status_idr   r_   r`   r   s          r   kanban_movezCmfTrigger.kanban_movew   sL    ##D$+?#OO"2%&89



r   c                 r   d}| j         j                            d          }|rd}|D ]}t          ||          j        r}t          ||          }||         bt          |t          j                  r&|j        D ]}||         |j        j        k    rd}d} o||         |j        j        j        k    rd}d} nd}d} |rQdd|j        g}| j	        r@|| j	        g}t          t                    |j                                     |          }|sd}|r# t          | | j        j                  |           |S )NTchanged_fieldsFr   rc   )rd   )re   r   r#   r:   
is_changed
isinstancer   
CmfM2MBaser   json_filtervarsrK   
class_name	func_name)	r   r   allowrl   r>   r   item_filternew_objs	            r   checkzCmfTrigger.check   sw   .4889IJJ 	E,  
3
++6 #C44E%j1=%eV->?? &(- * *#1*#=#N#N,0EE,1E$)-j9U[^=QQQ(,(- % $!E 	"T36*G ""D$45v,,s~6::':JJ "!E 	5/GD$..//444r   )N)#__name__
__module____qualname__ui_name	ui_modulecode_prefixr   Field	CmfStr256	cmf_modelCmfJsonre   rp   r\   r   rs   CmfDateTimecache_periodic_next_datecmfCmfRelationcache_status_optrM   CmfStr32r]   r   r'   r3   r?   rT   rZ   r%   classmethodrj   rx   __classcell__)ra   s   @r   r   r   	   s7       GIKV-7u  ~B  C  C  CI#v|FN<fggg&,v~7ghhhK&,v~  8D  E  E  EKV^5cdddIV-7qrrrI+v|F,>  IX   Y   Y   Yz''
3 (   Z
3   F  6<9ckopppLC C C" " "*
 
 
C C C  *i i i- - - - -    [% % % % % % %r   r   )copyr/   cmf.includer   r   common.models.cmf_orderr   r    r   r   <module>r      s                , , , , , ,[ [ [ [ [ [ [ [ [ [r   