def pin_to_task(executor: Executor, task: IntraserviceTask): add_journal_record(executor) update_statistic( executor, ready_min=round( (timezone.now() - executor.last_status_change).seconds / 60)) executor.intraservice_task_active = task executor.status = 'Занят' executor.last_status_change = timezone.now() executor.save() task.long_execution_notification = timezone.now() task.executor_notification_count = 0 task.admin_notification = timezone.now() task.admin_notification_count = 0 task.save() api.update_executor_and_status(task.id, executor.intraservice_user.id, TASK_STATUSES['В процессе']) task_url = api.new_api.get_task_url(task.id) bot.send_message(executor.telegram_user.user_id, text=r.EXECUTOR_PIN.format( task_id=task.id, task_url=task_url, priority=PRIORITY_STATUSES_R[task.priority], open_tasks=len(get_opened_tasks()), mass_tasks=len(get_mass_tasks())), parse_mode='Markdown')
def clear_executor_active_task(executor: Executor): add_journal_record(executor) update_statistic( executor, work_min=round( (timezone.now() - executor.last_status_change).seconds / 60)) executor.intraservice_task_active = None executor.status = 'Готов' executor.last_status_change = timezone.now() executor.save() bot.send_message(executor.telegram_user.user_id, text=r.EXECUTOR_FREE)
def close_task_after_mass(executor: Executor): if executor.status == 'Занят': add_journal_record(executor) update_statistic( executor, work_min=round( (timezone.now() - executor.last_status_change).seconds / 60), cancel_task=1) task = executor.intraservice_task_active task_url = api.new_api.get_task_url(task.id) executor.intraservice_task_active = None executor.status = 'Готов' executor.last_status_change = timezone.now() executor.save() bot.send_message(executor.telegram_user.user_id, text=r.CHANGE_FROM_MASS_TASK.format( task_id=task.id, task_url=task_url)) elif executor.status == 'Не готов': update_statistic(executor, cancel_task=1) executor.intraservice_task_active = None executor.save()
def re_pin_to_task(executor: Executor): add_journal_record(executor) update_statistic( executor, ready_min=round( (timezone.now() - executor.last_status_change).seconds / 60)) executor.status = 'Занят' executor.last_status_change = timezone.now() executor.save() executor.intraservice_task_active.long_execution_notification = timezone.now( ) executor.intraservice_task_active.executor_notification_count = 0 executor.intraservice_task_active.admin_notification = timezone.now() executor.intraservice_task_active.admin_notification_count = 0 executor.intraservice_task_active.save() task_url = api.new_api.get_task_url(executor.intraservice_task_active.id) bot.send_message(executor.telegram_user.user_id, text=r.EXECUTOR_HAVE_TASK.format( task_id=executor.intraservice_task_active.id, task_url=task_url, open_tasks=len(get_opened_tasks())), parse_mode='Markdown')
def executor_stop(message): try: executor = Executor.objects.get(telegram_user__user_id=message.from_user.id) except ObjectDoesNotExist: bot.send_message(message.from_user.id, 'Вы не являетесь сотрудником ТП.') return if executor.status == 'Готов': add_journal_record(executor) update_statistic(executor, ready_min=round((timezone.now() - executor.last_status_change).seconds / 60)) executor.status = 'Не готов' executor.last_status_change = timezone.now() executor.save() bot.send_message(message.from_user.id, text=r.EXECUTOR_STOP) elif executor.status == 'Занят': add_journal_record(executor) update_statistic(executor, work_min=round((timezone.now() - executor.last_status_change).seconds / 60)) executor.status = 'Не готов' executor.last_status_change = timezone.now() executor.save() bot.send_message(message.from_user.id, text=r.EXECUTOR_STOP_WITH_TASK) elif executor.status == 'Не готов': bot.send_message(message.from_user.id, 'Вы не начинали работу.')