From c292dcfc6bf96ebf5f34342beb1367aa5361f7c4 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Thu, 28 Apr 2011 13:19:42 -0500 Subject: 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 Conflicts: templates/isotests/results.html --- isotests/views.py | 64 ++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 10 deletions(-) (limited to 'isotests/views.py') diff --git a/isotests/views.py b/isotests/views.py index cb7f23c5..61d95e54 100644 --- a/isotests/views.py +++ b/isotests/views.py @@ -1,15 +1,22 @@ -from django.http import HttpResponse, HttpResponseRedirect +from django.forms import ModelChoiceField, CharField, TextInput from django.forms import ModelForm, RadioSelect, CheckboxSelectMultiple -from django.forms import ModelChoiceField +from django.forms import ModelMultipleChoiceField, BooleanField +from django.http import HttpResponse, HttpResponseRedirect +from django.template import Context, loader +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 django.template import Context, loader -from django.views.generic.simple import direct_to_template class TestForm(ModelForm): class Meta: model = Test + fields = ("user_name", "user_email", "iso", "architecture", + "iso_type", "boot_type", "hardware_type", + "install_type", "source", "clock_choice", "filesystem", + "modules", "rollback_filesystem", "rollback_modules", + "bootloader", "success", "comments") widgets = { "architecture": RadioSelect(), "iso_type": RadioSelect(), @@ -18,20 +25,35 @@ class Meta: "install_type": RadioSelect(), "source": RadioSelect(), "clock_choice": RadioSelect(), - "filesystem": RadioSelect(), - "rollback_filesystem": RadioSelect(), "bootloader": RadioSelect(), "modules": CheckboxSelectMultiple(), - "rollback_modules": CheckboxSelectMultiple(), } + success = 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(), + 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(), + 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(), + 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) def add_result(request): - if request.method == 'POST': + if request.POST: form = TestForm(request.POST) - if form.is_valid(): + if form.is_valid() and request.POST['website'] == '': form.save() - return HttpResponseRedirect('/isotests') + return HttpResponseRedirect('/isotests/thanks/') else: form = TestForm() @@ -64,3 +86,25 @@ def view_results(request): 'bootloader_list': bootloader_list, }) return HttpResponse(t.render(c)) + +def view_results_iso(request, isoid): + iso = Iso.objects.get(pk=isoid) + test_list = Test.objects.filter(iso__pk=isoid) + context = { + 'iso_name': iso.name, + 'test_list': test_list + } + return direct_to_template(request, 'isotests/result_list.html', context) + +def view_results_for(request, option, value): + kwargs = {option: value} + test_list = Test.objects.filter(**kwargs).order_by("iso__name", "pk") + context = { + 'option': option, + 'value': value, + 'test_list': test_list + } + return direct_to_template(request, 'isotests/result_list.html', context) + +def thanks(request): + return direct_to_template(request, "isotests/thanks.html", None) -- cgit v1.2.3-54-g00ecf