99from django .core .exceptions import ObjectDoesNotExist , FieldError
1010from django .core .serializers .json import Serializer
1111from django .http import HttpResponse
12- from django .utils .encoding import smart_text
12+ from django .utils .encoding import smart_str
1313from django .db .models import Field
14- from django .db .models .query import QuerySet
1514from django .db .models .signals import post_save , post_delete , m2m_changed
1615
16+ from django_stubs_ext import QuerySetAny
17+
1718import debug # pyflakes:ignore
1819
1920
@@ -121,7 +122,7 @@ def end_object(self, obj):
121122 for name in expansions :
122123 try :
123124 field = getattr (obj , name )
124- #self._current["_"+name] = smart_text (field)
125+ #self._current["_"+name] = smart_str (field)
125126 if not isinstance (field , Field ):
126127 options = self .options .copy ()
127128 options ["expand" ] = [ v [len (name )+ 2 :] for v in options ["expand" ] if v .startswith (name + "__" ) ]
@@ -145,7 +146,7 @@ def end_object(self, obj):
145146 field_value = None
146147 else :
147148 field_value = field
148- if isinstance (field_value , QuerySet ) or isinstance (field_value , list ):
149+ if isinstance (field_value , QuerySetAny ) or isinstance (field_value , list ):
149150 self ._current [name ] = dict ([ (rel .pk , self .expand_related (rel , name )) for rel in field_value ])
150151 else :
151152 if hasattr (field_value , "_meta" ):
@@ -188,10 +189,10 @@ def handle_fk_field(self, obj, field):
188189 related = related .natural_key ()
189190 elif field .remote_field .field_name == related ._meta .pk .name :
190191 # Related to remote object via primary key
191- related = smart_text (related ._get_pk_val (), strings_only = True )
192+ related = smart_str (related ._get_pk_val (), strings_only = True )
192193 else :
193194 # Related to remote object via other field
194- related = smart_text (getattr (related , field .remote_field .field_name ), strings_only = True )
195+ related = smart_str (getattr (related , field .remote_field .field_name ), strings_only = True )
195196 self ._current [field .name ] = related
196197
197198 def handle_m2m_field (self , obj , field ):
@@ -201,7 +202,7 @@ def handle_m2m_field(self, obj, field):
201202 elif self .use_natural_keys and hasattr (field .remote_field .to , 'natural_key' ):
202203 m2m_value = lambda value : value .natural_key ()
203204 else :
204- m2m_value = lambda value : smart_text (value ._get_pk_val (), strings_only = True )
205+ m2m_value = lambda value : smart_str (value ._get_pk_val (), strings_only = True )
205206 self ._current [field .name ] = [m2m_value (related )
206207 for related in getattr (obj , field .name ).iterator ()]
207208
@@ -221,7 +222,7 @@ class JsonExportMixin(object):
221222# obj = None
222223#
223224# if obj is None:
224- # raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text (self.model._meta.verbose_name), 'key': escape(object_id)})
225+ # raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_str (self.model._meta.verbose_name), 'key': escape(object_id)})
225226#
226227# content_type = 'application/json'
227228# return HttpResponse(serialize([ obj ], sort_keys=True, indent=3)[2:-2], content_type=content_type)
@@ -264,6 +265,6 @@ def json_view(self, request, filter=None, expand=None):
264265 qd = dict ( ( k , json .loads (v )[0 ] ) for k ,v in items )
265266 except (FieldError , ValueError ) as e :
266267 return HttpResponse (json .dumps ({"error" : str (e )}, sort_keys = True , indent = 3 ), content_type = content_type )
267- text = json .dumps ({smart_text (self .model ._meta ): qd }, sort_keys = True , indent = 3 )
268+ text = json .dumps ({smart_str (self .model ._meta ): qd }, sort_keys = True , indent = 3 )
268269 return HttpResponse (text , content_type = content_type )
269270
0 commit comments