diff --git a/djadmin2/filters.py b/djadmin2/filters.py index b3362dd..69e440f 100644 --- a/djadmin2/filters.py +++ b/djadmin2/filters.py @@ -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 = '{3}' @@ -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) diff --git a/djadmin2/utils.py b/djadmin2/utils.py index 40e6aeb..9321270 100644 --- a/djadmin2/utils.py +++ b/djadmin2/utils.py @@ -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) \ No newline at end of file