<gh_stars>0
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Create your views here.

# from django.http import HttpResponse, JsonResponse
# from django.views.decorators.csrf import csrf_exempt
# from rest_framework import status
# from rest_framework.decorators import api_view, permission_classes
# from rest_framework import permissions
# # from rest_framework.renderers import JSONRenderer
# # from rest_framework.parsers import JSONParser
# from rest_framework.response import Response
# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer


# # @csrf_exempt
# @api_view(['GET', 'POST'])
# @permission_classes((permissions.AllowAny,))
# def snippet_list(request, format=None):
#     """
#     List all code snippets, or create a new snippet.
#     """
#     if request.method == 'GET':
#         snippets = Snippet.objects.all()
#         serializer = SnippetSerializer(snippets, many=True)
#         # return JsonResponse(serializer.data, safe=False)
#         return Response(serializer.data)

#     elif request.method == 'POST':
#         # data = JSONParser().parse(request)
#         serializer = SnippetSerializer(data=request.data)
#         if serializer.is_valid():
#             serializer.save()
#             # return JsonResponse(serializer.data, status=201)
#             return Response(serializer.data, status = status.HTTP_201_CREATED)
#         return Response(serializer.errors, status= status.HTTP_400_BAD_REQUEST)


# # @csrf_exempt
# @api_view(['GET', 'PUT', 'DELETE'])
# @permission_classes((permissions.AllowAny,))
# def snippet_detail(request, pk, format=None):
#     """
#     Retrieve, updata or delete a code snippet.
#     """
#     try:
#         snippet = Snippet.objects.get(pk=pk)
#     except Snippet.DoesNotExist:
#         # return HttpResponse(status=404)
#         return Response(status = status.HTTP_404_NOT_FOUND)

#     if request.method == 'GET':
#         serializer = SnippetSerializer(snippet)
#         # return JsonResponse(serializer.data)
#         return Response(serializer.data)

#     elif request.method == 'PUT':
#         # data = JSONParser().parse(request)
#         serializer = SnippetSerializer(snippet, data = request.data)
#         if serializer.is_valid():
#             serializer.save()
#             # return JsonResponse(serializer.data)
#             return Response(serializer.data)
#         # return JsonResponse(serializer.errors, status = 400)
#         return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)

#     elif request.method == 'DELETE':
#         snippet.delete()
#         # return HttpResponse(status=204)
#         return Response(status=status.HTTP_204_NO_CONTENT)

################## Functional view end ###########################################
##################################################################################

############## Class based views #############

# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer
# from django.http import Http404
# from rest_framework.views import APIView
# from rest_framework.response import Response
# from rest_framework import status

# class SnippetList(APIView):
#     """
#     List all snippets, or create a new snippet.
#     """
#     def get(self, request, format=None):
#         snippets = Snippet.objects.all()
#         serializer = SnippetSerializer(snippets, many=True)
#         return Response(serializer.data)

#     def post(self, request, format=None):
#         serializer = SnippetSerializer(data=request.data)
#         if serializer.is_valid():
#             serializer.save()
#             return Response(serializer.data, status=status.HTTP_201_CREATED)
#         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


# class SnippetDetail(APIView):
#     """
#     Retrueve, update or delete a snippet instance.
#     """
#     def get_object(self, pk):
#         try:
#             return Snippet.objects.get(pk=pk)
#         except Snippet.DoesNotExist:
#             raise Http404

#     def get(self, request, pk, format=None):
#         snippet = self.get_object(pk)
#         serializer = SnippetSerializer(snippet)
#         return Response(serializer.data)

#     def put(self, request, pk, format=None):
#         snippet = self.get_object(pk)
#         serializer = SnippetSerializer(snippet, data=request.data)
#         if serializer.is_valid():
#             serializer.save()
#             return Response(serializer.data)
#         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


#     def delete(self, request, pk, format=None):
#         snippet = self.get_object(pk)
#         snippet.delete()
#         return Response(status=status.HTTP_204_NO_CONTENT)

################## Class based views end ################
#############################################################

################ Mixin in class based views ################

# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer
# from rest_framework import mixins
# from rest_framework import generics

# class SnippetList(mixins.ListModelMixin,
#                     mixins.CreateModelMixin,
#                     generics.GenericAPIView):
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer

#     def get(self, request, *args, **kwargs):
#         return self.list(request, *args, **kwargs)

#     def post(self, request, *args, **kwargs):
#         return self.create(request, *args, **kwargs)


