summaryrefslogtreecommitdiff
path: root/isotests/models.py
diff options
context:
space:
mode:
authorTom Willemsen <tom.willemsen@archlinux.us>2011-03-01 20:43:37 +0100
committerDan McGee <dan@archlinux.org>2011-04-28 13:15:58 -0500
commitf4229daac60fa90cbf8d77bfdffd88a467869b3c (patch)
tree79b535489f289946067e3d09f8e4f832fabf4fa0 /isotests/models.py
parent1547c7c49a1852852ffbac0737d0ffdf54addda9 (diff)
isotests: view updates, choices->models, show results, admin
* Started changing the view portion * Changed choices to models * Show the latest failed/succeeded tests on results page * Added some more admin pages Signed-off-by: Dan McGee <dan@archlinux.org>
Diffstat (limited to 'isotests/models.py')
-rw-r--r--isotests/models.py110
1 files changed, 78 insertions, 32 deletions
diff --git a/isotests/models.py b/isotests/models.py
index 1eaca163..d9cfc78c 100644
--- a/isotests/models.py
+++ b/isotests/models.py
@@ -1,4 +1,6 @@
from django.db import models
+from django.db.models import Max
+from datetime import datetime
# Create your models here.
class Iso(models.Model):
@@ -7,81 +9,125 @@ class Iso(models.Model):
def __unicode__(self):
return str(self.date)
+class Architecture(models.Model):
+ name = models.CharField(max_length=200)
+
+ def __unicode__(self):
+ return self.name
+
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
+
+class Isotype(models.Model):
+ name = models.CharField(max_length=200)
+
+ def __unicode__(self):
+ return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
+
+class Boottype(models.Model):
+ name = models.CharField(max_length=200)
+
+ def __unicode__(self):
+ return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
+
class Hardware(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
class InstallType(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
class Source(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
+
+class Clockchoice(models.Model):
+ name = models.CharField(max_length=200)
+
+ def __unicode__(self):
+ return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
class Filesystem(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
class Module(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
class Bootloader(models.Model):
name = models.CharField(max_length=200)
def __unicode__(self):
return self.name
+ def get_success_test(self):
+ return self.test_set.filter(success=True).aggregate(Max('iso__date'))['iso__date__max']
+ def get_failed_test(self):
+ return self.test_set.filter(success=False).aggregate(Max('iso__date'))['iso__date__max']
class Test(models.Model):
- ARCH_CHOICES = (
- ('d86', 'dual, option i686'),
- ('d64', 'dual, option x86_64'),
- ('x86', 'i686'),
- ('x64', 'x86_64')
- )
-
- ISOTYPE_CHOICES = (
- ('c', 'core'),
- ('n', 'net')
- )
-
- BOOTTYPE_CHOICES = (
- ('o', 'optical'),
- ('u', 'usb'),
- ('p', 'pxe')
- )
-
- CLOCK_CHOICES = (
- ('d', 'default'),
- ('m', 'configured manually'),
- ('n', 'NTP')
- )
-
user_name = models.CharField(max_length=500)
user_email = models.EmailField()
iso = models.ForeignKey(Iso)
- arch = models.CharField(max_length=3, choices=ARCH_CHOICES)
- isotype = models.CharField(max_length=1, choices=ISOTYPE_CHOICES)
- boottype = models.CharField(max_length=1, choices=BOOTTYPE_CHOICES)
+ arch = models.ForeignKey(Architecture)
+ isotype = models.ForeignKey(Isotype)
+ boottype = models.ForeignKey(Boottype)
hardwaretype = models.ForeignKey(Hardware)
installtype = models.ForeignKey(InstallType)
source = models.ForeignKey(Source)
- clock = models.CharField(max_length=1, choices=CLOCK_CHOICES)
+ clock = models.ForeignKey(Clockchoice)
filesystem = models.ForeignKey(Filesystem)
- ms = models.ManyToManyField(Module)
+ ms = models.ManyToManyField(Module, null=True, blank=True)
rollback = models.BooleanField()
- rollback_filesystem = models.ForeignKey(Filesystem, related_name="rollback_test")
- rollback_modules = models.ManyToManyField(Module, related_name="rollback_test")
+ rollback_filesystem = models.ForeignKey(Filesystem,
+ related_name="rollback_test", null=True, blank=True)
+ rollback_modules = models.ManyToManyField(Module,
+ related_name="rollback_test", null=True, blank=True)
+ bootloader = models.ForeignKey(Bootloader)
success = models.BooleanField()
- comments = models.TextField()
+ comments = models.TextField(null=True, blank=True)