From 2e0a5e54c846dacda3272f4338187284159d3dce Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Sun, 16 Oct 2022 13:34:04 +0600 Subject: [PATCH 1/3] try using python dict instead of ordered dict in metadata --- rest_framework_json_api/metadata.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/rest_framework_json_api/metadata.py b/rest_framework_json_api/metadata.py index 1906de71..9f60b0b6 100644 --- a/rest_framework_json_api/metadata.py +++ b/rest_framework_json_api/metadata.py @@ -1,5 +1,3 @@ -from collections import OrderedDict - from django.db.models.fields import related from django.utils.encoding import force_str from rest_framework import serializers @@ -65,7 +63,7 @@ class JSONAPIMetadata(SimpleMetadata): ) def determine_metadata(self, request, view): - metadata = OrderedDict() + metadata = {} metadata["name"] = view.get_view_name() metadata["description"] = view.get_view_description() metadata["renders"] = [ @@ -92,19 +90,19 @@ def get_serializer_info(self, serializer): # Remove the URL field if present serializer.fields.pop(api_settings.URL_FIELD_NAME, None) - return OrderedDict( + return { [ (format_field_name(field_name), self.get_field_info(field)) for field_name, field in serializer.fields.items() ] - ) + } def get_field_info(self, field): """ Given an instance of a serializer field, return a dictionary of metadata about it. """ - field_info = OrderedDict() + field_info = {} serializer = field.parent if isinstance(field, serializers.ManyRelatedField): From 6a74ec78bb591e9f52d6220c1461a3583bf30b42 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Sun, 16 Oct 2022 13:36:43 +0600 Subject: [PATCH 2/3] try using python dict instead of ordered dict in pagination field --- rest_framework_json_api/pagination.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/rest_framework_json_api/pagination.py b/rest_framework_json_api/pagination.py index 6cbd744c..3c37a20d 100644 --- a/rest_framework_json_api/pagination.py +++ b/rest_framework_json_api/pagination.py @@ -1,7 +1,6 @@ """ Pagination fields """ -from collections import OrderedDict from rest_framework.pagination import LimitOffsetPagination, PageNumberPagination from rest_framework.utils.urls import remove_query_param, replace_query_param @@ -36,22 +35,22 @@ def get_paginated_response(self, data): { "results": data, "meta": { - "pagination": OrderedDict( + "pagination": { [ ("page", self.page.number), ("pages", self.page.paginator.num_pages), ("count", self.page.paginator.count), ] - ) + } }, - "links": OrderedDict( + "links": { [ ("first", self.build_link(1)), ("last", self.build_link(self.page.paginator.num_pages)), ("next", self.build_link(next)), ("prev", self.build_link(previous)), ] - ), + }, } ) @@ -97,21 +96,21 @@ def get_paginated_response(self, data): { "results": data, "meta": { - "pagination": OrderedDict( + "pagination": { [ ("count", self.count), ("limit", self.limit), ("offset", self.offset), ] - ) + } }, - "links": OrderedDict( + "links": { [ ("first", self.get_first_link()), ("last", self.get_last_link()), ("next", self.get_next_link()), ("prev", self.get_previous_link()), ] - ), + }, } ) From a830b6fac85136a6cb4ab92477e11946d7aa78e5 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Sun, 16 Oct 2022 13:44:57 +0600 Subject: [PATCH 3/3] try using python dict instead of ordered dict in relations --- rest_framework_json_api/relations.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/rest_framework_json_api/relations.py b/rest_framework_json_api/relations.py index 6cca15c8..a521c68a 100644 --- a/rest_framework_json_api/relations.py +++ b/rest_framework_json_api/relations.py @@ -1,5 +1,4 @@ import json -from collections import OrderedDict import inflection from django.core.exceptions import ImproperlyConfigured @@ -104,7 +103,7 @@ def get_url(self, name, view_name, kwargs, request): def get_links(self, obj=None, lookup_field="pk"): request = self.context.get("request", None) view = self.context.get("view", None) - return_data = OrderedDict() + return_data = {} kwargs = { lookup_field: getattr(obj, lookup_field) @@ -257,7 +256,7 @@ def to_representation(self, value): if resource_type is None or not self._skip_polymorphic_optimization: resource_type = get_resource_type_from_instance(value) - return OrderedDict([("type", resource_type), ("id", str(pk))]) + return {[("type", resource_type), ("id", str(pk))]} def get_resource_type_from_included_serializer(self): """ @@ -301,12 +300,12 @@ def get_choices(self, cutoff=None): if cutoff is not None: queryset = queryset[:cutoff] - return OrderedDict( + return { [ (json.dumps(self.to_representation(item)), self.display_value(item)) for item in queryset ] - ) + } class PolymorphicResourceRelatedField(ResourceRelatedField):