From 5d499bb2493ad6521e31d37d7cf7df6c744bab96 Mon Sep 17 00:00:00 2001 From: Andre Anjos <andre.dos.anjos@gmail.com> Date: Thu, 21 Apr 2016 18:53:23 +0200 Subject: [PATCH] [backend] Move cancel-experiments from API to view --- beat/web/backend/api.py | 17 ----------------- beat/web/backend/api_urls.py | 6 ------ beat/web/backend/urls.py | 6 ++++++ beat/web/backend/views.py | 22 ++++++++++++++++++---- 4 files changed, 24 insertions(+), 27 deletions(-) diff --git a/beat/web/backend/api.py b/beat/web/backend/api.py index 45373e109..363bbf2b6 100644 --- a/beat/web/backend/api.py +++ b/beat/web/backend/api.py @@ -29,34 +29,17 @@ from rest_framework.decorators import api_view, permission_classes from rest_framework.response import Response from rest_framework import permissions -from ..common.permissions import IsSuperuser - from ..utils.api import send_email_to_administrators from ..utils import scheduler as scheduler_api from .models import Environment -from ..experiments.models import Experiment - import simplejson as json #---------------------------------------------------------- -@api_view(['POST']) -@permission_classes([IsSuperuser]) -def cancel_all_experiments(request): - - for q in Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)): - q.cancel() - - return Response(status=200) - - -#---------------------------------------------------------- - - @api_view(['GET']) @permission_classes([permissions.AllowAny]) def accessible_environments_list(request): diff --git a/beat/web/backend/api_urls.py b/beat/web/backend/api_urls.py index d7b219769..e5faf3d8c 100644 --- a/beat/web/backend/api_urls.py +++ b/beat/web/backend/api_urls.py @@ -30,12 +30,6 @@ from . import api urlpatterns = [ - url( - r'^cancel-all-experiments/$', - api.cancel_all_experiments, - name='backend-api-cancel-all-experiments', - ), - url( r'^environments/$', api.accessible_environments_list, diff --git a/beat/web/backend/urls.py b/beat/web/backend/urls.py index 7fbbf79db..33c58bc66 100644 --- a/beat/web/backend/urls.py +++ b/beat/web/backend/urls.py @@ -36,6 +36,12 @@ urlpatterns = [ name='scheduler', ), + url( + r'^cancel-experiments/$', + views.cancel_all_experiments, + name='cancel-experiments', + ), + url( r'^environments/(?P<name>[-\.\w\s]+)/(?P<version>[-\.\w]+)/$', views.environment, diff --git a/beat/web/backend/views.py b/beat/web/backend/views.py index b4dd5c7d9..d94c6f927 100644 --- a/beat/web/backend/views.py +++ b/beat/web/backend/views.py @@ -28,8 +28,9 @@ import collections import simplejson -from django.http import Http404 +from django.http import Http404, HttpResponseRedirect from django.conf import settings +from django.core.urlresolvers import reverse from django.shortcuts import get_object_or_404 from django.shortcuts import render_to_response from django.template import RequestContext @@ -38,6 +39,7 @@ from django.http import HttpResponseForbidden from django.contrib import messages from .models import Environment, Worker, Queue +from ..experiments.models import Experiment from . import state @@ -68,9 +70,6 @@ def scheduler(request): cache_gb = int(cache['capacity-in-megabytes'] / 1024.0) - # Organize the data a bit - response.data['workers'] = collections.OrderedDict(sorted([(k,v) for k,v in response.data['workers'].items()], key=lambda x: (not x[1].has_key('active'), x[1]['db_status']!='Active', x[0]))) - return render_to_response('backend/scheduler.html', dict( jobs=state.jobs(), @@ -119,3 +118,18 @@ def list_environments(request): ), context_instance=RequestContext(request), ) + + + +#---------------------------------------------------------- + + +@login_required +def cancel_all_experiments(request): + + if not(request.user.is_superuser): return HttpResponseForbidden() + + for q in Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)): + q.cancel() + + return HttpResponseRedirect(reverse('backend:scheduler')) -- GitLab