def validate_task_status(self): if self.task.task_status == SUCCESS: raise ServiceException( f'Резолюція вже виконана, Ви не можете виконати її повторно.') if self.task.task_status == PENDING: raise ServiceException( f'Ви не можете виконати резоліюцію оскільки попередня резолюція по цьому документу ще не виконана.' )
def validate_sign(self): sign_b64 = self.task_executor.sign data_path = self.task_executor.task.document.main_file.path res = verify_external(data_path=data_path, sign_data=sign_b64) if res.get('code') == 1: raise ServiceException(res.get('code_message')) self.task_executor.sign_info = res
def run(self): if self.flow.execution_type == BY_ORDER: self.run_first_task_if_flow_running() elif self.flow.execution_type == PARALLEL: self.run_all_flow_tasks() else: raise ServiceException('Не вказано "execution_type"')
def validate_flow(self): flow = self.document.flow_set.all().last() logger.info(f'validate_flow : {flow.id}') tasks_exists = flow.tasks.all().exists() if not tasks_exists: raise ServiceException( f'Заборонена передача документа на виконання без резолюції')
def considerate_document(self): if self.document.document_cast == INCOMING: self.considerate_incoming_document() elif self.document.document_cast == INNER: self.considerate_inner_document() else: raise ServiceException('document_cast is not set')
def validate_task_executor(self): user_in_task_executor_list = self.task.task_executors.all().filter( executor=self.user).exists() if not user_in_task_executor_list: raise ServiceException( f'Заборонено виконання завдання користувачами не вказаними в списку виконанвців.' )
def register_document(self): if self.document.document_cast == OUTGOING: self.register_outgoing_document() elif self.document.document_cast == INCOMING: self.register_incoming_document() elif self.document.document_cast == INNER: self.register_inner_document() else: raise ServiceException('document_cast is not set')
def validate_approve_list(self): ##Якщо вказано підписанта, не перевіряємо список завдань, завдання буде створено автоматично if self.document.main_signer: return if self.document.approve_type == WITH_APPROVE: exist_approve_task = self.document.task_set.filter( task_type=APPROVE).exists() if not exist_approve_task: raise ServiceException( f'Документ з погодженням повинен включати хоча б один пункт етап погодження.Спочатку вкажіть пункти погодження' )
def validate_user(self): if self.user != self.task.controller: raise ServiceException( 'Підтвердити виконання завдання може лише контролер!')
def validate_approvers(self): approvers = self.document.approvers_list.all() if not approvers.exists(): raise ServiceException( f'Заборонено погодження документа без вказаного списку на розгляд.' )
def validate_main_file(self): if not self.document.main_file: raise ServiceException( f'Заборонена реєстрація документа без завантаженого документа.' )
def validate_document_reg_number(self): if not self.document.reg_number: raise ServiceException( f'Заборонена реєстрація документа без номера.')
def validate_document_status(self): if self.document.status != ON_REGISTRATION: raise ServiceException( f'Заборонена повторна реєстрація документа.')
def validate_status(self): if self.document.status == ON_AGREEMENT: raise ServiceException( f'Документ вже запушено на погодження. Ви не можете запустити погодження доки попередній процес погодження не закінчено.' )
def validate_document_cast(self): if self.document.document_cast not in [OUTGOING, INNER]: raise ServiceException( 'На погодження можна відправити лише Внутрішній, або Вихідний документ' )
def validate_user(self): """ Перевіряємо користувача, що відправив завдання на доопрацювання""" if self.user != self.task.controller: raise ServiceException( 'вернути завдання на доопрацювання може лише контролер!')
def validate_main_signer(self): if not self.document.main_signer: raise ServiceException(f'Спочатку вкажіть підписанта документа')
def validate_user(self): if self.user != self.task_executor.executor: raise ServiceException( 'Задачу може виконувати тільки відповідальний за неї виконавець' )