# class SnippetDetail(mixins.RetrieveModelMixin,
#                     mixins.UpdateModelMixin,
#                     mixins.DestroyModelMixin,
#                     generics.GenericAPIView):
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer

#     def get(self, request, *args, **kwargs):
#         return self.retrieve(request, *args, **kwargs)

#     def put(self, request, *args, **kwargs):
#         return self.update(request, *args, **kwargs)

#     def delete(self, request, *args, **kwargs):
#         return self.destroy(request, *args, **kwargs)

####################End mixin on class based views ##########
##############################################################

################### Generic class based views ################

# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer
# from rest_framework import generics
# from rest_framework import permissions
# from snippets.permissions import IsOwnerOrReadOnly

# class SnippetList(generics.ListCreateAPIView):
#     permission_classes = (permissions.IsAuthenticatedOrReadOnly,
#                             IsOwnerOrReadOnly)
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer
#     def perform_create(self, serializer):
#         serializer.save(owner=self.request.user)


# class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer


# from django.contrib.auth.models import User
# from snippets.serializers import UserSerializer

# class UserList(generics.ListAPIView):
#     queryset = User.objects.all()
#     serializer_class = UserSerializer

# class UserDetail(generics.RetrieveAPIView):
#     queryset = User.objects.all()
#     serializer_class = UserSerializer





# from rest_framework.decorators import api_view
# from rest_framework.response import Response
# from rest_framework.reverse import reverse


# @api_view(['GET'])
# def api_root(request, format=None):
#     return Response({
#         'users': reverse('user-list', request=request, format=format),
#         'snippets': reverse('snippet-list', request=request, format=format)
#     })

# from rest_framework import renderers
# # from rest_framework.response import Response

# class SnippetHighlight (generics.GenericAPIView):
#     queryset = Snippet.objects.all()
#     renderer_classes = (renderers.StaticHTMLRenderer,)

#     def get(self, request, *args, **kwargs):
#         snippet = self.get_object()
#         return Response(snippet.highlighted)

#################### generic class based views authentication, ##########
#################### relationships and hyperlinked API end ##############


from rest_framework import viewsets

from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework import permissions
from snippets.permissions import IsOwnerOrReadOnly
from django.contrib.auth.models import User
from snippets.serializers import UserSerializer

class UserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    This viewset automatically provides `list` and `detail` actions.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

from rest_framework.decorators import detail_route
from rest_framework import renderers
from rest_framework.response import Response

class SnippetViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.

    Additionally we also provide an extra `highligh` action.
    """
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                            IsOwnerOrReadOnly,)

    @detail_route(renderer_classes=[renderers.StaticHTMLRenderer])
    def highlight(self, request, *args, **kwargs):
        snippet = self.get_object()
        return Response(snippet.highlighted)

    def perform_create(self,serializer):
        serializer.save(owner=self.request.user)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# Create your views here.

# from django.http import HttpResponse, JsonResponse
# from django.views.decorators.csrf import csrf_exempt
# from rest_framework import status
# from rest_framework.decorators import api_view, permission_classes
# from rest_framework import permissions
# # from rest_framework.renderers import JSONRenderer
# # from rest_framework.parsers import JSONParser
# from rest_framework.response import Response
# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer


# # @csrf_exempt
# @api_view(['GET', 'POST'])
# @permission_classes((permissions.AllowAny,))
# def snippet_list(request, format=None):
#     """
#     List all code snippets, or create a new snippet.
#     """
#     if request.method == 'GET':
#         snippets = Snippet.objects.all()
#         serializer = SnippetSerializer(snippets, many=True)
#         # return JsonResponse(serializer.data, safe=False)
#         return Response(serializer.data)

#     elif request.method == 'POST':
#         # data = JSONParser().parse(request)
#         serializer = SnippetSerializer(data=request.data)
#         if serializer.is_valid():
#             serializer.save()
#             # return JsonResponse(serializer.data, status=201)
#             return Response(serializer.data, status = status.HTTP_201_CREATED)
#         return Response(serializer.errors, status= status.HTTP_400_BAD_REQUEST)


# # @csrf_exempt
# @api_view(['GET', 'PUT', 'DELETE'])
# @permission_classes((permissions.AllowAny,))
# def snippet_detail(request, pk, format=None):
#     """
#     Retrieve, updata or delete a code snippet.
#     """
#     try:
#         snippet = Snippet.objects.get(pk=pk)
#     except Snippet.DoesNotExist:
#         # return HttpResponse(status=404)
#         return Response(status = status.HTTP_404_NOT_FOUND)

