old_contents: import json
  
  from django.conf import settings
  from django.contrib import messages
  from django.contrib.auth import authenticate, login, logout
  from django.contrib.auth.decorators import login_required
  from django.core.urlresolvers import reverse
  from django.http import HttpResponseRedirect, HttpResponseBadRequest, HttpResponse
  from django.utils.functional import lazy
  from rest_framework import mixins, routers
  from rest_framework.permissions import BasePermission
  from rest_framework.renderers import JSONRenderer
  from rest_framework.viewsets import GenericViewSet
  
  from core.serializers import UserSerializer
  from users.models import User
  
  
  def reverse_lazy(name=None, *args):
      return lazy(reverse, str)(name, args=args)
  
  
  class UserViewSet(
      mixins.RetrieveModelMixin,
      mixins.ListModelMixin,
      mixins.CreateModelMixin,
      GenericViewSet,
  ):
      class Permission(BasePermission):
          def has_permission(self, request, view):
              if not request.method == "POST":
                  return True
              return settings.ALLOW_NEW_REGISTRATIONS
  
          def has_object_permission(self, request, view, obj):
              return request.user == obj
  
      permission_classes = [Permission, ]
      serializer_class = UserSerializer
      pagination_class = None
  
      def get_queryset(self):
          if self.request.user.is_anonymous:
              return User.objects.none()
          return User.objects.filter(id=self.request.user.id)
  
  
  def login_user(request):
      try:
          data = json.loads(request.body)
      except json.JSONDecodeError:
          return HttpResponseBadRequest()
      if 'username' not in data:
          return HttpResponseBadRequest(
              json.dumps({"username": "this field is required"})
          )
      if 'password' not in data:
          return HttpResponseBadRequest(
              json.dumps({"password": "this field is required"})
          )
      user = authenticate(
          request,
          username=data['username'],
          password=data['password']
      )
      if not user:
          return HttpResponseBadRequest(
              json.dumps({"password": "username and password doesn't match"})
          )
      login(request, user)
      data = UserSerializer(
          user,
          context={'request': request},
      ).data
      return HttpResponse(
          JSONRenderer().render(data),
          content_type="application/json"
      )
  
  
  @login_required
  def logout_user(request):
      logout(request)
      messages.success(request, 'You have successfully logged out.')
      return HttpResponseRedirect(reverse('core:recent-pins'))
  
  
  drf_router = routers.DefaultRouter()
  drf_router.register(r'users', UserViewSet, base_name="user")
  
new_contents: import json
  
  from django.conf import settings
  from django.contrib import messages
  from django.contrib.auth import authenticate, login, logout
  from django.contrib.auth.decorators import login_required
  from django.core.urlresolvers import reverse
  from django.http import HttpResponseRedirect, HttpResponseBadRequest, HttpResponse
  from django.utils.functional import lazy
  from rest_framework import mixins, routers
  from rest_framework.permissions import BasePermission
  from rest_framework.renderers import JSONRenderer
  from rest_framework.viewsets import GenericViewSet
  
  from core.serializers import UserSerializer
  from users.models import User
  
  
  def reverse_lazy(name=None, *args):
      return lazy(reverse, str)(name, args=args)
  
  
  class UserViewSet(
      mixins.RetrieveModelMixin,
      mixins.ListModelMixin,
      mixins.CreateModelMixin,
      GenericViewSet,
  ):
      class Permission(BasePermission):
          def has_permission(self, request, view):
              if not request.method == "POST":
                  return True
              return settings.ALLOW_NEW_REGISTRATIONS
  
          def has_object_permission(self, request, view, obj):
              return request.user == obj
  
      permission_classes = [Permission, ]
      serializer_class = UserSerializer
      pagination_class = None
  
      def get_queryset(self):
          if self.request.user.is_anonymous:
              return User.objects.none()
          return User.objects.filter(id=self.request.user.id)
  
  
  def login_user(request):
      try:
          data = json.loads(request.body)
      except json.JSONDecodeError:
          return HttpResponseBadRequest()
      if 'username' not in data:
          return HttpResponseBadRequest(
              json.dumps({"username": "this field is required"})
          )
      if 'password' not in data:
          return HttpResponseBadRequest(
              json.dumps({"password": "this field is required"})
          )
      user = authenticate(
          request,
          username=data['username'],
          password=data['password']
      )
      if not user:
          return HttpResponseBadRequest(
              json.dumps({"password": "username and password doesn't match"})
          )
      login(request, user)
      data = UserSerializer(
          user,
          context={'request': request},
      ).data
      return HttpResponse(
          JSONRenderer().render(data),
          content_type="application/json"
      )
  
  
  @login_required
  def logout_user(request):
      logout(request)
      messages.success(request, 'You have successfully logged out.')
      return HttpResponseRedirect('/')
  
  
  drf_router = routers.DefaultRouter()
  drf_router.register(r'users', UserViewSet, base_name="user")
  
subject: Fix view missing in http response redirect