remove recursive serialization in api and replace url root with list of all endpoints
This commit is contained in:
parent
9658de72a2
commit
4b97e3532f
6 changed files with 66 additions and 131 deletions
|
@ -20,18 +20,18 @@ class HosterViewSet(ViewSet):
|
|||
"""
|
||||
lookup_field = 'name'
|
||||
|
||||
def retrieve(self, request, pk=None):
|
||||
if pk not in hosters:
|
||||
def retrieve(self, request, name=None):
|
||||
if name not in hosters:
|
||||
raise Http404
|
||||
serializer = HosterSerializer(hosters[pk], context={'request': request})
|
||||
serializer = HosterSerializer(hosters[name], context={'request': request})
|
||||
return Response(serializer.data)
|
||||
|
||||
@detail_route(methods=['get'])
|
||||
def state(self, request, pk=None):
|
||||
if pk not in hosters:
|
||||
def state(self, request, name=None):
|
||||
if name not in hosters:
|
||||
raise Http404
|
||||
|
||||
hoster = hosters[pk]
|
||||
hoster = hosters[name]
|
||||
state = hoster.get_state(request)
|
||||
error = hoster.get_error(request) if state == 'logged_out' else None
|
||||
|
||||
|
@ -41,18 +41,18 @@ class HosterViewSet(ViewSet):
|
|||
)))
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
def auth_uri(self, request, pk=None):
|
||||
if pk not in hosters:
|
||||
def auth_uri(self, request, name=None):
|
||||
if name not in hosters:
|
||||
raise Http404
|
||||
return Response({
|
||||
'auth_uri': hosters[pk].get_auth_uri(request)
|
||||
'auth_uri': hosters[name].get_auth_uri(request)
|
||||
})
|
||||
|
||||
@detail_route(methods=['post'])
|
||||
def submit(self, request, pk=None):
|
||||
if pk not in hosters:
|
||||
def submit(self, request, name=None):
|
||||
if name not in hosters:
|
||||
raise Http404
|
||||
hoster = hosters[pk]
|
||||
hoster = hosters[name]
|
||||
|
||||
if 'data' not in request.POST:
|
||||
raise ValidationError('Missing POST parameter: data')
|
||||
|
@ -94,10 +94,10 @@ class SubmitTaskViewSet(ViewSet):
|
|||
"""
|
||||
Get hoster submit tasks
|
||||
"""
|
||||
lookup_field = 'id'
|
||||
lookup_field = 'id_'
|
||||
|
||||
def retrieve(self, request, pk=None):
|
||||
task = submit_edit_task.AsyncResult(task_id=pk)
|
||||
def retrieve(self, request, id_=None):
|
||||
task = submit_edit_task.AsyncResult(task_id=id_)
|
||||
try:
|
||||
task.ready()
|
||||
except:
|
||||
|
|
|
@ -1,28 +1,13 @@
|
|||
from rest_framework import serializers
|
||||
from rest_framework.reverse import reverse
|
||||
|
||||
|
||||
class HosterSerializer(serializers.Serializer):
|
||||
name = serializers.CharField()
|
||||
url = serializers.HyperlinkedIdentityField(view_name='api:hoster-detail', lookup_field='name')
|
||||
state_url = serializers.SerializerMethodField()
|
||||
auth_uri_url = serializers.SerializerMethodField()
|
||||
submit_url = serializers.SerializerMethodField()
|
||||
base_url = serializers.CharField()
|
||||
|
||||
def get_state_url(self, obj):
|
||||
return reverse('api:hoster-state', args=(obj.name, ), request=self.context.get('request'))
|
||||
|
||||
def get_auth_uri_url(self, obj):
|
||||
return reverse('api:hoster-auth-uri', args=(obj.name, ), request=self.context.get('request'))
|
||||
|
||||
def get_submit_url(self, obj):
|
||||
return reverse('api:hoster-submit', args=(obj.name, ), request=self.context.get('request'))
|
||||
|
||||
|
||||
class TaskSerializer(serializers.Serializer):
|
||||
id = serializers.CharField()
|
||||
url = serializers.HyperlinkedIdentityField(view_name='api:hoster-detail', lookup_field='id')
|
||||
started = serializers.SerializerMethodField()
|
||||
done = serializers.SerializerMethodField()
|
||||
success = serializers.SerializerMethodField()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue