Made the workload editable so it can be edited in the admin view and cleaned up the admin view and template

This commit is contained in:
dvanaken 2020-04-02 16:30:06 -04:00 committed by Dana Van Aken
parent 94fd374ec7
commit 423140169f
5 changed files with 48 additions and 26 deletions

View File

@ -13,7 +13,7 @@ profile=no
# Add files or directories to the blacklist. They should be base names, not
# paths.
ignore=CVS,.git,manage.py,0001_initial.py,0002_enable_compression.py,0003_load_initial_data.py,0004_add_lhs.py,0005_add_workload_field.py,0006_session_hyperparameters.py,0007_executiontime.py,0008_change_result_taskids_field.py,0009_change_executiontime_function_field.py,0010_add_pipeline_data_field.py,0011_knob_bound_fields.py,credentials.py,create_knob_settings.py
ignore=CVS,.git,manage.py,0001_initial.py,0002_enable_compression.py,0003_load_initial_data.py,0004_add_lhs.py,0005_add_workload_field.py,0006_session_hyperparameters.py,0007_executiontime.py,0008_change_result_taskids_field.py,0009_change_executiontime_function_field.py,0010_add_pipeline_data_field.py,0011_knob_bound_fields.py,0012_make_workload_status_editable.py,credentials.py,create_knob_settings.py
# ignore-patterns=**/migrations/*.py

View File

@ -15,7 +15,7 @@ from .models import (BackupData, DBMSCatalog, ExecutionTime,
MetricData, PipelineData, PipelineRun,
Project, Result, Session, Workload, Hardware,
SessionKnob)
from .types import VarType
from .types import VarType, WorkloadStatusType
class DBMSCatalogAdmin(admin.ModelAdmin):
@ -122,9 +122,20 @@ class PipelineRunAdmin(admin.ModelAdmin):
class WorkloadAdmin(admin.ModelAdmin):
list_display = ('name', 'dbms', 'hardware')
list_display = ('name', 'dbms', 'project', 'workload_status')
list_filter = (('dbms', admin.RelatedOnlyFieldListFilter),
('hardware', admin.RelatedOnlyFieldListFilter))
('project', admin.RelatedOnlyFieldListFilter))
def workload_status(self, instance): # pylint: disable=no-self-use
if instance.status == WorkloadStatusType.MODIFIED:
color = 'red'
elif instance.status == WorkloadStatusType.PROCESSING:
color = 'orange'
else: # instance.status == WorkloadStatusType.PROCESSED
color = 'green'
return format_html('<span style="color: {};">{}</span>'.format(
color, WorkloadStatusType.name(instance.status)))
workload_status.short_description = 'Status'
class TaskMetaAdmin(admin.ModelAdmin):

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.27 on 2020-04-02 18:37
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('website', '0011_knob_bound_fields'),
]
operations = [
migrations.AlterField(
model_name='workload',
name='status',
field=models.IntegerField(choices=[(1, 'MODIFIED'), (2, 'PROCESSING'), (3, 'PROCESSED')], default=1),
),
]

View File

@ -394,8 +394,6 @@ class WorkloadManager(models.Manager):
class Workload(BaseModel):
# __DEFAULT_FMT = '{db}_{hw}_UNASSIGNED'.format
objects = WorkloadManager()
dbms = models.ForeignKey(DBMSCatalog)
@ -403,8 +401,7 @@ class Workload(BaseModel):
name = models.CharField(max_length=128, verbose_name='workload name')
project = models.ForeignKey(Project)
status = models.IntegerField(choices=WorkloadStatusType.choices(),
default=WorkloadStatusType.MODIFIED,
editable=False)
default=WorkloadStatusType.MODIFIED)
def delete(self, using=DEFAULT_DB_ALIAS, keep_parents=False):
# The results should not have corresponding workloads.
@ -421,20 +418,6 @@ class Workload(BaseModel):
class Meta: # pylint: disable=no-init
unique_together = ("dbms", "hardware", "name", "project")
# @property
# def isdefault(self):
# return self.cluster_name == self.default
#
# @property
# def default(self):
# return self.__DEFAULT_FMT(db=self.dbms.pk,
# hw=self.hardware.pk)
#
# @staticmethod
# def get_default(dbms_id, hw_id):
# return Workload.__DEFAULT_FMT(db=dbms_id,
# hw=hw_id)
class PipelineRunManager(models.Manager):

View File

@ -9,12 +9,20 @@
<caption><h4 style="text-align: center;">{{ labels.title }}</h4></caption>
<tbody>
<tr>
<td style="width: 50%"><div class="text-right">{{ labels.dbms }}</div></td>
<td style="width: 50%">{{ workload.dbms }}</td>
<td style="width: 50%"><div class="text-right">{{ labels.name }}</div></td>
<td style="width: 50%">{{ workload.name }}</td>
</tr>
<tr>
<td><div class="text-right">{{ labels.name }}</div></td>
<td>{{ workload.name }}</td>
<td><div class="text-right">{{ labels.dbms }}</div></td>
<td>{{ workload.dbms }}</td>
</tr>
<tr>
<td><div class="text-right">{{ labels.project }}</div></td>
<td>{{ workload.project }}</td>
</tr>
<tr>
<td><div class="text-right">{{ labels.status }}</div></td>
<td>{{ workload.get_status_display }}</td>
</tr>
</tbody>
</table>