summaryrefslogtreecommitdiff
path: root/isotests/models.py
diff options
context:
space:
mode:
authorTom Willemsen <tom.willemsen@archlinux.us>2011-04-28 13:19:42 -0500
committerDan McGee <dan@archlinux.org>2011-04-28 13:19:49 -0500
commitc292dcfc6bf96ebf5f34342beb1367aa5361f7c4 (patch)
treece49cd8c6bc90b37a6e4f61da53c17018fd865f2 /isotests/models.py
parentdb137d4db607461dd32c46e40bee9084eb508da9 (diff)
isotests: various changes and updates
* isotests/fixtures/clockchoices.json: changed 'default' to 'unchanged' * isotests/fixtures/filesystems.json: removed 'check the installed system' line from one of the options * isotests/fixtures/modules.json: added 'ext2','ext3','ext4','swap','xfs','jfs','reiserFS' * isotests/models.py: * Added RollbackOption abstract class that adds the functions get_rollback_success_test and get_rollback_failed_test on top of the IsoOption abstract class for use with the Filesystem and Module classes since Test uses these both in 2 ways (regular and rollback). This keeps them seperated. * renamed the related names of these properties from rollback_test to rollback_test_set (seems more in-tune with the other relations) * isotests/views.py: * changed the order of the fields, the automatic order makes no sense. * Added help texts to the fields success, filesystem, rollback_filesystem and rollback_modules. * Removed help text from modules (made no sense) * Added a website field, should remain empty, a simplistic way to hopefully reduce spambot entries. * templates/isotests/results.html: * Removed the rollback yes/no section * The rollback labels should check get_rollback_success_test and get_rollback_failed_test. * Rollback checkbox removed. * Clearly tell users that success must only be selected if everything works right. * Clearly tell users to only fill in the rollback options if they did a rollback. * Added a thanks page that tells people thanks. * Added links between the pages. * Added links to lists with tests of either a specific iso or of any iso where a specific option was selected. Signed-off-by: Dan McGee <dan@archlinux.org> Conflicts: templates/isotests/results.html
Diffstat (limited to 'isotests/models.py')
-rw-r--r--isotests/models.py51
1 files changed, 40 insertions, 11 deletions
diff --git a/isotests/models.py b/isotests/models.py
index bffb2d94..ae5bf96f 100644
--- a/isotests/models.py
+++ b/isotests/models.py
@@ -7,19 +7,49 @@ class IsoOption(models.Model):
name = models.CharField(max_length=200)
+ success_tests = None
+ failed_tests = None
+
def __unicode__(self):
return str(self.name)
def get_success_test(self):
- test = self.test_set.filter(success=True).annotate(Max('iso__id'))
- if test:
- return test[0].iso.name
+ if not self.success_tests:
+ self.success_tests = self.test_set.filter(success=True).annotate(Max('iso__id'))
+
+ if self.success_tests:
+ return self.success_tests[0].iso
return None
def get_failed_test(self):
- test = self.test_set.filter(success=False).annotate(Max('iso__id'))
- if test:
- return test[0].iso.name
+ if not self.failed_tests:
+ self.failed_tests = self.test_set.filter(success=False).annotate(Max('iso__id'))
+
+ if self.failed_tests:
+ return self.failed_tests[0].iso
+ return None
+
+class RollbackOption(IsoOption):
+ class Meta:
+ abstract = True
+
+ success_rollback_tests = None
+ failed_rollback_tests = None
+
+ def get_rollback_success_test(self):
+ if not self.success_rollback_tests:
+ self.success_rollback_tests = self.rollback_test_set.filter(success=True).annotate(Max('iso__id'))
+
+ if self.success_rollback_tests:
+ return self.success_rollback_tests[0].iso
+ return None
+
+ def get_rollback_failed_test(self):
+ if not self.failed_rollback_tests:
+ self.failed_rollback_tests = self.rollback_test_set.filter(success=False).annotate(Max('iso__id'))
+
+ if self.failed_rollback_tests:
+ return self.failed_rollback_tests[0].iso
return None
class Iso(models.Model):
@@ -50,10 +80,10 @@ class Source(IsoOption):
class ClockChoice(IsoOption):
pass
-class Filesystem(IsoOption):
+class Filesystem(RollbackOption):
pass
-class Module(IsoOption):
+class Module(RollbackOption):
pass
class Bootloader(IsoOption):
@@ -72,11 +102,10 @@ class Test(models.Model):
clock_choice = models.ForeignKey(ClockChoice)
filesystem = models.ForeignKey(Filesystem)
modules = models.ManyToManyField(Module, null=True, blank=True)
- rollback = models.BooleanField()
rollback_filesystem = models.ForeignKey(Filesystem,
- related_name="rollback_test", null=True, blank=True)
+ related_name="rollback_test_set", null=True, blank=True)
rollback_modules = models.ManyToManyField(Module,
- related_name="rollback_test", null=True, blank=True)
+ related_name="rollback_test_set", null=True, blank=True)
bootloader = models.ForeignKey(Bootloader)
success = models.BooleanField()
comments = models.TextField(null=True, blank=True)