Esempio n. 1
0
File: task.py Progetto: perldev/zoo
def rerun(request, task_id):
    """
    Повторно выполнить конкретное задание по номеру task_id
    :param request:
    :param task_id:
    :return:
    """
    t = get_object_or_404(Task, id=task_id)
    task_manager = TaskManager.get_instance()
    task_manager.rerun_task(t)
    return {'task': t.to_dict()}
Esempio n. 2
0
def upgrade(request):
    """
    Обрабатывает запросы на апгрейд продуктов.
    Форматы входных запросов и выходных ответов такие же как для install()
    """
    if request.method != 'POST':
        # принимаем только пост-запросы
        return HttpResponseNotAllowed(['POST'])

    # парсим джейсон запрос
    req = json_request(request)
    initial = 'initial' in req
    dm = DependencyManager()
    requested_products = req['requested_products']

    if initial:
        # если это начальный запрос, то отдаем дерево зависимостей
        resp = {
            'task': None,
            'items': [dm.get_dependencies(product_name) for product_name in requested_products]
        }
    else:
        # это запрос на апгрейд
        # список имён продуктов, которые нужно апгрейдить (с зависимостями)
        product_list = [item['product'] for item in req['install_products']]
        product_list.reverse()
        # добывает спсисоко продуктов из списка имён
        products = ProductCollection(product_list)

        # создаёт задачу на апгрейд
        task_manager = TaskManager.get_instance()
        task_id = task_manager.create_upgrade_task(requested_products, products)
        resp = {
            'task': {
                'id': task_id,
                'url': reverse('task_id', args=(task_id,))
            },
            'items': None
        }

    return resp