| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- from django.core.exceptions import ObjectDoesNotExist
- from django.db.models import Model
- from django.shortcuts import render
- from rest_framework import viewsets, status
- from rest_framework.exceptions import ValidationError
- from rest_framework.generics import RetrieveUpdateDestroyAPIView, get_object_or_404
- from rest_framework.response import Response
- from rest_framework.views import APIView
- from django.contrib.auth.models import User
- from apps.patient.models import Patient
- from apps.patient.serializers import PatientSerializer
- class PatientViewSet(viewsets.ModelViewSet):
- def get_queryset(self):
- user = self.request.user
- return Patient.objects.filter(owners=user)
- # queryset = Patient.objects.all().order_by('-created_date')
- # def get_object(self):
- # queryset = self.get_queryset()
- # filter = {}
- # for field in self.multiple_lookup_fields:
- # filter[field] = self.kwargs[field]
- #
- # obj = get_object_or_404(queryset, **filter)
- # self.check_object_permissions(self.request, obj)
- # return obj
- serializer_class = PatientSerializer
- # class PatientVS(RetrieveUpdateDestroyAPIView):
- #
- # def get_queryset(self):
- # user = self.request.user
- #
- # def get(self, request, *args, **kwargs):
- # user = request.user
- # patients = Patient.objects.filter(owners=user)
- # return patients
- class AddUserForPatient(APIView):
- def post(self, request):
- patient_id = request.data["patient_id"]
- username = request.data["username"]
- try:
- patient = Patient.objects.get(pk=patient_id)
- except ObjectDoesNotExist:
- raise ValidationError(detail="incorrect patient_id",
- code=status.HTTP_404_NOT_FOUND)
- try:
- user = User.objects.get(username=username)
- except ObjectDoesNotExist:
- raise ValidationError(detail="user not found",
- code=status.HTTP_404_NOT_FOUND)
- if request.user in patient.owners.all():
- result = patient.owners.all()
- list_result = [entry for entry in result]
- list_result.append(user)
- patient.owners.set(set(list_result))
- patient.save()
- serializer_context = {
- 'request': request,
- }
- serializer = PatientSerializer(patient, context=serializer_context)
- return Response(serializer.data)
- else:
- raise ValidationError(detail="FORBIDDEN",
- code=status.HTTP_403_FORBIDDEN)
|