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
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)
|
|
|