Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 0 additions & 50 deletions bats_ai/api.py

This file was deleted.

21 changes: 21 additions & 0 deletions bats_ai/core/api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from ninja import NinjaAPI
from resonant_utils.ninja import HttpOAuth2

from bats_ai.core import views
from bats_ai.core.views import nabat

api = NinjaAPI(auth=HttpOAuth2())

api.add_router('/recording/', views.RecordingRouter)
api.add_router('/species/', views.SpeciesRouter)
api.add_router('/grts/', views.GRTSCellsRouter)
api.add_router('/guano/', views.GuanoMetadataRouter)
api.add_router('/recording-annotation/', views.RecordingAnnotationRouter)
api.add_router('/export-annotation/', views.ExportAnnotationRouter)
api.add_router('/configuration/', views.ConfigurationRouter)
api.add_router('/processing-task/', views.ProcessingTaskRouter)
api.add_router('/recording-tag/', views.RecordingTagRouter)
api.add_router('/vetting/', views.VettingRouter)

api.add_router('/nabat/recording/', nabat.NABatRecordingRouter)
api.add_router('/nabat/configuration/', nabat.NABatConfigurationRouter)
2 changes: 1 addition & 1 deletion bats_ai/core/tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from ninja.testing import TestClient
import pytest

from bats_ai.api import api
from bats_ai.core.api import api


@pytest.fixture
Expand Down
20 changes: 8 additions & 12 deletions bats_ai/core/views/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,14 @@ def get_configuration(request):
default_spectrogram_background_color=config.default_spectrogram_background_color,
non_admin_upload_enabled=config.non_admin_upload_enabled,
mark_annotations_completed_enabled=config.mark_annotations_completed_enabled,
is_admin=request.user.is_authenticated and request.user.is_superuser,
is_admin=request.user.is_superuser,
)


# Endpoint to update the configuration (admin only)
@router.patch('/')
def update_configuration(request, payload: ConfigurationSchema):
if not request.user.is_authenticated or not request.user.is_superuser:
if not request.user.is_superuser:
return JsonResponse({'error': 'Permission denied'}, status=403)
config = Configuration.objects.first()
if not config:
Expand All @@ -62,17 +62,13 @@ def update_configuration(request, payload: ConfigurationSchema):

@router.get('/is_admin/')
def check_is_admin(request):
if request.user.is_authenticated:
return {'is_admin': request.user.is_superuser}
return {'is_admin': False}
return {'is_admin': request.user.is_superuser}


@router.get('/me')
def get_current_user(request):
if request.user.is_authenticated:
return {
'email': request.user.email,
'name': request.user.username,
'id': request.user.id,
}
return {'email': '', 'name': ''}
return {
'email': request.user.email,
'name': request.user.username,
'id': request.user.id,
}
8 changes: 4 additions & 4 deletions bats_ai/core/views/nabat/nabat_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

@router.post('/update-species')
def update_species_list(request: HttpRequest):
if not request.user.is_authenticated or not request.user.is_superuser:
if not request.user.is_superuser:
return JsonResponse({'error': 'Permission denied'}, status=403)
existing_task = ProcessingTask.objects.filter(
metadata__type=ProcessingTaskType.UPDATING_SPECIES.value,
Expand Down Expand Up @@ -81,7 +81,7 @@ class RecordingListItemSchema(Schema):
@router.get('/recordings', response=list[RecordingListItemSchema])
@paginate
def list_recordings(request: HttpRequest, filters: Query[RecordingFilterSchema]):
if not request.user.is_authenticated or not request.user.is_superuser:
if not request.user.is_superuser:
return JsonResponse({'error': 'Permission denied'}, status=403)

recordings = NABatRecording.objects.annotate(
Expand Down Expand Up @@ -154,7 +154,7 @@ class AnnotationSchema(Schema):
def recording_annotations(
request: HttpRequest, recording_id: int, filters: Query[AnnotationFilterSchema]
):
if not request.user.is_authenticated or not request.user.is_superuser:
if not request.user.is_superuser:
return JsonResponse({'error': 'Permission denied'}, status=403)

try:
Expand Down Expand Up @@ -188,7 +188,7 @@ def recording_annotations(

@router.get('/stats')
def get_stats(request: HttpRequest):
if not request.user.is_authenticated or not request.user.is_superuser:
if not request.user.is_superuser:
return JsonResponse({'error': 'Permission denied'}, status=403)

total_recordings = NABatRecording.objects.count()
Expand Down
7 changes: 3 additions & 4 deletions bats_ai/core/views/nabat/nabat_recording.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,8 @@ def get_email_if_authorized(
`recording_id` is retrieved.
"""
# Superuser shortcut
if request.user and request.user.is_authenticated:
if request.user.is_superuser:
return request.user.email or 'superuser@nabat.org'
if request.user and request.user.is_superuser:
return request.user.email or 'superuser@nabat.org'
# Decode JWT token
try:
payload = decode_jwt(api_token)
Expand Down Expand Up @@ -412,7 +411,7 @@ def get_nabat_recording_annotation(

fileAnnotations = NABatRecordingAnnotation.objects.filter(nabat_recording=nabat_recording_id)

if request.user.is_authenticated and request.user.is_superuser:
if request.user.is_superuser:
# If the user is a superuser, return all annotations
pass
elif user_email:
Expand Down
2 changes: 1 addition & 1 deletion bats_ai/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from django.contrib import admin
from django.urls import include, path

from .api import api
from bats_ai.core.api import api

urlpatterns = [
path('accounts/', include('allauth.urls')),
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ dependencies = [
"django-extensions",
"django-oauth-toolkit",
"django-resonant-settings[allauth,celery]",
"django-resonant-utils[allauth,s3_storage]",
"django-resonant-utils[allauth,ninja,s3-storage]",
"django-s3-file-field[s3]",
"django-storages[s3]",
"django-stubs-ext",
Expand Down
8 changes: 6 additions & 2 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading