diff options
author | Tom Willemsen <tom.willemsen@archlinux.us> | 2011-04-28 13:19:42 -0500 |
---|---|---|
committer | Dan McGee <dan@archlinux.org> | 2011-04-28 13:19:49 -0500 |
commit | c292dcfc6bf96ebf5f34342beb1367aa5361f7c4 (patch) | |
tree | ce49cd8c6bc90b37a6e4f61da53c17018fd865f2 /isotests/models.py | |
parent | db137d4db607461dd32c46e40bee9084eb508da9 (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.py | 51 |
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) |