Skip to content
Snippets Groups Projects
Commit bfe71ee6 authored by André Anjos's avatar André Anjos :speech_balloon:
Browse files

[backend] Make job a o2o field

parent 5d499bb2
No related branches found
No related tags found
1 merge request!194Scheduler
...@@ -141,7 +141,7 @@ class Migration(migrations.Migration): ...@@ -141,7 +141,7 @@ class Migration(migrations.Migration):
('start_date', models.DateTimeField(null=True, blank=True)), ('start_date', models.DateTimeField(null=True, blank=True)),
('end_date', models.DateTimeField(null=True, blank=True)), ('end_date', models.DateTimeField(null=True, blank=True)),
('split_errors', models.PositiveIntegerField(default=0)), ('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)), ('parent', models.ForeignKey(related_name='child', to='backend.Job', null=True)),
('result', models.ForeignKey(to='backend.Result', null=True)), ('result', models.ForeignKey(to='backend.Result', null=True)),
], ],
......
...@@ -130,6 +130,9 @@ class Environment(Shareable): ...@@ -130,6 +130,9 @@ class Environment(Shareable):
args=(self.name, self.version,), 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): def queues_for(self, user):
"""Returns all queues associated to this environment for which the user """Returns all queues associated to this environment for which the user
has the 'can_access' permission""" has the 'can_access' permission"""
...@@ -193,9 +196,13 @@ class Worker(models.Model): ...@@ -193,9 +196,13 @@ class Worker(models.Model):
return self.name return self.name
def get_admin_change_url(self):
return reverse('admin:backend_worker_change', args=(self.id,))
def load(self): def load(self):
'''Calculates the number of cores being used currently''' '''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): def available_cores(self):
...@@ -275,6 +282,9 @@ class Queue(models.Model): ...@@ -275,6 +282,9 @@ class Queue(models.Model):
return self.name return self.name
def get_admin_change_url(self):
return reverse('admin:backend_queue_change', args=(self.id,))
#_____ Utilities __________ #_____ Utilities __________
def number_of_slots(self): def number_of_slots(self):
...@@ -447,8 +457,8 @@ class Job(models.Model): ...@@ -447,8 +457,8 @@ class Job(models.Model):
(CANCELLED, 'Cancelled'), (CANCELLED, 'Cancelled'),
) )
block = models.ForeignKey('experiments.Block', null=True, block = models.OneToOneField('experiments.Block', null=True,
on_delete=models.SET_NULL, related_name='job') on_delete=models.CASCADE, related_name='job')
status = models.CharField(max_length=1, choices=STATUS, default=QUEUED) status = models.CharField(max_length=1, choices=STATUS, default=QUEUED)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment