|
10 | 10 | from django.contrib.postgres.aggregates import ArrayAgg |
11 | 11 | from django.core.files.storage import default_storage |
12 | 12 | 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 |
13 | 15 | from ninja import File, Form, Query, Schema |
14 | 16 |
|
15 | 17 | # 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): |
742 | 744 |
|
743 | 745 | @router.get("/{pk}/spectrogram") |
744 | 746 | 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) |
749 | 748 |
|
750 | 749 | spectrogram = recording.spectrograms.latest("created") |
751 | | - |
752 | | - compressed = recording.compressed_spectrograms.latest("created") |
| 750 | + compressed = recording.compressed_spectrograms.order_by("-created").first() |
753 | 751 |
|
754 | 752 | spectro_data = { |
755 | 753 | "urls": spectrogram.image_url_list, |
@@ -816,13 +814,12 @@ def get_spectrogram(request: HttpRequest, pk: int): |
816 | 814 |
|
817 | 815 | @router.get("/{pk}/spectrogram/compressed") |
818 | 816 | 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") |
826 | 823 |
|
827 | 824 | spectro_data = { |
828 | 825 | "urls": compressed_spectrogram.image_url_list, |
|
0 commit comments