nicer indented json encoding now also in rest api
This commit is contained in:
parent
55fc17e872
commit
84bb9ad73a
10 changed files with 62 additions and 40 deletions
|
@ -0,0 +1,15 @@
|
|||
from rest_framework.renderers import JSONRenderer
|
||||
from ..mapdata.utils import json_encoder_reindent
|
||||
from functools import wraps
|
||||
|
||||
orig_render = JSONRenderer.render
|
||||
|
||||
|
||||
@wraps(JSONRenderer.render)
|
||||
def nicer_renderer(self, data, accepted_media_type=None, renderer_context=None):
|
||||
if self.get_indent(accepted_media_type, renderer_context) is None:
|
||||
return orig_render(self, data, accepted_media_type, renderer_context)
|
||||
return json_encoder_reindent(lambda d: orig_render(self, d, accepted_media_type, renderer_context), data)
|
||||
|
||||
# Monkey patch for nicer indentation in the django rest framework
|
||||
JSONRenderer.render = nicer_renderer
|
|
@ -1,5 +1,6 @@
|
|||
from django.conf import settings
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from rest_framework.exceptions import PermissionDenied
|
||||
from rest_framework.permissions import BasePermission
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from django.conf import settings
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from ..editor.hosters import get_hoster_for_package
|
||||
|
@ -6,24 +7,16 @@ from ..mapdata.models import Level, Package, Source
|
|||
from .permissions import can_access_package
|
||||
|
||||
|
||||
class BoundsMixin:
|
||||
def to_representation(self, obj):
|
||||
result = super().to_representation(obj)
|
||||
if obj.bottom is not None:
|
||||
result['bounds'] = ((obj.bottom, obj.left), (obj.top, obj.right))
|
||||
return result
|
||||
|
||||
|
||||
class LevelSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Level
|
||||
fields = ('name', 'altitude', 'package')
|
||||
|
||||
|
||||
class PackageSerializer(BoundsMixin, serializers.ModelSerializer):
|
||||
class PackageSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Package
|
||||
fields = ('name', 'home_repo', 'depends')
|
||||
fields = ('name', 'home_repo', 'depends', 'bounds')
|
||||
|
||||
def to_representation(self, obj):
|
||||
result = super().to_representation(obj)
|
||||
|
@ -36,10 +29,10 @@ class PackageSerializer(BoundsMixin, serializers.ModelSerializer):
|
|||
return result
|
||||
|
||||
|
||||
class SourceSerializer(BoundsMixin, serializers.ModelSerializer):
|
||||
class SourceSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Source
|
||||
fields = ('name', 'package')
|
||||
fields = ('name', 'package', 'bounds')
|
||||
|
||||
|
||||
class HosterSerializer(serializers.Serializer):
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from django.conf.urls import include, url
|
||||
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
from .views import editor as editor_views
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
from django.http import Http404
|
||||
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.viewsets import ViewSet
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import os
|
|||
from django.conf import settings
|
||||
from django.core.files import File
|
||||
from django.http import HttpResponse
|
||||
|
||||
from rest_framework.decorators import detail_route
|
||||
from rest_framework.viewsets import ReadOnlyModelViewSet
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue