Marwan Alwali a710d1c4d8 update
2025-09-11 19:01:55 +03:00

49 lines
1.5 KiB
Python

# views.py
import requests
from django.http import Http404
from django.shortcuts import get_object_or_404
from patients.models import PatientProfile
class PatientContextMixin:
"""
Resolve the patient automatically from:
1) URL kwarg `patient_id`
2) Query param `?patient=<uuid|pk>`
3) Logged-in user's linked PatientProfile
"""
patient_kwarg_name = "patient_id"
patient_query_param = "patient"
def get_patient(self):
tenant = getattr(self.request, 'tenant', None)
# 1) URL kwarg
patient_id = self.kwargs.get(self.patient_kwarg_name)
if patient_id:
patient = get_object_or_404(
PatientProfile,
pk=patient_id
)
print(patient)
return patient
# 2) Query param
patient_qp = self.request.GET.get(self.patient_query_param)
if patient_qp:
patient = get_object_or_404(
PatientProfile,
pk=patient_qp
)
print(patient)
return patient
# 3) Current user's patient profile (self-service)
# Adjust attribute access if your relation is named differently.
# if hasattr(self.request.user, 'patientprofile'):
# pp = self.request.user.patientprofile
# if pp and pp.tenant == tenant and pp.is_active:
# return pp
# If still not found, raise a clear 404 (or you can redirect with a message)
# raise Http404("Patient not found or not accessible.")