Files
postgres-web/pgweb/misc/forms.py
Magnus Hagander 7bf99809c8 Move fetching of version list for bug form to runtime
The fact that we tried to populate it already in the definition of the
form broke the ability to run "migrate" on a completely new system.

Issue reported by Andrew Dunstan
2019-06-14 14:32:17 +02:00

40 lines
1.5 KiB
Python

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')