#     if request.method == 'GET':
#         serializer = SnippetSerializer(snippet)
#         # return JsonResponse(serializer.data)
#         return Response(serializer.data)

#     elif request.method == 'PUT':
#         # data = JSONParser().parse(request)
#         serializer = SnippetSerializer(snippet, data = request.data)
#         if serializer.is_valid():
#             serializer.save()
#             # return JsonResponse(serializer.data)
#             return Response(serializer.data)
#         # return JsonResponse(serializer.errors, status = 400)
#         return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST)

#     elif request.method == 'DELETE':
#         snippet.delete()
#         # return HttpResponse(status=204)
#         return Response(status=status.HTTP_204_NO_CONTENT)

################## Functional view end ###########################################
##################################################################################

############## Class based views #############

# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer
# from django.http import Http404
# from rest_framework.views import APIView
# from rest_framework.response import Response
# from rest_framework import status

# class SnippetList(APIView):
#     """
#     List all snippets, or create a new snippet.
#     """
#     def get(self, request, format=None):
#         snippets = Snippet.objects.all()
#         serializer = SnippetSerializer(snippets, many=True)
#         return Response(serializer.data)

#     def post(self, request, format=None):
#         serializer = SnippetSerializer(data=request.data)
#         if serializer.is_valid():
#             serializer.save()
#             return Response(serializer.data, status=status.HTTP_201_CREATED)
#         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


# class SnippetDetail(APIView):
#     """
#     Retrueve, update or delete a snippet instance.
#     """
#     def get_object(self, pk):
#         try:
#             return Snippet.objects.get(pk=pk)
#         except Snippet.DoesNotExist:
#             raise Http404

#     def get(self, request, pk, format=None):
#         snippet = self.get_object(pk)
#         serializer = SnippetSerializer(snippet)
#         return Response(serializer.data)

#     def put(self, request, pk, format=None):
#         snippet = self.get_object(pk)
#         serializer = SnippetSerializer(snippet, data=request.data)
#         if serializer.is_valid():
#             serializer.save()
#             return Response(serializer.data)
#         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)


#     def delete(self, request, pk, format=None):
#         snippet = self.get_object(pk)
#         snippet.delete()
#         return Response(status=status.HTTP_204_NO_CONTENT)

################## Class based views end ################
#############################################################

################ Mixin in class based views ################

# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer
# from rest_framework import mixins
# from rest_framework import generics

# class SnippetList(mixins.ListModelMixin,
#                     mixins.CreateModelMixin,
#                     generics.GenericAPIView):
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer

#     def get(self, request, *args, **kwargs):
#         return self.list(request, *args, **kwargs)

#     def post(self, request, *args, **kwargs):
#         return self.create(request, *args, **kwargs)


# class SnippetDetail(mixins.RetrieveModelMixin,
#                     mixins.UpdateModelMixin,
#                     mixins.DestroyModelMixin,
#                     generics.GenericAPIView):
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer

#     def get(self, request, *args, **kwargs):
#         return self.retrieve(request, *args, **kwargs)

#     def put(self, request, *args, **kwargs):
#         return self.update(request, *args, **kwargs)

#     def delete(self, request, *args, **kwargs):
#         return self.destroy(request, *args, **kwargs)

####################End mixin on class based views ##########
##############################################################

################### Generic class based views ################

# from snippets.models import Snippet
# from snippets.serializers import SnippetSerializer
# from rest_framework import generics
# from rest_framework import permissions
# from snippets.permissions import IsOwnerOrReadOnly

# class SnippetList(generics.ListCreateAPIView):
#     permission_classes = (permissions.IsAuthenticatedOrReadOnly,
#                             IsOwnerOrReadOnly)
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer
#     def perform_create(self, serializer):
#         serializer.save(owner=self.request.user)


# class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
#     queryset = Snippet.objects.all()
#     serializer_class = SnippetSerializer


# from django.contrib.auth.models import User
# from snippets.serializers import UserSerializer

# class UserList(generics.ListAPIView):
#     queryset = User.objects.all()
#     serializer_class = UserSerializer

# class UserDetail(generics.RetrieveAPIView):
#     queryset = User.objects.all()
#     serializer_class = UserSerializer





# from rest_framework.decorators import api_view
# from rest_framework.response import Response
# from rest_framework.reverse import reverse


