|
|
|
from django.shortcuts import render
|
|
|
|
|
|
|
|
from django.contrib.auth.models import User, Group
|
|
|
|
from caremyway.api.models import UserInfo, Client, Provider
|
|
|
|
from rest_framework import viewsets, permissions, status
|
|
|
|
from rest_framework.decorators import api_view
|
|
|
|
from rest_framework.response import Response
|
|
|
|
from caremyway.api.serializers import UserSerializer, UserInfoSerializer, ClientSerializer, ProviderSerializer
|
|
|
|
from caremyway.api.permissions import UserTypePermission
|
|
|
|
|
|
|
|
class UserViewSet(viewsets.ModelViewSet):
|
|
|
|
lookup_field = 'username'
|
|
|
|
serializer_class = UserSerializer
|
|
|
|
|
|
|
|
# Disallow POSTing from /users/ route. Only rest-auth can add users.
|
|
|
|
http_method_names = ['get', 'head', 'put', 'options']
|
|
|
|
|
|
|
|
def get_queryset(self):
|
|
|
|
user = self.request.user
|
|
|
|
if user.is_staff:
|
|
|
|
return User.objects.all().order_by('-date_joined')
|
|
|
|
else:
|
|
|
|
return User.objects.filter(username=user)
|
|
|
|
|
|
|
|
class UserInfoViewSet(viewsets.ModelViewSet):
|
|
|
|
lookup_field = "user__username"
|
|
|
|
serializer_class = UserInfoSerializer
|
|
|
|
|
|
|
|
http_method_names = ['get', 'post', 'head', 'put', 'options']
|
|
|
|
|
|
|
|
def get_queryset(self):
|
|
|
|
user = self.request.user
|
|
|
|
if user.is_staff:
|
|
|
|
return UserInfo.objects.all().order_by('-user__date_joined')
|
|
|
|
else:
|
|
|
|
return UserInfo.objects.filter(user__username=user)
|
|
|
|
|
|
|
|
class ClientViewSet(viewsets.ModelViewSet):
|
|
|
|
lookup_field = "user__username"
|
|
|
|
serializer_class = ClientSerializer
|
|
|
|
|
|
|
|
http_method_names = ['get', 'post', 'head', 'put', 'options']
|
|
|
|
permission_classes = (UserTypePermission,)
|
|
|
|
|
|
|
|
def get_queryset(self):
|
|
|
|
user = self.request.user
|
|
|
|
if user.is_staff:
|
|
|
|
return Client.objects.all().order_by('-user__date_joined')
|
|
|
|
else:
|
|
|
|
return Client.objects.filter(user__username=user)
|
|
|
|
|
|
|
|
class ProviderViewSet(viewsets.ModelViewSet):
|
|
|
|
lookup_field = "user__username"
|
|
|
|
serializer_class = ProviderSerializer
|
|
|
|
|
|
|
|
http_method_names = ['get', 'post', 'head', 'put', 'options']
|
|
|
|
permission_classes = (UserTypePermission,)
|
|
|
|
|
|
|
|
def get_queryset(self):
|
|
|
|
user = self.request.user
|
|
|
|
if user.is_staff:
|
|
|
|
return Provider.objects.all().order_by('-user__date_joined')
|
|
|
|
else:
|
|
|
|
return Provider.objects.filter(user__username=user)
|
|
|
|
|
|
|
|
@api_view()
|
|
|
|
def null_view(request):
|
|
|
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|