Refactor rest_api app and the method end points are registered. All apps API URL endpoints are now registered under the 'rest_api' namespace.

This commit is contained in:
Roberto Rosario
2015-08-06 02:50:14 -04:00
parent 1fa859a0c3
commit ea02172a82
8 changed files with 64 additions and 73 deletions

View File

@@ -7,72 +7,46 @@ from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.response import Response
from rest_framework.reverse import reverse
from .classes import APIEndPoint
from .serializers import APIAppSerializer, APISerializer, APIVersionSerializer
from .classes import APIVersion, APIEndPoint
from .serializers import APIAppSerializer, APIVersionSerializer
logger = logging.getLogger(__name__)
registered_version_0_endpoints = [
registered_version_1_endpoints = [
]
class APIBase(generics.GenericAPIView):
class APIBase(generics.RetrieveAPIView):
"""
Main entry point of the API.
"""
serializer_class = APISerializer
def get(self, request, format=None):
return Response([
{
'name': 'Version 0', 'url': reverse(
'api-version-0', request=request, format=format
)
}
])
class Version_0(generics.GenericAPIView):
"""
API version 0 entry points.
"""
serializer_class = APIVersionSerializer
def get(self, request, format=None):
return Response({
'apps': [
{
'name': unicode(endpoint),
'url': reverse('api-version-0-app',
args=[unicode(endpoint)], request=request,
format=format
)
} for endpoint in APIEndPoint.get_all()
],
})
def get_object(self):
return APIVersion()
class APIAppView(generics.GenericAPIView):
class APIVersionView(generics.ListAPIView):
"""
API version entry points.
"""
serializer_class = APIAppSerializer
def get_queryset(self):
return APIEndPoint.get_all()
class APIAppView(generics.RetrieveAPIView):
"""
Entry points of the selected app.
"""
serializer_class = APIAppSerializer
def get(self, request, app_name, format=None):
api_app = APIEndPoint.get(app_name)
return Response(
{
'name': api_app.name,
'url': reverse(
'api-version-0-app', args=[unicode(api_app.name)],
request=request, format=format
)
}
)
def get_object(self):
return APIEndPoint.get(self.kwargs['app_name'])
class BrowseableObtainAuthToken(ObtainAuthToken):