Exemple #1
0
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')
Exemple #2
0
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)
Exemple #3
0
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()
Exemple #4
0
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')
Exemple #5
0
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, 'Вы не начинали работу.')