Skip to content

Commit 1328319

Browse files
committed
Revert "flatten sideloaded data"
This reverts commit c27ea68.
1 parent c27ea68 commit 1328319

File tree

1 file changed

+0
-42
lines changed

1 file changed

+0
-42
lines changed

drf_sideloading/mixins.py

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
from __future__ import unicode_literals
22

3-
from collections import defaultdict
4-
53
import six
64
import copy
75

@@ -17,7 +15,6 @@
1715

1816
class SideloadableRelationsMixin(object):
1917
query_param_name = "sideload"
20-
flat_param_name = "flat"
2118
sideloading_serializer_class = None
2219
_primary_field_name = None
2320
_sideloadable_fields = None
@@ -137,8 +134,6 @@ def list(self, request, *args, **kwargs):
137134
return super(SideloadableRelationsMixin, self).list(
138135
request, *args, **kwargs
139136
)
140-
# check if result needs to be flattened
141-
flatten = request.query_params.get(self.flat_param_name) in ['true', '1']
142137

143138
# After this `relations_to_sideload` is safe to use
144139
queryset = self.get_queryset()
@@ -159,8 +154,6 @@ def list(self, request, *args, **kwargs):
159154
+ list(self.relations_to_sideload),
160155
context={"request": request},
161156
)
162-
if flatten:
163-
return self.get_paginated_response(self.flatten_sideloaded_data(serialized_data=serializer.data))
164157
return self.get_paginated_response(serializer.data)
165158
else:
166159
sideloadable_page = self.get_sideloadable_page_from_queryset(queryset)
@@ -170,43 +163,8 @@ def list(self, request, *args, **kwargs):
170163
+ list(self.relations_to_sideload),
171164
context={"request": request},
172165
)
173-
if flatten:
174-
return Response(self.flatten_sideloaded_data(serialized_data=serializer.data))
175166
return Response(serializer.data)
176167

177-
def flatten_data(self, input_data, initial_key):
178-
out = {}
179-
180-
def flatten(data, key):
181-
if isinstance(data, dict):
182-
for dict_key, dict_value in data.items():
183-
flatten(data=dict_value, key="{}__{}".format(key, dict_key))
184-
elif isinstance(data, list):
185-
if any(isinstance(list_obj, (dict, list)) for list_obj in data):
186-
for i, list_obj in enumerate(data):
187-
flatten(data=list_obj, key="{}__{}".format(key, i))
188-
else:
189-
out[key] = data
190-
else:
191-
out[key] = data
192-
193-
flatten(input_data, initial_key)
194-
return out
195-
196-
def flatten_sideloaded_data(self, serialized_data):
197-
primary_objects = serialized_data.pop(self._primary_field_name)
198-
sideloaded_data = defaultdict(dict)
199-
relation_sources = {}
200-
for relation in self.relations_to_sideload:
201-
relation_sources[relation] = self.sideloading_serializer_class._declared_fields.get(relation).source
202-
for data in serialized_data[relation]:
203-
sideloaded_data[relation][data["url"]] = self.flatten_data(data, relation_sources[relation])
204-
205-
for object in primary_objects:
206-
for relation in self.relations_to_sideload:
207-
object.update(sideloaded_data[relation][object.pop(relation_sources[relation])])
208-
return primary_objects
209-
210168
def parse_query_param(self, sideload_parameter):
211169
"""
212170
Parse query param and take validated names

0 commit comments

Comments
 (0)