From ba6341ab0a5a0b9b91d8fe6ecbc7ac3a5daf53e8 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Thu, 21 Apr 2016 18:54:26 +0200
Subject: [PATCH] [backend] Multiple small fixes to typos

---
 .../web/backend/management/commands/qsetup.py |  2 +-
 beat/web/backend/state.py                     | 23 +++++----
 .../backend/templates/backend/scheduler.html  | 50 ++++---------------
 beat/web/backend/templatetags/backend_tags.py |  4 +-
 beat/web/backend/utils.py                     |  6 +--
 5 files changed, 27 insertions(+), 58 deletions(-)

diff --git a/beat/web/backend/management/commands/qsetup.py b/beat/web/backend/management/commands/qsetup.py
index fa543da94..a8a7a5d43 100644
--- a/beat/web/backend/management/commands/qsetup.py
+++ b/beat/web/backend/management/commands/qsetup.py
@@ -129,4 +129,4 @@ class Command(BaseCommand):
             with open(arguments['qconfig'], 'rb') as f:
                 config = simplejson.load(f)
 
-        setup_environment(config or DEFAULT_CONFIGURATION)
+        setup_backend(config or DEFAULT_CONFIGURATION)
diff --git a/beat/web/backend/state.py b/beat/web/backend/state.py
index 0ef75b71a..12a2ced4b 100644
--- a/beat/web/backend/state.py
+++ b/beat/web/backend/state.py
@@ -28,10 +28,11 @@
 '''Utilities for summarizing scheduler state'''
 
 
-from django.conf import settings
-
+import os
 import psutil
 
+from django.conf import settings
+
 from .models import Job, JobSplit
 
 from ..experiments.models import Experiment
@@ -60,19 +61,19 @@ def jobs():
 
     return dict(
         total=JobSplit.objects.count(),
-        running=JobSplit.objects.filter(state=Job.PROCESSING).count(),
-        queued=JobSplit.objects.filter(state=Job.QUEUED).count(),
-        cancelled=JobSplit.objects.filter(state=Job.CANCELLED).count(),
-        skipped=JobSplit.objects.filter(state=Job.SKIPPED).count(),
-        completed=JobSplit.objects.filter(state=Job.COMPLETED).count(),
-        failed=JobSplit.objects.filter(state=Job.FAILED).count(),
+        running=JobSplit.objects.filter(status=Job.PROCESSING).count(),
+        queued=JobSplit.objects.filter(status=Job.QUEUED).count(),
+        cancelled=JobSplit.objects.filter(status=Job.CANCELLED).count(),
+        skipped=JobSplit.objects.filter(status=Job.SKIPPED).count(),
+        completed=JobSplit.objects.filter(status=Job.COMPLETED).count(),
+        failed=JobSplit.objects.filter(status=Job.FAILED).count(),
         )
 
 
 def experiments():
 
     return dict(
-        running=Experiment.objects.filter(state=Experiment.RUNNING).count(),
-        scheduled=Experiment.objects.filter(state=Experiment.SCHEDULED).count(),
-        ls=Experiment.objects.filter(state__in=(Experiment.RUNNING, Experiment.SCHEDULED)).all(),
+        running=Experiment.objects.filter(status=Experiment.RUNNING).count(),
+        scheduled=Experiment.objects.filter(status=Experiment.SCHEDULED).count(),
+        ls=Experiment.objects.filter(status__in=(Experiment.RUNNING, Experiment.SCHEDULED)).all(),
         )
diff --git a/beat/web/backend/templates/backend/scheduler.html b/beat/web/backend/templates/backend/scheduler.html
index ad8685182..dbcedb998 100644
--- a/beat/web/backend/templates/backend/scheduler.html
+++ b/beat/web/backend/templates/backend/scheduler.html
@@ -39,7 +39,7 @@
     <div class="alert alert-success" role="alert" style="text-align: center;">
       <i class="fa fa-clock-o fa-2x vertical-center"></i> Updated: {% now "H:i O, jS F Y" %}
       <div class="pull-right action-buttons">