# @api_view(['GET'])
# def api_root(request, format=None):
#     return Response({
#         'users': reverse('user-list', request=request, format=format),
#         'snippets': reverse('snippet-list', request=request, format=format)
#     })

# from rest_framework import renderers
# # from rest_framework.response import Response

# class SnippetHighlight (generics.GenericAPIView):
#     queryset = Snippet.objects.all()
#     renderer_classes = (renderers.StaticHTMLRenderer,)

#     def get(self, request, *args, **kwargs):
#         snippet = self.get_object()
#         return Response(snippet.highlighted)

#################### generic class based views authentication, ##########
#################### relationships and hyperlinked API end ##############


from rest_framework import viewsets

from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework import permissions
from snippets.permissions import IsOwnerOrReadOnly
from django.contrib.auth.models import User
from snippets.serializers import UserSerializer

class UserViewSet(viewsets.ReadOnlyModelViewSet):
    """
    This viewset automatically provides `list` and `detail` actions.
    """
    queryset = User.objects.all()
    serializer_class = UserSerializer

from rest_framework.decorators import detail_route
from rest_framework import renderers
from rest_framework.response import Response

class SnippetViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.

    Additionally we also provide an extra `highligh` action.
    """
    queryset = Snippet.objects.all()
    serializer_class = SnippetSerializer
    permission_classes = (permissions.IsAuthenticatedOrReadOnly,
                            IsOwnerOrReadOnly,)

    @detail_route(renderer_classes=[renderers.StaticHTMLRenderer])
    def highlight(self, request, *args, **kwargs):
        snippet = self.get_object()
        return Response(snippet.highlighted)

    def perform_create(self,serializer):
        serializer.save(owner=self.request.user)
# -*- coding: utf-8 -*- # Create your views here. # from django.http import HttpResponse, JsonResponse # from django.views.decorators.csrf import csrf_exempt # from rest_framework import status # from rest_framework.decorators import api_view, permission_classes # from rest_framework import permissions # # from rest_framework.renderers import JSONRenderer # # from rest_framework.parsers import JSONParser # from rest_framework.response import Response # from snippets.models import Snippet # from snippets.serializers import SnippetSerializer # # @csrf_exempt # @api_view(['GET', 'POST']) # @permission_classes((permissions.AllowAny,)) # def snippet_list(request, format=None): #     """ #     List all code snippets, or create a new snippet. #     """ #     if request.method == 'GET': #         snippets = Snippet.objects.all() #         serializer = SnippetSerializer(snippets, many=True) #         # return JsonResponse(serializer.data, safe=False) #         return Response(serializer.data) #     elif request.method == 'POST': #         # data = JSONParser().parse(request) #         serializer = SnippetSerializer(data=request.data) #         if serializer.is_valid(): #             serializer.save() #             # return JsonResponse(serializer.data, status=201) #             return Response(serializer.data, status = status.HTTP_201_CREATED) #         return Response(serializer.errors, status= status.HTTP_400_BAD_REQUEST) # # @csrf_exempt # @api_view(['GET', 'PUT', 'DELETE']) # @permission_classes((permissions.AllowAny,)) # def snippet_detail(request, pk, format=None): #     """ #     Retrieve, updata or delete a code snippet. #     """ #     try: #         snippet = Snippet.objects.get(pk=pk) #     except Snippet.DoesNotExist: #         # return HttpResponse(status=404) #         return Response(status = status.HTTP_404_NOT_FOUND) #     if request.method == 'GET': #         serializer = SnippetSerializer(snippet) #         # return JsonResponse(serializer.data) #         return Response(serializer.data) #     elif request.method == 'PUT': #         # data = JSONParser().parse(request) #         serializer = SnippetSerializer(snippet, data = request.data) #         if serializer.is_valid(): #             serializer.save() #             # return JsonResponse(serializer.data) #             return Response(serializer.data) #         # return JsonResponse(serializer.errors, status = 400) #         return Response(serializer.errors, status = status.HTTP_400_BAD_REQUEST) #     elif request.method == 'DELETE': #         snippet.delete() #         # return HttpResponse(status=204) #         return Response(status=status.HTTP_204_NO_CONTENT) ################## Functional view end ########################################### ################################################################################## ############## Class based views ############# # from snippets.models import Snippet # from snippets.serializers import SnippetSerializer # from django.http import Http404 # from rest_framework.views import APIView # from rest_framework.response import Response # from rest_framework import status # class SnippetList(APIView): #     """ #     List all snippets, or create a new snippet. #     """ #     def get(self, request, format=None): #         snippets = Snippet.objects.all() #         serializer = SnippetSerializer(snippets, many=True) #         return Response(serializer.data) #     def post(self, request, format=None): #         serializer = SnippetSerializer(data=request.data) #         if serializer.is_valid(): #             serializer.save() #             return Response(serializer.data, status=status.HTTP_201_CREATED) #         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) # class SnippetDetail(APIView): #     """ #     Retrueve, update or delete a snippet instance. #     """ #     def get_object(self, pk): #         try: #             return Snippet.objects.get(pk=pk) #         except Snippet.DoesNotExist: #             raise Http404 #     def get(self, request, pk, format=None): #         snippet = self.get_object(pk) #         serializer = SnippetSerializer(snippet) #         return Response(serializer.data) #     def put(self, request, pk, format=None): #         snippet = self.get_object(pk) #         serializer = SnippetSerializer(snippet, data=request.data) #         if serializer.is_valid(): #             serializer.save() #             return Response(serializer.data) #         return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) #     def delete(self, request, pk, format=None): #         snippet = self.get_object(pk) #         snippet.delete() #         return Response(status=status.HTTP_204_NO_CONTENT) ################## Class based views end ################ ############################################################# ################ Mixin in class based views ################ # from snippets.models import Snippet # from snippets.serializers import SnippetSerializer # from rest_framework import mixins # from rest_framework import generics # class SnippetList(mixins.ListModelMixin, #                     mixins.CreateModelMixin, #                     generics.GenericAPIView): #     queryset = Snippet.objects.all() #     serializer_class = SnippetSerializer #     def get(self, request, *args, **kwargs): #         return self.list(request, *args, **kwargs) #     def post(self, request, *args, **kwargs): #         return self.create(request, *args, **kwargs) # class SnippetDetail(mixins.RetrieveModelMixin, #                     mixins.UpdateModelMixin, #                     mixins.DestroyModelMixin, #                     generics.GenericAPIView): #     queryset = Snippet.objects.all() #     serializer_class = SnippetSerializer #     def get(self, request, *args, **kwargs): #         return self.retrieve(request, *args, **kwargs) #     def put(self, request, *args, **kwargs): #         return self.update(request, *args, **kwargs) #     def delete(self, request, *args, **kwargs): #         return self.destroy(request, *args, **kwargs) ####################End mixin on class based views ########## ############################################################## ################### Generic class based views ################ # from snippets.models import Snippet # from snippets.serializers import SnippetSerializer # from rest_framework import generics # from rest_framework import permissions # from snippets.permissions import IsOwnerOrReadOnly # class SnippetList(generics.ListCreateAPIView): #     permission_classes = (permissions.IsAuthenticatedOrReadOnly, #                             IsOwnerOrReadOnly) #     queryset = Snippet.objects.all() #     serializer_class = SnippetSerializer #     def perform_create(self, serializer): #         serializer.save(owner=self.request.user) # class SnippetDetail(generics.RetrieveUpdateDestroyAPIView): #     queryset = Snippet.objects.all() #     serializer_class = SnippetSerializer # from django.contrib.auth.models import User # from snippets.serializers import UserSerializer # class UserList(generics.ListAPIView): #     queryset = User.objects.all() #     serializer_class = UserSerializer # class UserDetail(generics.RetrieveAPIView): #     queryset = User.objects.all() #     serializer_class = UserSerializer # from rest_framework.decorators import api_view # from rest_framework.response import Response # from rest_framework.reverse import reverse # @api_view(['GET']) # def api_root(request, format=None): #     return Response({ #         'users': reverse('user-list', request=request, format=format), #         'snippets': reverse('snippet-list', request=request, format=format) #     }) # from rest_framework import renderers # # from rest_framework.response import Response # class SnippetHighlight (generics.GenericAPIView): #     queryset = Snippet.objects.all() #     renderer_classes = (renderers.StaticHTMLRenderer,) #     def get(self, request, *args, **kwargs): #         snippet = self.get_object() #         return Response(snippet.highlighted) #################### generic class based views authentication, ########## #################### relationships and hyperlinked API end ############## This viewset automatically provides `list` and `detail` actions. This viewset automatically provides `list`, `create`, `retrieve`,     `update` and `destroy` actions.      Additionally we also provide an extra `highligh` action.