You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
2.3 KiB

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)