1+ # Copyright The IETF Trust 2018-2019, All Rights Reserved
12import hashlib
23import json
34
1617def filter_from_queryargs (request ):
1718 #@debug.trace
1819 def fix_ranges (d ):
19- for k ,v in d .items ():
20+ for k ,v in list ( d .items () ):
2021 if v .startswith ("[" ) and v .endswith ("]" ):
2122 d [k ] = [ s for s in v [1 :- 1 ].split ("," ) if s ]
2223 elif "," in v :
@@ -27,9 +28,9 @@ def fix_ranges(d):
2728 def is_ascii (s ):
2829 return all (ord (c ) < 128 for c in s )
2930 # limit parameter keys to ascii.
30- params = dict ( (k ,v ) for (k ,v ) in request .GET .items () if is_ascii (k ) )
31- filter = fix_ranges (dict ([(k ,params [k ]) for k in params .keys () if not k .startswith ("not__" )]))
32- exclude = fix_ranges (dict ([(k [5 :],params [k ]) for k in params .keys () if k .startswith ("not__" )]))
31+ params = dict ( (k ,v ) for (k ,v ) in list ( request .GET .items () ) if is_ascii (k ) )
32+ filter = fix_ranges (dict ([(k ,params [k ]) for k in list ( params .keys () ) if not k .startswith ("not__" )]))
33+ exclude = fix_ranges (dict ([(k [5 :],params [k ]) for k in list ( params .keys () ) if k .startswith ("not__" )]))
3334 return filter , exclude
3435
3536def unique_obj_name (obj ):
@@ -147,7 +148,7 @@ def end_object(self, obj):
147148 if hasattr (field_value , "_meta" ):
148149 self ._current [name ] = self .expand_related (field_value , name )
149150 else :
150- self ._current [name ] = unicode (field_value )
151+ self ._current [name ] = str (field_value )
151152 except ObjectDoesNotExist :
152153 pass
153154 except AttributeError :
@@ -224,7 +225,7 @@ class JsonExportMixin(object):
224225
225226 def json_view (self , request , filter = {}, expand = []):
226227 qfilter , exclude = filter_from_queryargs (request )
227- for k in qfilter .keys ():
228+ for k in list ( qfilter .keys () ):
228229 if k .startswith ("_" ):
229230 del qfilter [k ]
230231 qfilter .update (filter )
@@ -244,15 +245,15 @@ def json_view(self, request, filter={}, expand=[]):
244245 try :
245246 qs = self .get_queryset ().filter (** filter ).exclude (** exclude )
246247 except (FieldError , ValueError ) as e :
247- return HttpResponse (json .dumps ({u "error" : str (e )}, sort_keys = True , indent = 3 ), content_type = content_type )
248+ return HttpResponse (json .dumps ({"error" : str (e )}, sort_keys = True , indent = 3 ), content_type = content_type )
248249 try :
249250 if expand :
250251 qs = qs .select_related ()
251252 serializer = AdminJsonSerializer ()
252253 items = [(getattr (o , key ), serializer .serialize ([o ], expand = expand , query_info = query_info ) ) for o in qs ]
253254 qd = dict ( ( k , json .loads (v )[0 ] ) for k ,v in items )
254255 except (FieldError , ValueError ) as e :
255- return HttpResponse (json .dumps ({u "error" : str (e )}, sort_keys = True , indent = 3 ), content_type = content_type )
256+ return HttpResponse (json .dumps ({"error" : str (e )}, sort_keys = True , indent = 3 ), content_type = content_type )
256257 text = json .dumps ({smart_text (self .model ._meta ): qd }, sort_keys = True , indent = 3 )
257258 return HttpResponse (text , content_type = content_type )
258259
0 commit comments