1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
from django import forms
from django.db.models import Q
from pgweb.core.models import Version
class _version_choices():
def __iter__(self):
yield ('-1', '** Select version')
q = Q(supported=True) | Q(testing__gt=0)
for v in Version.objects.filter(q):
for minor in range(v.latestminor, -1, -1):
if not v.testing or minor > 0:
# For beta/rc versions, there is no beta0, so exclude it
s = v.buildversionstring(minor)
yield (s, s)
yield ('Unsupported/Unknown', 'Unsupported/Unknown')
class SubmitBugForm(forms.Form):
name = forms.CharField(max_length=100, required=True)
email = forms.EmailField(max_length=100, required=True)
pgversion = forms.CharField(max_length=20, required=True,
label="PostgreSQL version")
os = forms.CharField(max_length=50, required=True,
label="Operating system")
shortdesc = forms.CharField(max_length=100, required=True,
label="Short description")
details = forms.CharField(required=True, widget=forms.Textarea)
def __init__(self, *args, **kwargs):
super(SubmitBugForm, self).__init__(*args, **kwargs)
self.fields['pgversion'].widget = forms.Select(choices=_version_choices())
def clean_pgversion(self):
if self.cleaned_data.get('pgversion') == '-1':
raise forms.ValidationError('You must select a version')
return self.cleaned_data.get('pgversion')
|