Enhance logging configuration in WSGI setup for better debugging and error handling

This commit is contained in:
Ross
2026-03-02 11:04:51 +00:00
parent b3f5684e69
commit 12e3d47600
2 changed files with 71 additions and 4 deletions
+68 -3
View File
@@ -4800,6 +4800,11 @@ def series_dicom_json(request, pk):
def series_tags_partial(request, pk):
logger.info(f"Fetching tags for series {pk}")
try:
print(f"series_tags_partial hit: {pk}")
except Exception:
pass
# Accept either a numeric PK or a SeriesInstanceUID string
series = None
try:
@@ -4809,18 +4814,78 @@ def series_tags_partial(request, pk):
series = None
if series is None:
# Try exact match first
series = Series.objects.filter(series_instance_uid=pk).first()
if series is None:
return HttpResponse(status=404)
images = list(series.images.all())
# Try URL-decoded value and stripped variants
try:
import urllib.parse
decoded = urllib.parse.unquote(pk)
except Exception:
decoded = pk
if decoded != pk:
series = Series.objects.filter(series_instance_uid=decoded).first()
if series is None:
# Fallback to contains (be permissive for slightly mangled UIDs)
try:
series = Series.objects.filter(series_instance_uid__contains=pk).first()
except Exception:
series = None
images = None
if series is not None:
images = list(series.images.all())
else:
# If no Series exists yet, try to find uploaded uncategorised dicoms
try:
dicoms = UncategorisedDicom.objects.filter(series_instance_uid=pk)
except Exception:
dicoms = UncategorisedDicom.objects.none()
if not dicoms.exists():
try:
import urllib.parse
decoded = urllib.parse.unquote(pk)
except Exception:
decoded = pk
if decoded != pk:
dicoms = UncategorisedDicom.objects.filter(series_instance_uid=decoded)
if not dicoms.exists():
try:
dicoms = UncategorisedDicom.objects.filter(series_instance_uid__contains=pk)
except Exception:
dicoms = UncategorisedDicom.objects.none()
if not dicoms.exists():
return HttpResponse(status=404)
images = list(dicoms)
num_images = len(images)
tag_values = {}
tag_counts = {}
for img in images:
ds = img.get_dicom_data()
# Uploaded uncategorised dicoms use a different API than SeriesImage
try:
if isinstance(img, UncategorisedDicom):
try:
ds = pydicom.dcmread(img.image)
except Exception:
# skip invalid dicoms
continue
else:
ds = img.get_dicom_data()
except Exception:
# Defensive: skip items that don't expose expected methods
continue
if not ds:
continue
# Iterate elements