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):
('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)),
],
......
......@@ -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)
......
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