From 1547c7c49a1852852ffbac0737d0ffdf54addda9 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Tue, 1 Mar 2011 18:47:03 +0100 Subject: isotests: entry and listing of release engineering tests Add a new project for entry and listing of testing results for our release ISOs. This will assist the release engineering team with determining a good ISO to make into the real deal. Signed-off-by: Dan McGee --- settings.py | 1 + 1 file changed, 1 insertion(+) (limited to 'settings.py') diff --git a/settings.py b/settings.py index 1d26d9eb..107baa17 100644 --- a/settings.py +++ b/settings.py @@ -104,6 +104,7 @@ 'devel', 'public', 'south', # database migration support + 'isotests', ) ## Import local settings -- cgit v1.2.3-54-g00ecf From c5a28f88936fba06755aefec61a017c2ce94ba40 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Thu, 28 Apr 2011 12:43:01 -0500 Subject: isotests: modelines, imports, url and pass * Added vim modelines to files. * Rearranged import statements. * Moved the arch releng isos url to settings.py. * Fixed some issues that arose from forgetting to import the isotests urls package. * removed redundant str() calls. Signed-off-by: Dan McGee --- isotests/admin.py | 5 ++++- isotests/models.py | 2 ++ isotests/views.py | 2 ++ settings.py | 3 +++ urls.py | 3 ++- 5 files changed, 13 insertions(+), 2 deletions(-) (limited to 'settings.py') diff --git a/isotests/admin.py b/isotests/admin.py index 0cde0f83..17303c58 100644 --- a/isotests/admin.py +++ b/isotests/admin.py @@ -1,7 +1,8 @@ +from django.contrib import admin + from isotests.models import Iso, Architecture, IsoType, BootType from isotests.models import HardwareType, InstallType, Source from isotests.models import ClockChoice, Filesystem, Module, Bootloader -from django.contrib import admin admin.site.register(Iso) admin.site.register(Architecture) @@ -14,3 +15,5 @@ admin.site.register(Filesystem) admin.site.register(Module) admin.site.register(Bootloader) + +# vim: set ts=4 sw=4 et: diff --git a/isotests/models.py b/isotests/models.py index ae5bf96f..7b7eb5e7 100644 --- a/isotests/models.py +++ b/isotests/models.py @@ -109,3 +109,5 @@ class Test(models.Model): bootloader = models.ForeignKey(Bootloader) success = models.BooleanField() comments = models.TextField(null=True, blank=True) + +# vim: set ts=4 sw=4 et: diff --git a/isotests/views.py b/isotests/views.py index 61d95e54..dd041ebc 100644 --- a/isotests/views.py +++ b/isotests/views.py @@ -108,3 +108,5 @@ def view_results_for(request, option, value): def thanks(request): return direct_to_template(request, "isotests/thanks.html", None) + +# vim: set ts=4 sw=4 et: diff --git a/settings.py b/settings.py index 107baa17..d4d3d96b 100644 --- a/settings.py +++ b/settings.py @@ -124,4 +124,7 @@ INSTALLED_APPS = list(INSTALLED_APPS) + [ 'debug_toolbar' ] +# rtf settings +ISOLISTURL = 'http://releng.archlinux.org/isos/' + # vim: set ts=4 sw=4 et: diff --git a/urls.py b/urls.py index cc8b593a..cc8e2471 100644 --- a/urls.py +++ b/urls.py @@ -77,11 +77,12 @@ (r'^opensearch/packages/$', 'packages.views.opensearch', {}, 'opensearch-packages'), (r'^todolists/$','todolists.views.public_list'), + (r'^isotests/', include('isotests.urls')), ) if settings.DEBUG == True: urlpatterns += patterns('', - (r'^media/(.*)$', 'django.views.static.serve', + (r'^media/(.*)$', 'django.views.static.serve', {'document_root': os.path.join(settings.DEPLOY_PATH, 'media')})) # vim: set ts=4 sw=4 et: -- cgit v1.2.3-54-g00ecf From 6516220b17d7987900961863a0b6dec23ac14855 Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 28 Apr 2011 13:59:53 -0500 Subject: isotests: update some syntax and ways of doing things To be more Django-like, Pythonic, or to fit better in the existing archweb project. Also add some created fields to the models, as storing dates for anything is almost always a good idea. Signed-off-by: Dan McGee --- isotests/admin.py | 5 +-- isotests/management/commands/syncisos.py | 17 ++++----- isotests/models.py | 31 +++++++++++++--- isotests/views.py | 64 +++++++++++++++----------------- settings.py | 4 +- 5 files changed, 67 insertions(+), 54 deletions(-) (limited to 'settings.py') diff --git a/isotests/admin.py b/isotests/admin.py index 17303c58..10acaa98 100644 --- a/isotests/admin.py +++ b/isotests/admin.py @@ -1,8 +1,7 @@ from django.contrib import admin -from isotests.models import Iso, Architecture, IsoType, BootType -from isotests.models import HardwareType, InstallType, Source -from isotests.models import ClockChoice, Filesystem, Module, Bootloader +from .models import (Architecture, BootType, Bootloader, ClockChoice, + Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source) admin.site.register(Iso) admin.site.register(Architecture) diff --git a/isotests/management/commands/syncisos.py b/isotests/management/commands/syncisos.py index 4cc6908e..9c76ccda 100644 --- a/isotests/management/commands/syncisos.py +++ b/isotests/management/commands/syncisos.py @@ -2,10 +2,10 @@ import urllib from HTMLParser import HTMLParser, HTMLParseError +from django.conf import settings from django.core.management.base import BaseCommand, CommandError from isotests.models import Iso -from settings import ISOLISTURL class IsoListParser(HTMLParser): def __init__(self): @@ -23,25 +23,22 @@ def handle_starttag(self, tag, attrs): def parse(self, url): try: - f = urllib.urlopen(url) - - s = f.read() - f.close() - - self.feed(s) + remote_file = urllib.urlopen(url) + data = remote_file.read() + remote_file.close() + self.feed(data) self.close() - return self.hyperlinks except HTMLParseError: raise CommandError('Couldn\'t parse "%s"' % url) class Command(BaseCommand): - help = 'Gets new isos from %s' % ISOLISTURL + help = 'Gets new isos from %s' % settings.ISO_LIST_URL def handle(self, *args, **options): parser = IsoListParser() isonames = Iso.objects.values_list('name', flat=True) - new_isos = parser.parse(ISOLISTURL) + new_isos = parser.parse(settings.ISO_LIST_URL) for iso in new_isos: if iso not in isonames: diff --git a/isotests/models.py b/isotests/models.py index 7b7eb5e7..55c1bd0d 100644 --- a/isotests/models.py +++ b/isotests/models.py @@ -1,3 +1,5 @@ +from datetime import datetime + from django.db import models from django.db.models import Max @@ -15,7 +17,8 @@ def __unicode__(self): def get_success_test(self): if not self.success_tests: - self.success_tests = self.test_set.filter(success=True).annotate(Max('iso__id')) + self.success_tests = self.test_set.filter( + success=True).annotate(Max('iso__id')) if self.success_tests: return self.success_tests[0].iso @@ -23,7 +26,8 @@ def get_success_test(self): def get_failed_test(self): if not self.failed_tests: - self.failed_tests = self.test_set.filter(success=False).annotate(Max('iso__id')) + self.failed_tests = self.test_set.filter( + success=False).annotate(Max('iso__id')) if self.failed_tests: return self.failed_tests[0].iso @@ -38,7 +42,8 @@ class Meta: 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')) + 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 @@ -46,14 +51,16 @@ def get_rollback_success_test(self): 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')) + 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): - name = models.CharField(max_length=500) + name = models.CharField(max_length=255) + created = models.DateTimeField(editable=False) active = models.BooleanField(default=True) def __unicode__(self): @@ -92,6 +99,7 @@ class Bootloader(IsoOption): class Test(models.Model): user_name = models.CharField(max_length=500) user_email = models.EmailField() + created = models.DateTimeField(editable=False) iso = models.ForeignKey(Iso) architecture = models.ForeignKey(Architecture) iso_type = models.ForeignKey(IsoType) @@ -110,4 +118,17 @@ class Test(models.Model): success = models.BooleanField() comments = models.TextField(null=True, blank=True) +def set_created_field(sender, **kwargs): + # We use this same callback for both Isos and Tests + obj = kwargs['instance'] + if not obj.created: + obj.created = datetime.utcnow() + +from django.db.models.signals import pre_save + +pre_save.connect(set_created_field, sender=Iso, + dispatch_uid="isotests.models") +pre_save.connect(set_created_field, sender=Test, + dispatch_uid="isotests.models") + # vim: set ts=4 sw=4 et: diff --git a/isotests/views.py b/isotests/views.py index dd041ebc..0bb92356 100644 --- a/isotests/views.py +++ b/isotests/views.py @@ -1,15 +1,12 @@ -from django.forms import ModelChoiceField, CharField, TextInput -from django.forms import ModelForm, RadioSelect, CheckboxSelectMultiple -from django.forms import ModelMultipleChoiceField, BooleanField -from django.http import HttpResponse, HttpResponseRedirect -from django.template import Context, loader +from django import forms +from django.http import HttpResponseRedirect from django.views.generic.simple import direct_to_template -from isotests.models import Iso, Architecture, IsoType, BootType -from isotests.models import HardwareType, InstallType, Source, Test -from isotests.models import ClockChoice, Filesystem, Module, Bootloader +from .models import (Architecture, BootType, Bootloader, ClockChoice, + Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source, + Test) -class TestForm(ModelForm): +class TestForm(forms.ModelForm): class Meta: model = Test fields = ("user_name", "user_email", "iso", "architecture", @@ -18,35 +15,35 @@ class Meta: "modules", "rollback_filesystem", "rollback_modules", "bootloader", "success", "comments") widgets = { - "architecture": RadioSelect(), - "iso_type": RadioSelect(), - "boot_type": RadioSelect(), - "hardware_type": RadioSelect(), - "install_type": RadioSelect(), - "source": RadioSelect(), - "clock_choice": RadioSelect(), - "bootloader": RadioSelect(), - "modules": CheckboxSelectMultiple(), + "architecture": forms.RadioSelect(), + "iso_type": forms.RadioSelect(), + "boot_type": forms.RadioSelect(), + "hardware_type": forms.RadioSelect(), + "install_type": forms.RadioSelect(), + "source": forms.RadioSelect(), + "clock_choice": forms.RadioSelect(), + "bootloader": forms.RadioSelect(), + "modules": forms.CheckboxSelectMultiple(), } - success = BooleanField(help_text="Only check this if everything went fine. " \ + success = forms.BooleanField(help_text="Only check this if everything went fine. " \ "If you you ran into any errors please specify them in the " \ "comments.", required=False) - iso = ModelChoiceField(queryset=Iso.objects.filter(active=True)) - filesystem = ModelChoiceField(queryset=Filesystem.objects.all(), + iso = forms.ModelChoiceField(queryset=Iso.objects.filter(active=True)) + filesystem = forms.ModelChoiceField(queryset=Filesystem.objects.all(), help_text="Check the installed system, including fstab.", - widget=RadioSelect()) - modules = ModelMultipleChoiceField(queryset=Module.objects.all(), - help_text="", widget=CheckboxSelectMultiple(), required=False) - rollback_filesystem = ModelChoiceField(queryset=Filesystem.objects.all(), + widget=forms.RadioSelect()) + modules = forms.ModelMultipleChoiceField(queryset=Module.objects.all(), + help_text="", widget=forms.CheckboxSelectMultiple(), required=False) + rollback_filesystem = forms.ModelChoiceField(queryset=Filesystem.objects.all(), help_text="If you did a rollback followed by a new attempt to setup " \ "your lockdevices/filesystems, select which option you took here.", - widget=RadioSelect(), required=False) - rollback_modules = ModelMultipleChoiceField(queryset=Module.objects.all(), + widget=forms.RadioSelect(), required=False) + rollback_modules = forms.ModelMultipleChoiceField(queryset=Module.objects.all(), help_text="If you did a rollback followed b a new attempt to setup " \ "your lockdevices/filesystems, select which option you took here.", - widget=CheckboxSelectMultiple(), required=False) - website = CharField(label='', - widget=TextInput(attrs={'style': 'display:none;'}), required=False) + widget=forms.CheckboxSelectMultiple(), required=False) + website = forms.CharField(label='', + widget=forms.TextInput(attrs={'style': 'display:none;'}), required=False) def add_result(request): if request.POST: @@ -72,8 +69,7 @@ def view_results(request): filesystem_list = Filesystem.objects.all() bootloader_list = Bootloader.objects.all() - t = loader.get_template("isotests/results.html") - c = Context({ + context = { 'architecture_list': architecture_list, 'iso_type_list': iso_type_list, 'boot_type_list': boot_type_list, @@ -84,8 +80,8 @@ def view_results(request): 'filesystem_list': filesystem_list, 'module_list': module_list, 'bootloader_list': bootloader_list, - }) - return HttpResponse(t.render(c)) + } + return direct_to_template(request, 'isotests/results.html', context) def view_results_iso(request, isoid): iso = Iso.objects.get(pk=isoid) diff --git a/settings.py b/settings.py index d4d3d96b..a21205d3 100644 --- a/settings.py +++ b/settings.py @@ -124,7 +124,7 @@ INSTALLED_APPS = list(INSTALLED_APPS) + [ 'debug_toolbar' ] -# rtf settings -ISOLISTURL = 'http://releng.archlinux.org/isos/' +# URL to fetch a current list of available ISOs +ISO_LIST_URL = 'http://releng.archlinux.org/isos/' # vim: set ts=4 sw=4 et: -- cgit v1.2.3-54-g00ecf From bfe6afcd7ac5ae7b6f07caa7b02a33fec710ebda Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Thu, 28 Apr 2011 17:58:13 -0500 Subject: Rename isotests to releng Signed-off-by: Dan McGee --- isotests/__init__.py | 0 isotests/admin.py | 18 ----- isotests/fixtures/architecture.json | 30 ------- isotests/fixtures/bootloaders.json | 23 ------ isotests/fixtures/boottype.json | 23 ------ isotests/fixtures/clockchoices.json | 23 ------ isotests/fixtures/filesystems.json | 23 ------ isotests/fixtures/hardware.json | 44 ----------- isotests/fixtures/installtype.json | 30 ------- isotests/fixtures/isotypes.json | 16 ---- isotests/fixtures/modules.json | 86 -------------------- isotests/fixtures/source.json | 23 ------ isotests/management/__init__.py | 0 isotests/management/commands/__init__.py | 0 isotests/management/commands/syncisos.py | 48 ----------- isotests/models.py | 121 ---------------------------- isotests/urls.py | 11 --- isotests/views.py | 132 ------------------------------- releng/__init__.py | 0 releng/admin.py | 18 +++++ releng/fixtures/architecture.json | 30 +++++++ releng/fixtures/bootloaders.json | 23 ++++++ releng/fixtures/boottype.json | 23 ++++++ releng/fixtures/clockchoices.json | 23 ++++++ releng/fixtures/filesystems.json | 23 ++++++ releng/fixtures/hardware.json | 44 +++++++++++ releng/fixtures/installtype.json | 30 +++++++ releng/fixtures/isotypes.json | 16 ++++ releng/fixtures/modules.json | 86 ++++++++++++++++++++ releng/fixtures/source.json | 23 ++++++ releng/management/__init__.py | 0 releng/management/commands/__init__.py | 0 releng/management/commands/syncisos.py | 48 +++++++++++ releng/models.py | 121 ++++++++++++++++++++++++++++ releng/urls.py | 11 +++ releng/views.py | 132 +++++++++++++++++++++++++++++++ settings.py | 2 +- templates/isotests/add.html | 20 ----- templates/isotests/result_list.html | 41 ---------- templates/isotests/result_section.html | 26 ------ templates/isotests/results.html | 25 ------ templates/isotests/thanks.html | 13 --- templates/releng/add.html | 20 +++++ templates/releng/result_list.html | 41 ++++++++++ templates/releng/result_section.html | 26 ++++++ templates/releng/results.html | 25 ++++++ templates/releng/thanks.html | 13 +++ urls.py | 2 +- 48 files changed, 778 insertions(+), 778 deletions(-) delete mode 100644 isotests/__init__.py delete mode 100644 isotests/admin.py delete mode 100644 isotests/fixtures/architecture.json delete mode 100644 isotests/fixtures/bootloaders.json delete mode 100644 isotests/fixtures/boottype.json delete mode 100644 isotests/fixtures/clockchoices.json delete mode 100644 isotests/fixtures/filesystems.json delete mode 100644 isotests/fixtures/hardware.json delete mode 100644 isotests/fixtures/installtype.json delete mode 100644 isotests/fixtures/isotypes.json delete mode 100644 isotests/fixtures/modules.json delete mode 100644 isotests/fixtures/source.json delete mode 100644 isotests/management/__init__.py delete mode 100644 isotests/management/commands/__init__.py delete mode 100644 isotests/management/commands/syncisos.py delete mode 100644 isotests/models.py delete mode 100644 isotests/urls.py delete mode 100644 isotests/views.py create mode 100644 releng/__init__.py create mode 100644 releng/admin.py create mode 100644 releng/fixtures/architecture.json create mode 100644 releng/fixtures/bootloaders.json create mode 100644 releng/fixtures/boottype.json create mode 100644 releng/fixtures/clockchoices.json create mode 100644 releng/fixtures/filesystems.json create mode 100644 releng/fixtures/hardware.json create mode 100644 releng/fixtures/installtype.json create mode 100644 releng/fixtures/isotypes.json create mode 100644 releng/fixtures/modules.json create mode 100644 releng/fixtures/source.json create mode 100644 releng/management/__init__.py create mode 100644 releng/management/commands/__init__.py create mode 100644 releng/management/commands/syncisos.py create mode 100644 releng/models.py create mode 100644 releng/urls.py create mode 100644 releng/views.py delete mode 100644 templates/isotests/add.html delete mode 100644 templates/isotests/result_list.html delete mode 100644 templates/isotests/result_section.html delete mode 100644 templates/isotests/results.html delete mode 100644 templates/isotests/thanks.html create mode 100644 templates/releng/add.html create mode 100644 templates/releng/result_list.html create mode 100644 templates/releng/result_section.html create mode 100644 templates/releng/results.html create mode 100644 templates/releng/thanks.html (limited to 'settings.py') diff --git a/isotests/__init__.py b/isotests/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/isotests/admin.py b/isotests/admin.py deleted file mode 100644 index 10acaa98..00000000 --- a/isotests/admin.py +++ /dev/null @@ -1,18 +0,0 @@ -from django.contrib import admin - -from .models import (Architecture, BootType, Bootloader, ClockChoice, - Filesystem, HardwareType, InstallType, Iso, IsoType, Module, Source) - -admin.site.register(Iso) -admin.site.register(Architecture) -admin.site.register(IsoType) -admin.site.register(BootType) -admin.site.register(HardwareType) -admin.site.register(InstallType) -admin.site.register(Source) -admin.site.register(ClockChoice) -admin.site.register(Filesystem) -admin.site.register(Module) -admin.site.register(Bootloader) - -# vim: set ts=4 sw=4 et: diff --git a/isotests/fixtures/architecture.json b/isotests/fixtures/architecture.json deleted file mode 100644 index a21100ba..00000000 --- a/isotests/fixtures/architecture.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.architecture", - "fields": { - "name": "dual, option i686" - } - }, - { - "pk": 2, - "model": "isotests.architecture", - "fields": { - "name": "dual, option x86_64" - } - }, - { - "pk": 3, - "model": "isotests.architecture", - "fields": { - "name": "i686" - } - }, - { - "pk": 4, - "model": "isotests.architecture", - "fields": { - "name": "x86_64" - } - } -] diff --git a/isotests/fixtures/bootloaders.json b/isotests/fixtures/bootloaders.json deleted file mode 100644 index 545b5c0c..00000000 --- a/isotests/fixtures/bootloaders.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.bootloader", - "fields": { - "name": "grub" - } - }, - { - "pk": 2, - "model": "isotests.bootloader", - "fields": { - "name": "syslinux" - } - }, - { - "pk": 3, - "model": "isotests.bootloader", - "fields": { - "name": "other/manual" - } - } -] diff --git a/isotests/fixtures/boottype.json b/isotests/fixtures/boottype.json deleted file mode 100644 index 5d87ef15..00000000 --- a/isotests/fixtures/boottype.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.boottype", - "fields": { - "name": "optical" - } - }, - { - "pk": 2, - "model": "isotests.boottype", - "fields": { - "name": "usb" - } - }, - { - "pk": 3, - "model": "isotests.boottype", - "fields": { - "name": "pxe" - } - } -] diff --git a/isotests/fixtures/clockchoices.json b/isotests/fixtures/clockchoices.json deleted file mode 100644 index 6dfd06e1..00000000 --- a/isotests/fixtures/clockchoices.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.clockchoice", - "fields": { - "name": "unchanged" - } - }, - { - "pk": 2, - "model": "isotests.clockchoice", - "fields": { - "name": "configured manually" - } - }, - { - "pk": 3, - "model": "isotests.clockchoice", - "fields": { - "name": "NTP" - } - } -] diff --git a/isotests/fixtures/filesystems.json b/isotests/fixtures/filesystems.json deleted file mode 100644 index 5386c391..00000000 --- a/isotests/fixtures/filesystems.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.filesystem", - "fields": { - "name": "autoprepare" - } - }, - { - "pk": 2, - "model": "isotests.filesystem", - "fields": { - "name": "manual" - } - }, - { - "pk": 3, - "model": "isotests.filesystem", - "fields": { - "name": "from config file" - } - } -] diff --git a/isotests/fixtures/hardware.json b/isotests/fixtures/hardware.json deleted file mode 100644 index 335a50f6..00000000 --- a/isotests/fixtures/hardware.json +++ /dev/null @@ -1,44 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.hardwaretype", - "fields": { - "name": "virtualbox" - } - }, - { - "pk": 2, - "model": "isotests.hardwaretype", - "fields": { - "name": "qemu" - } - }, - { - "pk": 3, - "model": "isotests.hardwaretype", - "fields": { - "name": "intel i686" - } - }, - { - "pk": 4, - "model": "isotests.hardwaretype", - "fields": { - "name": "intel x86_64" - } - }, - { - "pk": 5, - "model": "isotests.hardwaretype", - "fields": { - "name": "amd i686" - } - }, - { - "pk": 6, - "model": "isotests.hardwaretype", - "fields": { - "name": "amd x86_64" - } - } -] diff --git a/isotests/fixtures/installtype.json b/isotests/fixtures/installtype.json deleted file mode 100644 index cc5c62a0..00000000 --- a/isotests/fixtures/installtype.json +++ /dev/null @@ -1,30 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.installtype", - "fields": { - "name": "interactive install" - } - }, - { - "pk": 2, - "model": "isotests.installtype", - "fields": { - "name": "automatic install generic example" - } - }, - { - "pk": 3, - "model": "isotests.installtype", - "fields": { - "name": "automatic install fancy example" - } - }, - { - "pk": 4, - "model": "isotests.installtype", - "fields": { - "name": "automatic install custom config (specify in comments)" - } - } -] diff --git a/isotests/fixtures/isotypes.json b/isotests/fixtures/isotypes.json deleted file mode 100644 index 760e3738..00000000 --- a/isotests/fixtures/isotypes.json +++ /dev/null @@ -1,16 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.isotype", - "fields": { - "name": "core" - } - }, - { - "pk": 2, - "model": "isotests.isotype", - "fields": { - "name": "net" - } - } -] diff --git a/isotests/fixtures/modules.json b/isotests/fixtures/modules.json deleted file mode 100644 index ae8a1683..00000000 --- a/isotests/fixtures/modules.json +++ /dev/null @@ -1,86 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.module", - "fields": { - "name": "lvm2" - } - }, - { - "pk": 2, - "model": "isotests.module", - "fields": { - "name": "dm_crypt" - } - }, - { - "pk": 3, - "model": "isotests.module", - "fields": { - "name": "softraid" - } - }, - { - "pk": 4, - "model": "isotests.module", - "fields": { - "name": "nilfs2" - } - }, - { - "pk": 5, - "model": "isotests.module", - "fields": { - "name": "btrfs" - } - }, - { - "pk": 6, - "model": "isotests.module", - "fields": { - "name": "ext2" - } - }, - { - "pk": 7, - "model": "isotests.module", - "fields": { - "name": "ext3" - } - }, - { - "pk": 8, - "model": "isotests.module", - "fields": { - "name": "ext4" - } - }, - { - "pk": 9, - "model": "isotests.module", - "fields": { - "name": "swap" - } - }, - { - "pk": 10, - "model": "isotests.module", - "fields": { - "name": "xfs" - } - }, - { - "pk": 11, - "model": "isotests.module", - "fields": { - "name": "jfs" - } - }, - { - "pk": 12, - "model": "isotests.module", - "fields": { - "name": "reiserFS" - } - } -] diff --git a/isotests/fixtures/source.json b/isotests/fixtures/source.json deleted file mode 100644 index 1bf835a1..00000000 --- a/isotests/fixtures/source.json +++ /dev/null @@ -1,23 +0,0 @@ -[ - { - "pk": 1, - "model": "isotests.source", - "fields": { - "name": "net install manual networking config (Check that it works + rc.conf, resolv.conf, mirrorlist)" - } - }, - { - "pk": 2, - "model": "isotests.source", - "fields": { - "name": "net install dhcp (Check that it works + rc.conf)" - } - }, - { - "pk": 3, - "model": "isotests.source", - "fields": { - "name": "core" - } - } -] diff --git a/isotests/management/__init__.py b/isotests/management/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/isotests/management/commands/__init__.py b/isotests/management/commands/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/isotests/management/commands/syncisos.py b/isotests/management/commands/syncisos.py deleted file mode 100644 index 9c76ccda..00000000 --- a/isotests/management/commands/syncisos.py +++ /dev/null @@ -1,48 +0,0 @@ -import re -import urllib -from HTMLParser import HTMLParser, HTMLParseError - -from django.conf import settings -from django.core.management.base import BaseCommand, CommandError - -from isotests.models import Iso - -class IsoListParser(HTMLParser): - def __init__(self): - HTMLParser.__init__(self) - - self.hyperlinks = [] - self.url_re = re.compile('(?!\.{2})/$') - - def handle_starttag(self, tag, attrs): - if tag == 'a': - for name, value in attrs: - if name == "href": - if value != '../' and self.url_re.search(value) != None: - self.hyperlinks.append(value[:len(value)-1]) - - def parse(self, url): - try: - remote_file = urllib.urlopen(url) - data = remote_file.read() - remote_file.close() - self.feed(data) - self.close() - return self.hyperlinks - except HTMLParseError: - raise CommandError('Couldn\'t parse "%s"' % url) - -class Command(BaseCommand): - help = 'Gets new isos from %s' % settings.ISO_LIST_URL - - def handle(self, *args, **options): - parser = IsoListParser() - isonames = Iso.objects.values_list('name', flat=True) - new_isos = parser.parse(settings.ISO_LIST_URL) - - for iso in new_isos: - if iso not in isonames: - new = Iso(name=iso) - new.save() - -# vim: set ts=4 sw=4 et: diff --git a/isotests/models.py b/isotests/models.py deleted file mode 100644 index de8dd13c..00000000 --- a/isotests/models.py +++ /dev/null @@ -1,121 +0,0 @@ -from datetime import datetime - -from django.db import models -from django.db.models import Max - -class IsoOption(models.Model): - name = models.CharField(max_length=200) - - def __unicode__(self): - return self.name - - def get_test_result(self, success): - try: - return self.test_set.filter(success=success).select_related( - 'iso').latest('iso__id').iso - except Test.DoesNotExist: - return None - - def get_last_success(self): - return self.get_test_result(True) - - def get_last_failure(self): - return self.get_test_result(False) - - class Meta: - abstract = True - -class RollbackOption(IsoOption): - def get_rollback_test_result(self, success): - try: - return self.rollback_test_set.filter(success=success).select_related( - 'iso').latest('iso__id').iso - except Test.DoesNotExist: - return None - - def get_last_rollback_success(self): - return self.get_rollback_test_result(True) - - def get_last_rollback_failure(self): - return self.get_rollback_test_result(False) - - class Meta: - abstract = True - -class Iso(models.Model): - name = models.CharField(max_length=255) - created = models.DateTimeField(editable=False) - active = models.BooleanField(default=True) - - def __unicode__(self): - return self.name - -class Architecture(IsoOption): - pass - -class IsoType(IsoOption): - pass - -class BootType(IsoOption): - pass - -class HardwareType(IsoOption): - pass - -class InstallType(IsoOption): - pass - -class Source(IsoOption): - pass - -class ClockChoice(IsoOption): - pass - -class Filesystem(RollbackOption): - pass - -class Module(RollbackOption): - pass - -class Bootloader(IsoOption): - pass - -class Test(models.Model): - user_name = models.CharField(max_length=500) - user_email = models.EmailField() - ip_address = models.IPAddressField() - created = models.DateTimeField(editable=False) - - iso = models.ForeignKey(Iso) - architecture = models.ForeignKey(Architecture) - iso_type = models.ForeignKey(IsoType) - boot_type = models.ForeignKey(BootType) - hardware_type = models.ForeignKey(HardwareType) - install_type = models.ForeignKey(InstallType) - source = models.ForeignKey(Source) - clock_choice = models.ForeignKey(ClockChoice) - filesystem = models.ForeignKey(Filesystem) - modules = models.ManyToManyField(Module, null=True, blank=True) - bootloader = models.ForeignKey(Bootloader) - rollback_filesystem = models.ForeignKey(Filesystem, - related_name="rollback_test_set", null=True, blank=True) - rollback_modules = models.ManyToManyField(Module, - related_name="rollback_test_set", null=True, blank=True) - - success = models.BooleanField() - comments = models.TextField(null=True, blank=True) - -def set_created_field(sender, **kwargs): - # We use this same callback for both Isos and Tests - obj = kwargs['instance'] - if not obj.created: - obj.created = datetime.utcnow() - -from django.db.models.signals import pre_save - -pre_save.connect(set_created_field, sender=Iso, - dispatch_uid="isotests.models") -pre_save.connect(set_created_field, sender=Test, - dispatch_uid="isotests.models") - -# vim: set ts=4 sw=4 et: diff --git a/isotests/urls.py b/isotests/urls.py deleted file mode 100644 index 12497cde..00000000 --- a/isotests/urls.py +++ /dev/null @@ -1,11 +0,0 @@ -from django.conf.urls.defaults import patterns - -urlpatterns = patterns('isotests.views', - (r'^$', 'test_results_overview', {}, 'releng-test-overview'), - (r'^submit/$', 'submit_test_result', {}, 'releng-test-submit'), - (r'^thanks/$', 'submit_test_thanks', {}, 'releng-test-thanks'), - (r'^iso/(?P\d+)/$', 'test_results_iso', {}, 'releng-results-iso'), - (r'^(?P