mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 20:10:10 +03:00
Merge ef3375355c
into 878fe895dc
This commit is contained in:
commit
326261d203
|
@ -3,6 +3,9 @@ from rest_framework.authtoken.models import Token
|
||||||
from rest_framework.authtoken.serializers import AuthTokenSerializer
|
from rest_framework.authtoken.serializers import AuthTokenSerializer
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView
|
||||||
|
from rest_framework.schemas import ManualSchema
|
||||||
|
import coreapi
|
||||||
|
import coreschema
|
||||||
|
|
||||||
|
|
||||||
class ObtainAuthToken(APIView):
|
class ObtainAuthToken(APIView):
|
||||||
|
@ -11,6 +14,29 @@ class ObtainAuthToken(APIView):
|
||||||
parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
|
parser_classes = (parsers.FormParser, parsers.MultiPartParser, parsers.JSONParser,)
|
||||||
renderer_classes = (renderers.JSONRenderer,)
|
renderer_classes = (renderers.JSONRenderer,)
|
||||||
serializer_class = AuthTokenSerializer
|
serializer_class = AuthTokenSerializer
|
||||||
|
schema = ManualSchema(
|
||||||
|
fields=[
|
||||||
|
coreapi.Field(
|
||||||
|
name="username",
|
||||||
|
required=True,
|
||||||
|
location='form',
|
||||||
|
schema=coreschema.String(
|
||||||
|
title="Username",
|
||||||
|
description="Valid username for authentication",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
coreapi.Field(
|
||||||
|
name="password",
|
||||||
|
required=True,
|
||||||
|
location='form',
|
||||||
|
schema=coreschema.String(
|
||||||
|
title="Password",
|
||||||
|
description="Valid password for authentication",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
encoding="application/json",
|
||||||
|
)
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
serializer = self.serializer_class(data=request.data,
|
serializer = self.serializer_class(data=request.data,
|
||||||
|
@ -20,5 +46,4 @@ class ObtainAuthToken(APIView):
|
||||||
token, created = Token.objects.get_or_create(user=user)
|
token, created = Token.objects.get_or_create(user=user)
|
||||||
return Response({'token': token.key})
|
return Response({'token': token.key})
|
||||||
|
|
||||||
|
|
||||||
obtain_auth_token = ObtainAuthToken.as_view()
|
obtain_auth_token = ObtainAuthToken.as_view()
|
||||||
|
|
|
@ -445,7 +445,7 @@ class ManualSchema(ViewInspector):
|
||||||
Allows providing a list of coreapi.Fields,
|
Allows providing a list of coreapi.Fields,
|
||||||
plus an optional description.
|
plus an optional description.
|
||||||
"""
|
"""
|
||||||
def __init__(self, fields, description=''):
|
def __init__(self, fields, description='', encoding=None):
|
||||||
"""
|
"""
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
|
@ -455,6 +455,7 @@ class ManualSchema(ViewInspector):
|
||||||
assert all(isinstance(f, coreapi.Field) for f in fields), "`fields` must be a list of coreapi.Field instances"
|
assert all(isinstance(f, coreapi.Field) for f in fields), "`fields` must be a list of coreapi.Field instances"
|
||||||
self._fields = fields
|
self._fields = fields
|
||||||
self._description = description
|
self._description = description
|
||||||
|
self._encoding = encoding
|
||||||
|
|
||||||
def get_link(self, path, method, base_url):
|
def get_link(self, path, method, base_url):
|
||||||
|
|
||||||
|
@ -464,7 +465,7 @@ class ManualSchema(ViewInspector):
|
||||||
return coreapi.Link(
|
return coreapi.Link(
|
||||||
url=urlparse.urljoin(base_url, path),
|
url=urlparse.urljoin(base_url, path),
|
||||||
action=method.lower(),
|
action=method.lower(),
|
||||||
encoding=None,
|
encoding=self._encoding,
|
||||||
fields=self._fields,
|
fields=self._fields,
|
||||||
description=self._description
|
description=self._description
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user