refactor api views inter their respecting apps

This commit is contained in:
Laura Klünder 2016-09-22 12:58:21 +02:00
parent b69dff708e
commit 02cafee6be
12 changed files with 112 additions and 117 deletions

21
src/c3nav/editor/api.py Normal file
View file

@ -0,0 +1,21 @@
from django.http import Http404
from rest_framework.response import Response
from rest_framework.viewsets import ViewSet
from .hosters import hosters
from .serializers import HosterSerializer
class HosterViewSet(ViewSet):
"""
Get Package Hosters
"""
def list(self, request, version=None):
serializer = HosterSerializer(hosters.values(), many=True, context={'request': request})
return Response(serializer.data)
def retrieve(self, request, pk=None, version=None):
if pk not in hosters:
raise Http404
serializer = HosterSerializer(hosters[pk], context={'request': request})
return Response(serializer.data)

View file

@ -0,0 +1,14 @@
from rest_framework import serializers
class HosterSerializer(serializers.Serializer):
name = serializers.CharField()
base_url = serializers.CharField()
packages = serializers.SerializerMethodField()
signed_in = serializers.SerializerMethodField()
def get_packages(self, obj):
return tuple(obj.get_packages().values_list('name', flat=True))
def get_signed_in(self, obj):
return obj.is_access_granted(self.context['request']) if 'request' in self.context else None