Skip to content

Commit 0edeafd

Browse files
authored
Merge pull request #56 from joehybird/master
Fixes for handling empty and multiple filter values.
2 parents fcffcf5 + 419c108 commit 0edeafd

File tree

5 files changed

+385
-25
lines changed

5 files changed

+385
-25
lines changed

demo/demoproject/settings.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
"""Django settings for django-generic-filters demo project."""
2+
from os import environ
23
from os.path import abspath, dirname, join
34

45

@@ -16,13 +17,16 @@
1617

1718
# Database.
1819
DATABASES = {
19-
'default': {
20-
'ENGINE': 'django.db.backends.sqlite3',
21-
'NAME': join(data_dir, 'db.sqlite'),
20+
"default": {
21+
"ENGINE": "django.db.backends.postgresql_psycopg2",
22+
"NAME": "test",
23+
"USER": environ.get("DJANGO_DB_USER", environ.get("USER")),
24+
'PASSWORD': environ.get("DJANGO_DB_PASSWORD", ""),
25+
'HOST': '',
26+
'PORT': '',
2227
}
2328
}
2429

25-
2630
# Template.
2731
TEMPLATES = [
2832
{

django_genericfilters/forms.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
and filtered queryset.
55
66
"""
7+
from six import string_types
8+
79
from django import forms
810
from django.utils.translation import ugettext_lazy as _
911

@@ -66,6 +68,13 @@ def get_order_by_choices(self):
6668
_("Don't forget to implements get_order_by_choices"))
6769

6870

71+
def clean_yesno(value):
72+
if isinstance(value, string_types):
73+
return {"yes": True, "no": False}.get(value, value)
74+
75+
return value
76+
77+
6978
class FilteredForm(OrderFormMixin, QueryFormMixin, forms.Form):
7079
"""
7180
FilteredForm is like a classic forms. But It use OrderFormMixin
@@ -74,8 +83,6 @@ class FilteredForm(OrderFormMixin, QueryFormMixin, forms.Form):
7483

7584
def clean(self):
7685
data = self.cleaned_data
77-
yesno = {"yes": True, "no": False}
78-
update = {key: yesno.get(value, value)
79-
for key, value in data.items()}
86+
update = {key: clean_yesno(value) for key, value in data.items()}
8087
data.update(update)
8188
return data

0 commit comments

Comments
 (0)