|
@@ -0,0 +1,74 @@
|
|
|
|
|
+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)
|