From bfe71ee6cbc2e8ef5bf748183647863529392f61 Mon Sep 17 00:00:00 2001
From: Andre Anjos <andre.dos.anjos@gmail.com>
Date: Thu, 21 Apr 2016 18:53:56 +0200
Subject: [PATCH] [backend] Make job a o2o field

---
 .../backend/migrations/0002_scheduler_addons.py  |  2 +-
 beat/web/backend/models.py                       | 16 +++++++++++++---
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/beat/web/backend/migrations/0002_scheduler_addons.py b/beat/web/backend/migrations/0002_scheduler_addons.py
index 2b9c58fd2..c81528b3d 100644
--- a/beat/web/backend/migrations/0002_scheduler_addons.py
+++ b/beat/web/backend/migrations/0002_scheduler_addons.py
@@ -141,7 +141,7 @@ class Migration(migrations.Migration):
                 ('start_date', models.DateTimeField(null=True, blank=True)),
                 ('end_date', models.DateTimeField(null=True, blank=True)),
                 ('split_errors', models.PositiveIntegerField(default=0)),
-                ('block', models.ForeignKey(related_name='job', on_delete=models.deletion.SET_NULL, to='experiments.Block', null=True)),
+                ('block', models.OneToOneField(related_name='job', on_delete=models.deletion.CASCADE, to='experiments.Block', null=True)),
                 ('parent', models.ForeignKey(related_name='child', to='backend.Job', null=True)),
                 ('result', models.ForeignKey(to='backend.Result', null=True)),
             ],
diff --git a/beat/web/backend/models.py b/beat/web/backend/models.py
index 8113411f2..9fba37b6b 100644
--- a/beat/web/backend/models.py
+++ b/beat/web/backend/models.py
@@ -130,6 +130,9 @@ class Environment(Shareable):
             args=(self.name, self.version,),
             )
 
+    def get_admin_change_url(self):
+        return reverse('admin:backend_environment_change', args=(self.id,))
+
     def queues_for(self, user):
         """Returns all queues associated to this environment for which the user
         has the 'can_access' permission"""
@@ -193,9 +196,13 @@ class Worker(models.Model):
         return self.name
 
 
+    def get_admin_change_url(self):
+        return reverse('admin:backend_worker_change', args=(self.id,))
+
+
     def load(self):
         '''Calculates the number of cores being used currently'''
-        return sum([j.job.block.queue.cores_per_slot for j in self.splits])
+        return sum([j.job.block.queue.cores_per_slot for j in self.splits.all()])
 
 
     def available_cores(self):
@@ -275,6 +282,9 @@ class Queue(models.Model):
         return self.name
 
 
+    def get_admin_change_url(self):
+        return reverse('admin:backend_queue_change', args=(self.id,))
+
     #_____ Utilities __________
 
     def number_of_slots(self):
@@ -447,8 +457,8 @@ class Job(models.Model):
         (CANCELLED,  'Cancelled'),
     )
 
-    block = models.ForeignKey('experiments.Block', null=True,
-        on_delete=models.SET_NULL, related_name='job')
+    block = models.OneToOneField('experiments.Block', null=True,
+        on_delete=models.CASCADE, related_name='job')
 
     status = models.CharField(max_length=1, choices=STATUS, default=QUEUED)
 
-- 
GitLab