refactor api views inter their respecting apps
This commit is contained in:
parent
b69dff708e
commit
02cafee6be
12 changed files with 112 additions and 117 deletions
21
src/c3nav/editor/api.py
Normal file
21
src/c3nav/editor/api.py
Normal 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)
|
14
src/c3nav/editor/serializers.py
Normal file
14
src/c3nav/editor/serializers.py
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue