diff options
author | Magnus Hagander | 2013-07-19 16:48:37 +0000 |
---|---|---|
committer | Magnus Hagander | 2013-07-19 16:48:37 +0000 |
commit | b6f1afa4f3ff72b737c510a23dac2b7fa04ace05 (patch) | |
tree | d9861054b9f754dd248cbe32328b858d5f0b3681 /pgcommitfest/commitfest/forms.py | |
parent | cd605547cc679bba7fdb2d8d5d2639c5a152be95 (diff) |
Add basic filtering support
Diffstat (limited to 'pgcommitfest/commitfest/forms.py')
-rw-r--r-- | pgcommitfest/commitfest/forms.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/pgcommitfest/commitfest/forms.py b/pgcommitfest/commitfest/forms.py index 9838ce6..8f2e33c 100644 --- a/pgcommitfest/commitfest/forms.py +++ b/pgcommitfest/commitfest/forms.py @@ -1,13 +1,35 @@ from django import forms from django.forms import ValidationError +from django.db.models import Q +from django.contrib.auth.models import User from selectable.forms.widgets import AutoCompleteSelectMultipleWidget -from models import Patch, MailThread +from models import Patch, MailThread, PatchOnCommitFest from lookups import UserLookup from widgets import ThreadPickWidget from ajax import _archivesAPI +class CommitFestFilterForm(forms.Form): + text = forms.CharField(max_length=50, required=False) + status = forms.ChoiceField(required=False) + author = forms.ChoiceField(required=False) + reviewer = forms.ChoiceField(required=False) + + def __init__(self, cf, *args, **kwargs): + super(CommitFestFilterForm, self).__init__(*args, **kwargs) + + c = [(-1, '* All')] + list(PatchOnCommitFest._STATUS_CHOICES) + self.fields['status'] = forms.ChoiceField(choices=c, required=False) + + q = Q(patch_author__commitfests=cf) | Q(patch_reviewer__commitfests=cf) + userchoices = [(-1, '* All'), (-2, '* None'), ] + [(u.id, '%s %s (%s)' % (u.first_name, u.last_name, u.username)) for u in User.objects.filter(q).distinct()] + self.fields['author'] = forms.ChoiceField(choices=userchoices, required=False) + self.fields['reviewer'] = forms.ChoiceField(choices=userchoices, required=False) + + for f in ('status', 'author', 'reviewer',): + self.fields[f].widget.attrs = {'class': 'input-medium'} + class PatchForm(forms.ModelForm): class Meta: model = Patch |