
    B
dp                     L    d dl Z d dlZd dl d dlmZ d dlmZ  G d de      Zy)    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                  j                  ej                  j&                  dddd      Zej                  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                 f    | j                   j                  D ]  }t        ||d   |d   d           y )N	fieldNamevalueid)	json_datar   setattr)selfobjfields      ./common/models/cmf_trigger.py	set_fieldzCmfTrigger.set_field'   s7    ^^)) 	CEC{+U7^D-AB	C    c                 x   | j                   D ]  }|d   s	|j                  d      s%t        ||d   |d   d   d          |d   d   |d<   ?|d   |d   v r.|d   j                  |d         dz   }t	        |d         |k(  rd}nd}t        ||d   |d   |          |d   |   |d<    | j                  d       y	)
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E>99_-U;/w1B41HI).w):o&)U7^;!&w!5!5eO6L!MPQ!QJ5>*j8%&
!"JU;/w
1KL).w
)Co&	D 			D	!r   c                 J   | j                   j                  D ]  }t        |d         }|s y |j                         st	        d|         y |j
                  j                          |j
                  j                  t        j                  t        |            z   |_
         y  y )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==?wx}w~  A'') # 3 3 9 9H<N<NTWX]T^<_ _C		r   c                 &   g }| j                   j                  D ]   }|d   D ]  }|j                  |d           " |rT|j                  |       |D ]=  }t	        ||      j
                  st        dt	        ||      j                   d       ? yy)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    
 ^^)) 	8E. 8""6+#678	8 OOK() C
3
+33 RSZ[^`jSkSsSsRtu  ~B  CC r   c           	      4   t         j                  j                  | j                  j                  d   d   d   dg      }|st        dd       |j                  sd	|_        |j                  r|j                  n|j                  }t        j                  j                         j                  dddd
      }|j                  |t        j                  j                         |t        j                  | j                  j                  d   d         z   |       y)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U^bcNHO.6.B.Bh**%%))+331Q\]3^	%%((,,.!3!3DNN<O<OPQ<RS]<^!__#	 	& 	r   c                     t        dt        j                  j                  j                   t        j                  g       y )Nzsuccess_trigger-)event_persons)cmf_emit_eventgcurrent_personr   r   )r   r   s     r   success_emitzCmfTrigger.success_emitp   s1    )!*:*:*=*=*C*C)DEVWVfVfUghr   c                 J    | j                   d   | _        t        |   |i |S )Nr   )json_actioncache_actionsuperr%   )r   argskwargs	__class__s      r   r%   zCmfTrigger.saves   s*     ,,W5w|T,V,,r   c                     t         j                  j                  dd|g|      }||_        |d   |_        |j                          |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   sH    ##D$+?#O"2%&89

r   c                    d}| j                   j                  j                  d      }|rd}|D ]  }t        ||      j                  rt        ||      }||   {t        |t        j                        r4|j                  D ]$  }||   |j                  j                  k(  rd}"d} v x||   |j                  j                  j                  k(  rd}d} nd}d} n |rYdd|j                  g}| j                  r>|| j                  g}t        t              |j                     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4889IJE, 
3
+66#C4E%j1=%eV->->?(- *#1*#=#N,0E,1E$)*  .j9U[[^^=Q=QQ(,(- % $!E+, T366*G"D$4$45v,s~~6::':J!E/GD$..../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   	   s   GIKV--7u  ~B  CI#v||FNN<fg&,,v~~7ghK&,,v~~  8D  EKV^^5cdIV--7qrI+v||F,>,>  IX   Yzz''

3 (  ZZ

3  F  6<<9ckopLC"*
C*i-  %r   r   )copyr/   cmf.includer   r   common.models.cmf_orderr   r    r   r   <module>r      s"        ,[ [r   