diff options
Diffstat (limited to 'website/forms.py')
-rw-r--r-- | website/forms.py | 78 |
1 files changed, 13 insertions, 65 deletions
diff --git a/website/forms.py b/website/forms.py index b982d54..e2e6783 100644 --- a/website/forms.py +++ b/website/forms.py @@ -1,85 +1,33 @@ from django import forms from website.models import * - -categories = ( - ("None", "Select a Category"), - ("General", "General"), - ('Advanced-C++', 'Advanced-C++'), - ('BASH', 'BASH'), - ('Blender', 'Blender'), - ('C-and-C++', 'C-and-C++'), - ('CellDesigner', 'CellDesigner'), - ('Digital-Divide', 'Digital-Divide'), - ('Drupal', 'Drupal'), - ('Firefox', 'Firefox'), - ('GChemPaint', 'GChemPaint'), - ('Geogebra', 'Geogebra'), - ('GeoGebra-for-Engineering-drawing', 'GeoGebra-for-Engineering-drawing'), - ('GIMP', 'GIMP'), - ('GNS3', 'GNS3'), - ('GSchem', 'GSchem'), - ('Inkscape', 'Inkscape'), - ('Java', 'Java'), - ('Java-Business-Application', 'Java-Business-Application'), - ('KiCad', 'KiCad'), - ('KTouch', 'KTouch'), - ('KTurtle', 'KTurtle'), - ('LaTeX', 'LaTeX'), - ('LibreOffice-Suite-Base', 'LibreOffice-Suite-Base'), - ('LibreOffice-Suite-Calc', 'LibreOffice-Suite-Calc'), - ('LibreOffice-Suite-Draw', 'LibreOffice-Suite-Draw'), - ('LibreOffice-Suite-Impress', 'LibreOffice-Suite-Impress'), - ('LibreOffice-Suite-Math', 'LibreOffice-Suite-Math'), - ('LibreOffice-Suite-Writer', 'LibreOffice-Suite-Writer'), - ('Linux', 'Linux'), - ('Netbeans', 'Netbeans'), - ('Ngspice', 'Ngspice'), - ('OpenFOAM', 'OpenFOAM'), - ('Orca', 'Orca'), - ('Oscad', 'Oscad'), - ('PERL', 'PERL'), - ('PHP-and-MySQL', 'PHP-and-MySQL'), - ('Python', 'Python'), - ('Python-Old-Version', 'Python-Old-Version'), - ('QCad', 'QCad'), - ('R', 'R'), - ('Ruby', 'Ruby'), - ('Scilab', 'Scilab'), - ('Selenium', 'Selenium'), - ('Single-Board-Heater-System', 'Single-Board-Heater-System'), - ('Spoken-Tutorial-Technology', 'Spoken-Tutorial-Technology'), - ('Step', 'Step'), - ('Thunderbird', 'Thunderbird'), - ('Tux-Typing', 'Tux-Typing'), - ('What-is-Spoken-Tutorial', 'What-is-Spoken-Tutorial'), - ('Xfig', 'Xfig') -) +from spoken_auth.models import TutorialDetails, TutorialResources, FossCategory +from django.db.models import Q tutorials = ( - ("None", "Select a Tutorial"), + ("", "Select a Tutorial"), ) minutes = ( - ("None", "min"), + ("", "min"), ) seconds= ( - ("None", "sec"), + ("", "sec"), ) class NewQuestionForm(forms.Form): - #fix dirty code + category = forms.ChoiceField(choices = [('', 'Select a Category'),] + list(TutorialResources.objects.filter(Q(status = 1) | Q(status = 2), language__name = 'English').values('tutorial_detail__foss__foss').order_by('tutorial_detail__foss__foss').values_list('tutorial_detail__foss__foss', 'tutorial_detail__foss__foss').distinct()), widget=forms.Select(attrs = {}), required = True, error_messages = {'required':'State field is required.'}) def __init__(self, *args, **kwargs): category = kwargs.pop('category', None) super(NewQuestionForm, self).__init__(*args, **kwargs) - self.fields['category'] = forms.CharField(widget=forms.Select(choices=categories)) - self.fields['category'].initial = category - tutorial_choices = ( - ("None", "Select a Tutorial"), + ("", "Select a Tutorial"), ) - if (category, category) in categories: - tutorials = TutorialDetails.objects.using('spoken').filter(foss_category=category) + if not category and args and 'category' in args[0] and args[0]['category']: + category = args[0]['category'] + if FossCategory.objects.filter(foss=category).exists(): + self.fields['category'].initial = category + tutorials = TutorialDetails.objects.using('spoken').filter(foss__foss=category) for tutorial in tutorials: - tutorial_choices += ((tutorial.tutorial_name, tutorial.tutorial_name),) + tutorial_choices += ((tutorial.tutorial, tutorial.tutorial),) self.fields['tutorial'] = forms.CharField(widget=forms.Select(choices=tutorial_choices)) else: self.fields['tutorial'] = forms.CharField(widget=forms.Select(choices=tutorial_choices)) |