views.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from django.core.exceptions import ObjectDoesNotExist
  2. from django.db.models import Model
  3. from django.shortcuts import render
  4. from rest_framework import viewsets, status
  5. from rest_framework.exceptions import ValidationError
  6. from rest_framework.generics import RetrieveUpdateDestroyAPIView, get_object_or_404
  7. from rest_framework.response import Response
  8. from rest_framework.views import APIView
  9. from django.contrib.auth.models import User
  10. from apps.patient.models import Patient
  11. from apps.patient.serializers import PatientSerializer
  12. class PatientViewSet(viewsets.ModelViewSet):
  13. def get_queryset(self):
  14. user = self.request.user
  15. return Patient.objects.filter(owners=user)
  16. # queryset = Patient.objects.all().order_by('-created_date')
  17. # def get_object(self):
  18. # queryset = self.get_queryset()
  19. # filter = {}
  20. # for field in self.multiple_lookup_fields:
  21. # filter[field] = self.kwargs[field]
  22. #
  23. # obj = get_object_or_404(queryset, **filter)
  24. # self.check_object_permissions(self.request, obj)
  25. # return obj
  26. serializer_class = PatientSerializer
  27. # class PatientVS(RetrieveUpdateDestroyAPIView):
  28. #
  29. # def get_queryset(self):
  30. # user = self.request.user
  31. #
  32. # def get(self, request, *args, **kwargs):
  33. # user = request.user
  34. # patients = Patient.objects.filter(owners=user)
  35. # return patients
  36. class AddUserForPatient(APIView):
  37. def post(self, request):
  38. patient_id = request.data["patient_id"]
  39. username = request.data["username"]
  40. try:
  41. patient = Patient.objects.get(pk=patient_id)
  42. except ObjectDoesNotExist:
  43. raise ValidationError(detail="incorrect patient_id",
  44. code=status.HTTP_404_NOT_FOUND)
  45. try:
  46. user = User.objects.get(username=username)
  47. except ObjectDoesNotExist:
  48. raise ValidationError(detail="user not found",
  49. code=status.HTTP_404_NOT_FOUND)
  50. if request.user in patient.owners.all():
  51. result = patient.owners.all()
  52. list_result = [entry for entry in result]
  53. list_result.append(user)
  54. patient.owners.set(set(list_result))
  55. patient.save()
  56. serializer_context = {
  57. 'request': request,
  58. }
  59. serializer = PatientSerializer(patient, context=serializer_context)
  60. return Response(serializer.data)
  61. else:
  62. raise ValidationError(detail="FORBIDDEN",
  63. code=status.HTTP_403_FORBIDDEN)