B
    IbA                 @   sf   d dl T d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ G dd	 d	Zd
S )    )*)AbstractException)WorkflowEngine)WorkflowInstanceNodeInstance)NODE_PENDING)workflow_approve_signal)settingsc               @   s   e Zd Zdd Zdd ZdS )WorkflowInstanceBuilderc             C   s   |  }| }t||j|j|j|j|j|jj	|j
||d
}|  ddlm} |jj|j	dd}xdt|D ]X\}	}
t||
j|	dkrdnd|	t|d krdnd|
|
js|jnd t|
jd	}|  qpW tjstj| j|d
 tjt|td |S )N)
workflow_engineworkflow_codeworkflow_name
start_dateend_datedescriptioncontent_typeinform_typeemployee	exceptionr   )WorkflowNode)r   order_idTF   )workflow_instanceorderZis_next_nodeZis_last_nodeZnode_enginedepartmentsstatename)senderr   )r   r   Z
node_state)firstgetr   r   r   r   r   r   r   idr   ZsaveZmysite.workflow.modelsr   objectsfilterZorder_by	enumerater   r   lenZapprover_by_overall
departmentr   Z	node_namer	   ZACTIVE_CELERYZon_new_workflow_instancesend	__class__r   )selfZworkflow_queryr   exception_queryZworkflowr   r   r   Z	node_listiZnodeZnode_instance r+   @G:\easytimepro\master/mysite/workflow\models\workflow_builder.pybuild_from_workflowtemplate   s<    
z3WorkflowInstanceBuilder.build_from_workflowtemplatec             C   s(  ddl m } ddlm} tjj|d}| }tj|||||gdd}tj|||||j|j	dd}	tj||||d |j	dd}
tj|||||jd d dd}tj||||d d d dd}||	||
|g}d }x|D ]}|
 r|}P qW |d krd }n|sd S | |||}|d k	|fS )Nr   )datetime)Q)r    )r   start_date__lteend_date__gteZemployee__indel_flag)r   r0   r1   applicant_positionr   r2   )r   r0   r1   r3   r   r   r2   )r.   Zdjango.db.modelsr/   r   r!   r"   Znowr   Zpositionr%   existsr-   )r(   r   r   Zexception_idr.   r/   r)   Zcreation_dateZ+workflow_engine_template_for_employee_queryZ-workflow_engine_template_for_department_queryZ5workflow_engine_template_for_applicant_position_queryZ&workflow_engine_template_by_date_queryZ$workflow_engine_template_by_ordinaryZq_listZworkflow_engine_qsZeach_qsr   r+   r+   r,   build_workflow_instance_for2   sp    






z3WorkflowInstanceBuilder.build_workflow_instance_forN)__name__
__module____qualname__r-   r5   r+   r+   r+   r,   r
      s   #r
   N)Z2mysite.notifications.notification_center.receiversZ&mysite.workflow.models.exception_modelr   Z&mysite.workflow.models.workflow_enginer   Z(mysite.workflow.models.workflow_instancer   r   Zmysite.workflow.models_choicesr   Zmysite.workflow.signalsr   Zdjango.confr	   r
   r+   r+   r+   r,   <module>   s   