-        <a id="cancel-experiments-button" class="btn btn-default btn-delete" data-toggle="tooltip" data-placement="bottom" title="Cancel all running experiments"><i class="fa fa-times"></i> Cancel Experiments</a>
+        <a id="cancel-experiments-button" class="btn btn-default btn-delete" data-toggle="tooltip" data-placement="bottom" title="Cancel all running experiments" href="{% url 'backend:cancel-experiments' %}"><i class="fa fa-times"></i> Cancel Experiments</a>
       </div>
     </div>
   </div>
@@ -51,9 +51,9 @@
 
     <ul id="object-tabs" class="nav nav-tabs nav-justified" role="tablist">
       <li role="presentation" class="active"><a id="status-tab" href="#status" role="tab" data-toggle="tab" aria-controls="status">Status <span class="badge">{{ jobs.running }}</a></li>
-      <li role="presentation"><a href="#experiments" role="tab" data-toggle="tab" aria-controls="experiments">Experiments <span class="badge">{{ data.scheduler.experiments.list|length }}</span></a></li>
-      <li role="presentation"><a href="#workers" role="tab" data-toggle="tab" aria-controls="workers">Workers <span class="badge">{{ data.workers|length }}</span></a></li>
-      <li role="presentation"><a href="#queues" role="tab" data-toggle="tab" aria-controls="queues">Queues <span class="badge">{{ data.scheduler.queues|length }}</span></a></li>
+      <li role="presentation"><a href="#experiments" role="tab" data-toggle="tab" aria-controls="experiments">Experiments <span class="badge">{{ experiments.ls|length }}</span></a></li>
+      <li role="presentation"><a href="#workers" role="tab" data-toggle="tab" aria-controls="workers">Workers <span class="badge">{{ workers|length }}</span></a></li>
+      <li role="presentation"><a href="#queues" role="tab" data-toggle="tab" aria-controls="queues">Queues <span class="badge">{{ queues|length }}</span></a></li>
     </ul>
 
     <!-- Tab contents -->
@@ -66,7 +66,7 @@
           <h3>Experiments</h3>
           <ul class="list-group">
             <li class="list-group-item">Running <span class="badge">{{ experiments.running }}</span></li>
-            <li class="list-group-item">Scheduled <span class="badge">{{ experiments.completed }}</span></li>
+            <li class="list-group-item">Scheduled <span class="badge">{{ experiments.scheduled }}</span></li>
           </ul>
         </div>
 
@@ -92,7 +92,7 @@
 
       <!-- Experiments tab -->
       <div role="tabpanel" class="tab-pane" id="experiments">
-        {% if experiments.list %}
+        {% if experiments.ls %}
         <div class="scrollable table-responsive">
           <table class="table table-hover table-condensed">
             <thead>
@@ -110,8 +110,7 @@
             <tbody>
               {% for obj in experiments.ls %}
               <tr>
-                <td><a href="{{ obj.get_absolute_url }}">{{ obj.fullname }}</a></td>
-                {% endwith %}
+                <td><a href="{{ obj.get_admin_change_url }}">{{ obj.fullname }}</a></td>
                 <td>{{ obj.blocks.count }}</td>
                 <td>{{ obj|count_job_splits }}</td>
                 <td>{{ obj|count_job_splits:"P" }}</td>
@@ -154,7 +153,7 @@
                     {% endif %}
                   </a>
                 </td>
-                <td><a title="Click to admin" data-toggle="tooltip" data-placement="top" href="{% url 'admin:backend_worker_change' obj.id %}">{{ obj.name }}</a></td>
+                <td><a title="Click to admin" data-toggle="tooltip" data-placement="top" href="{{ obj.get_admin_change_url }}">{{ obj.name }}</a></td>
                 <td>{{ obj.available_cores }} / {{ obj.cores }}</td>
                 <td>{% widthratio obj.memory 1024 1 %}</td>
                 <td>{{ obj.info }}</td>
