use numeric primary keys, but still use unique names as lookups in the API

This commit is contained in:
Laura Klünder 2016-10-11 16:33:12 +02:00
parent fcd0f8072b
commit 9658de72a2
14 changed files with 46 additions and 95 deletions

View file

@ -18,6 +18,8 @@ class HosterViewSet(ViewSet):
"""
Retrieve and interact with package hosters
"""
lookup_field = 'name'
def retrieve(self, request, pk=None):
if pk not in hosters:
raise Http404
@ -92,6 +94,8 @@ class SubmitTaskViewSet(ViewSet):
"""
Get hoster submit tasks
"""
lookup_field = 'id'
def retrieve(self, request, pk=None):
task = submit_edit_task.AsyncResult(task_id=pk)
try:

View file

@ -15,10 +15,6 @@ class Hoster(ABC):
self.name = name
self.base_url = base_url
@property
def pk(self):
return self.name
def get_packages(self):
"""
Get a Queryset of all packages that can be handled by this hoster

View file

@ -4,7 +4,7 @@ from rest_framework.reverse import reverse
class HosterSerializer(serializers.Serializer):
name = serializers.CharField()
url = serializers.HyperlinkedIdentityField(view_name='api:hoster-detail')
url = serializers.HyperlinkedIdentityField(view_name='api:hoster-detail', lookup_field='name')
state_url = serializers.SerializerMethodField()
auth_uri_url = serializers.SerializerMethodField()
submit_url = serializers.SerializerMethodField()
@ -22,7 +22,7 @@ class HosterSerializer(serializers.Serializer):
class TaskSerializer(serializers.Serializer):
id = serializers.CharField()
url = serializers.HyperlinkedIdentityField(view_name='api:hoster-detail', lookup_field='id', lookup_url_kwarg='pk')
url = serializers.HyperlinkedIdentityField(view_name='api:hoster-detail', lookup_field='id')
started = serializers.SerializerMethodField()
done = serializers.SerializerMethodField()
success = serializers.SerializerMethodField()