diff --git a/atlas/api.py b/atlas/api.py
index fab35a50..c2678305 100644
--- a/atlas/api.py
+++ b/atlas/api.py
@@ -1,6 +1,7 @@
from collections import defaultdict
from typing import List, Tuple
from django.shortcuts import get_object_or_404
+from django.urls import reverse
from ninja import ModelSchema, Router, Schema, Field
from django.db import transaction
@@ -8,6 +9,7 @@ from django.db import transaction
# from .decorators import user_is_author_or_rapid_checker
from django.core.exceptions import PermissionDenied
import pydicom
+from pydicom.errors import InvalidDicomError
from generic.decorators import check_user_in_group
from generic.constants import Group
@@ -54,6 +56,7 @@ class CaseSchema(ModelSchema):
def upload_dicom(request, files: List[UploadedFile] = File(...)):
uploaded = []
duplicate = []
+ failed = []
for file in files:
# data = file.read()
try:
@@ -66,8 +69,10 @@ def upload_dicom(request, files: List[UploadedFile] = File(...)):
print(ud.check_for_duplicates(ud.image_blake3_hash))
duplicate.append((file.name, ud.image_blake3_hash))
pass
+ except InvalidDicomError:
+ failed.append(file.name)
- return {"uploaded": uploaded, "duplicates": duplicate}
+ return {"uploaded": uploaded, "duplicates": duplicate, "failed": failed}
@router.post("/generate_image_hash", auth=django_auth)
def generate_image_hash(request, id:int):
@@ -253,14 +258,18 @@ def check_images_hashes(request, hashes: List[str]):
for hash in hashes:
try:
# TOOD also check against uncategorised dicoms?
- with transaction.atomic():
- series_image = SeriesImage.objects.get(image_blake3_hash=hash)
+ series_image = SeriesImage.objects.get(image_blake3_hash=hash)
data = {
"id": series_image.pk,
"url": series_image.series.get_absolute_url(),
+ "type": "series"
}
except SeriesImage.DoesNotExist:
- data = { "id": False, "url": False}
+ try:
+ uncategorised_dicom = UncategorisedDicom.objects.get(image_blake3_hash=hash)
+ data = { "id":uncategorised_dicom.pk, "url": reverse("atlas:user_uploads"), "type": "uncategorised"}
+ except UncategorisedDicom.DoesNotExist:
+ data = { "id": False, "url": False}
hash_status[hash] = data
diff --git a/atlas/templates/atlas/base.html b/atlas/templates/atlas/base.html
index b9d437d6..89b69e80 100755
--- a/atlas/templates/atlas/base.html
+++ b/atlas/templates/atlas/base.html
@@ -13,6 +13,7 @@
Categories /
Create Case /
Create Series /
+ Uploads /
Help
{% endif %}
{% comment %}
diff --git a/atlas/views.py b/atlas/views.py
index 39ed04d8..96e07ad3 100755
--- a/atlas/views.py
+++ b/atlas/views.py
@@ -452,7 +452,6 @@ def user_uploads(request, case_id: int | None = None, user_only: bool = True, us
for series in data:
tags, date = data[series][0]
series_list.append((series, len(data[series]), tags, date))
- print(series_list)
series_list.sort(key=lambda l: l[-1])