@@ -187,7 +186,7 @@
             <tbody>
               {% for obj in queues %}
               <tr>
-                <td><a title="Click to admin" data-toggle="tooltip" data-placement="top" href="{% url 'admin:backend_queue_change' obj.id %}">{{ obj.name }}</a></td>
+                <td><a title="Click to admin" data-toggle="tooltip" data-placement="top" href="{{ obj.get_admin_change_url }}">{{ obj.name }}</a></td>
                 <td>{{ obj.memory_limit }}</td>
                 <td>{{ obj.number_of_slots }}</td>
                 <td>{{ obj.cores_per_slot }}</td>
@@ -212,13 +211,6 @@
 <script type="text/javascript">
 $(document).ready(function() {
 
-  $.ajaxSetup({
-    beforeSend: function(xhr, settings) {
-      var csrftoken = $.cookie('csrftoken');
-      xhr.setRequestHeader('X-CSRFToken', csrftoken);
-    }
-  });
-
   manage_tabs('ul#object-tabs');
 
   var data = {{ cache_chart_data|safe }};
@@ -242,30 +234,6 @@ $(document).ready(function() {
     display_cache_chart();
   });
 
-  function reload_on_success(data) {
-  }
-
-  $('a#cancel-experiments-button').click(function() {
-    $this = $(this);
-    $this.disable();
-    $this.find('i').addClass('fa-spin');
-
-    var d = $.ajax({
-      type: 'POST',
-      url: '{% url 'api_backend:backend-api-cancel-all-experiments' %}',
-    });
-
-    d.done(function(data) {
-      location.reload();
-    });
-
-    d.fail(function(data, status_text) {
-      process_error(data, status_text);
-      $this.find('i').removeClass('fa-spin');
-      $this.enable();
-    });
-  });
-
 });
 </script>
 {% endblock %}
diff --git a/beat/web/backend/templatetags/backend_tags.py b/beat/web/backend/templatetags/backend_tags.py
index 3e94d1d45..dfdc78291 100644
--- a/beat/web/backend/templatetags/backend_tags.py
+++ b/beat/web/backend/templatetags/backend_tags.py
@@ -84,9 +84,9 @@ def visible_queues(context, object):
 
 
 @register.filter
-def count_job_splits(xp, state=None):
+def count_job_splits(xp, status=None):
     """Returns job splits for an experiment in a certain state"""
-    return xp.job_splits(state=state).count()
+    return xp.job_splits(status=status).count()
 
 
 #--------------------------------------------------
diff --git a/beat/web/backend/utils.py b/beat/web/backend/utils.py
index 92eda7f5a..5f31d589c 100644
--- a/beat/web/backend/utils.py
+++ b/beat/web/backend/utils.py
@@ -160,7 +160,7 @@ def setup_backend(d):
 
     # 1. We get a list of all current queue/environment combinations
     q_envs = set([(q.name, str(e)) \
-        for q in Queue.objects.all() for e in q.environments])
+        for q in Queue.objects.all() for e in q.environments.all()])
 
     # 2. We get a list of new queue/environment combinations
     config_q_envs = set([(qname, envkey) \
@@ -296,7 +296,7 @@ def setup_backend(d):
         queue.save()
 
         # 10.2 Update the queue-slot allocation
-        queue.slots.delete()
+        queue.slots.all().delete()
         for hostname, par in attrs['slots'].items():
             worker = Worker.objects.get(name=hostname)
             priority = par.get('priority', 0)
@@ -320,7 +320,7 @@ def setup_backend(d):
     delete_qnames = current_qnames.difference(config_qnames)
     for name in delete_qnames:
         q = Queue.objects.select_for_update().get(name=name)
-        logger.info("Deleting `%s'...", queue)
+        logger.info("Deleting `%s'...", q)
         q.delete() # slots are deleted on cascade
 
     # 12. Delete environments w/o associated queues
-- 
GitLab