fix for type in filters.py

This commit is contained in:
Kamil Gałuszka 2014-09-28 19:04:23 +02:00 committed by montiniz
parent 6144278a9e
commit e74c603bda
2 changed files with 15 additions and 5 deletions

View file

@ -9,13 +9,15 @@ from itertools import chain
from django import forms
from django.forms.util import flatatt
from django.utils.html import format_html
from django.utils.encoding import force_text
from django.utils.encoding import force_text, force_bytes
from django.utils.safestring import mark_safe
from django.forms import widgets as django_widgets
from django.utils.translation import ugettext_lazy
import django_filters
from .utils import type_str
LINK_TEMPLATE = '<a href=?{0}={1} {2}>{3}</a>'
@ -88,15 +90,16 @@ def build_list_filter(request, model_admin, queryset):
filterset_dict[field_filter.name] = field_filter
fields = filterset_dict.keys()
filterset_dict['Meta'] = type(
b'Meta',
type_str('Meta'),
(),
{
'model': queryset.model,
'fields': fields,
},
)
return type(
b'%sFilterSet' % queryset.model.__name__,
type_str('%sFilterSet' % queryset.model.__name__),
(django_filters.FilterSet, ),
filterset_dict,
)(request.GET, queryset=queryset)
@ -119,7 +122,7 @@ def build_date_filter(request, model_admin, queryset):
}
return type(
b'%sDateFilterSet' % queryset.model.__name__,
type_str('%sDateFilterSet' % queryset.model.__name__),
(django_filters.FilterSet,),
filterset_dict,
)(request.GET, queryset=queryset)

View file

@ -6,7 +6,7 @@ from django.db.models import ManyToManyRel
from django.db.models.deletion import Collector
from django.db.models.related import RelatedObject
from django.utils import six
from django.utils.encoding import force_bytes, force_text
def lookup_needs_distinct(opts, lookup_path):
"""
@ -184,3 +184,10 @@ def quote(s):
if c in """:/_#?;@&=+$,"<>%\\""":
res[i] = '_%02X' % ord(c)
return ''.join(res)
def type_str(text):
if six.PY2:
return force_bytes(text)
else:
return force_text(text)