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.
132 lines
4.6 KiB
132 lines
4.6 KiB
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)
|
|
|