class DiscussionViewSet(ModelViewSet):
serializer = DiscussionSerializer
queryset = Discussion.objects.all()
def vote(self, request, version, pk):
discussion = self.get_queryset().get()
vote_type = request.POST.get('vote_type')
if vote_type in ['up', 'down']:
discussion.vote(vote_type)
return self.get_serializer(discussion)
schema = AutoSchema(manual_fields=[ coreapi.Field( 'vote_type', required=True, location='body', schema=coreschema.String( title='vote_type', description='up or down') ) ])
WrappedAPIView.schema = getattr(func, 'schema', APIView.schema)
print 'WrappedAPIView.schema', WrappedAPIView.schema print 'getattr schema', getattr(func, 'schema', None)
def schema(view_inspector): print 'view_inspector', view_inspector def decorator(func): print 'in decorator' func.schema = view_inspector print 'schema is set!', func.schema return func return decorator
from rest_framework.schemas import AutoSchemafrom rest_framework.views import APIView
class CustomView(APIView): schema = AutoSchema(
manual_fields=[ coreapi.Field( 'vote_type', required=True, location='body', schema=coreschema.String( title='vote_type', description='up or down') ) ] )
def get(self, request, version): return Response('Test.')
def post(self, request, version): return Response('Test.')
url(r'^users/$', CustomView.as_view())