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()}
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