133 lines
4.6 KiB
Python
133 lines
4.6 KiB
Python
from django.shortcuts import render
|
|
from django.contrib.auth.models import User, Group
|
|
from caremyway.api.models import UserInfo, Client, Provider, WorkType, Manage, Price, Shift
|
|
from rest_framework import viewsets, permissions, status
|
|
from rest_framework.decorators import api_view
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from caremyway.api.serializers import UserSerializer, UserInfoSerializer, ClientSerializer, ProviderSerializer, WorkTypeSerializer, EmployeeSerializer, EmployerSerializer, PriceSerializer, CShiftSerializer, PShiftSerializer
|
|
|
|
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):
|
|
return User.objects.filter(username=self.request.user)
|
|
|
|
class UserInfoViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "user__username"
|
|
serializer_class = UserInfoSerializer
|
|
|
|
# Disallow DELETE
|
|
http_method_names = ['get', 'post', 'head', 'put', 'options']
|
|
|
|
def get_queryset(self):
|
|
return UserInfo.objects.filter(user__username=self.request.user)
|
|
|
|
class ClientViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "user__username"
|
|
serializer_class = ClientSerializer
|
|
|
|
# Disallow DELETE
|
|
http_method_names = ['get', 'post', 'head', 'put', 'options']
|
|
|
|
def get_queryset(self):
|
|
return Client.objects.filter(user__username=self.request.user)
|
|
|
|
class ProviderViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "user__username"
|
|
serializer_class = ProviderSerializer
|
|
|
|
# Disallow DELETE
|
|
http_method_names = ['get', 'post', 'head', 'put', 'options']
|
|
|
|
def get_queryset(self):
|
|
return Provider.objects.filter(user__username=self.request.user)
|
|
|
|
class WorkTypeViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "uuid"
|
|
serializer_class = WorkTypeSerializer
|
|
|
|
def get_queryset(self):
|
|
return WorkType.objects.filter(client__user__username=self.request.user)
|
|
|
|
def destroy(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
instance.deleted = True
|
|
instance.save()
|
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
|
|
|
class EmployeeViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "uuid"
|
|
serializer_class = EmployeeSerializer
|
|
|
|
def get_queryset(self):
|
|
return Manage.objects.filter(client__user__username=self.request.user)
|
|
|
|
def destroy(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
instance.deleted = True
|
|
instance.save()
|
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
|
|
|
class EmployerViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "uuid"
|
|
serializer_class = EmployerSerializer
|
|
|
|
# Disallow creation and deletions of relationships
|
|
http_method_names = ['get', 'head', 'put', 'options']
|
|
|
|
def get_queryset(self):
|
|
return Manage.objects.filter(provider__user__username=self.request.user)
|
|
|
|
class PriceViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "uuid"
|
|
serializer_class = PriceSerializer
|
|
|
|
def get_queryset(self):
|
|
return Price.objects.filter(management__client__user__username=self.request.user)
|
|
|
|
def destroy(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
instance.deleted = True
|
|
instance.save()
|
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
|
|
|
class CShiftViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "uuid"
|
|
serializer_class = CShiftSerializer
|
|
|
|
def get_queryset(self):
|
|
return Shift.objects.filter(price__management__client__user__username=self.request.user) \
|
|
.filter(deleted=False) \
|
|
.order_by('-set_start')
|
|
|
|
def destroy(self, request, *args, **kwargs):
|
|
instance = self.get_object()
|
|
|
|
if instance.actual_start:
|
|
return Response("Shift already started.", status=status.HTTP_400_BAD_REQUEST)
|
|
|
|
instance.deleted = True
|
|
instance.save()
|
|
return Response(status=status.HTTP_204_NO_CONTENT)
|
|
|
|
class PShiftViewSet(viewsets.ModelViewSet):
|
|
lookup_field = "uuid"
|
|
serializer_class = PShiftSerializer
|
|
|
|
# Disallow creation and deletions of relationships
|
|
http_method_names = ['get', 'head', 'put', 'options']
|
|
|
|
def get_queryset(self):
|
|
return Shift.objects.filter(price__management__provider__user__username=self.request.user) \
|
|
.filter(deleted=False) \
|
|
.order_by('-set_start')
|
|
|
|
@api_view()
|
|
def null_view(request):
|
|
return Response(status=status.HTTP_400_BAD_REQUEST)
|