Skip to content

Commit deb3794

Browse files
404 for not found recordings, allows none for compressed (#517)
* 404 for not found recordings, allows none for compressed * Update bats_ai/core/views/recording.py Co-authored-by: Brian Helba <brian.helba@kitware.com> * update import --------- Co-authored-by: Brian Helba <brian.helba@kitware.com>
1 parent 705b70a commit deb3794

2 files changed

Lines changed: 11 additions & 14 deletions

File tree

bats_ai/core/views/nabat/nabat_recording.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ def get_spectrogram(request: HttpRequest, pk: int):
270270

271271
spectrogram = nabat_recording.spectrograms.latest("created")
272272

273-
compressed = nabat_recording.compressed_spectrograms.latest("created")
273+
compressed = nabat_recording.compressed_spectrograms.order_by("-created").first()
274274

275275
spectro_data = {
276276
"urls": spectrogram.image_url_list,

bats_ai/core/views/recording.py

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from django.contrib.postgres.aggregates import ArrayAgg
1111
from django.core.files.storage import default_storage
1212
from django.db.models import Count, Exists, OuterRef, Prefetch, Q, QuerySet
13+
from django.http import Http404
14+
from django.shortcuts import get_object_or_404
1315
from ninja import File, Form, Query, Schema
1416

1517
# Django-Ninja accesses additional params directly, so we need to ignore the type checker.
@@ -742,14 +744,10 @@ def get_recording_annotations(request: HttpRequest, recording_id: int):
742744

743745
@router.get("/{pk}/spectrogram")
744746
def get_spectrogram(request: HttpRequest, pk: int):
745-
try:
746-
recording = Recording.objects.get(pk=pk)
747-
except Recording.DoesNotExist:
748-
return {"error": "Recording not found"}
747+
recording = get_object_or_404(Recording, pk=pk)
749748

750749
spectrogram = recording.spectrograms.latest("created")
751-
752-
compressed = recording.compressed_spectrograms.latest("created")
750+
compressed = recording.compressed_spectrograms.order_by("-created").first()
753751

754752
spectro_data = {
755753
"urls": spectrogram.image_url_list,
@@ -816,13 +814,12 @@ def get_spectrogram(request: HttpRequest, pk: int):
816814

817815
@router.get("/{pk}/spectrogram/compressed")
818816
def get_spectrogram_compressed(request: HttpRequest, pk: int):
819-
try:
820-
recording = Recording.objects.get(pk=pk)
821-
compressed_spectrogram = CompressedSpectrogram.objects.filter(recording=pk).first()
822-
except compressed_spectrogram.DoesNotExist:
823-
return {"error": "Compressed Spectrogram"}
824-
except recording.DoesNotExist:
825-
return {"error": "Recording does not exist"}
817+
recording = get_object_or_404(Recording, pk=pk)
818+
compressed_spectrogram = (
819+
CompressedSpectrogram.objects.filter(recording=pk).order_by("-created").first()
820+
)
821+
if compressed_spectrogram is None:
822+
raise Http404(404, f"Compressed spectrogram for recording {pk} not found")
826823

827824
spectro_data = {
828825
"urls": compressed_spectrogram.image_url_list,

0 commit comments

Comments
 (0)