diff --git a/backend/metagenedb/api/catalog/views/function.py b/backend/metagenedb/api/catalog/views/function.py index 9a4d6b14cea23c18631e17454f8933eb71c716cd..a26b79e43ad85552235841d8e2e99c6de8193ab9 100644 --- a/backend/metagenedb/api/catalog/views/function.py +++ b/backend/metagenedb/api/catalog/views/function.py @@ -57,7 +57,7 @@ class FunctionViewSet(BulkViewSet): return super().partial_update(*args, **kwargs) -class KeggOrthologyViewSet(QParamsValidationViewSet): +class KeggOrthologyViewSet(BulkViewSet): queryset = KeggOrthology.objects.all() serializer_class = KeggOrthologySerializer lookup_field = 'function_id' @@ -117,7 +117,7 @@ class KeggOrthologyViewSet(QParamsValidationViewSet): return super().partial_update(*args, **kwargs) -class EggNOGViewSet(QParamsValidationViewSet): +class EggNOGViewSet(BulkViewSet): queryset = EggNOG.objects.all() serializer_class = EggNOGSerializer lookup_field = 'function_id' diff --git a/backend/metagenedb/api/catalog/views/statistics.py b/backend/metagenedb/api/catalog/views/statistics.py index f0e3cfd92c570a1de1b0b7238b60793186e853c1..7146b7fdf3107c06fe656f0a8fd78b4bc4027cac 100644 --- a/backend/metagenedb/api/catalog/views/statistics.py +++ b/backend/metagenedb/api/catalog/views/statistics.py @@ -1,4 +1,3 @@ -from django.shortcuts import get_object_or_404 from drf_yasg.utils import swagger_auto_schema from rest_framework import viewsets from rest_framework.response import Response @@ -6,8 +5,12 @@ from rest_framework.response import Response from metagenedb.apps.catalog.models import Statistics from metagenedb.apps.catalog.serializers import StatisticsSerializer +from .base import BulkViewSet -class StatisticsViewSet(viewsets.ViewSet): + +class StatisticsViewSet(BulkViewSet): + queryset = Statistics.objects.all() + serializer_class = StatisticsSerializer lookup_field = 'stats_id' @swagger_auto_schema( @@ -15,18 +18,31 @@ class StatisticsViewSet(viewsets.ViewSet): operation_summary="API to list all pre-computed statistics.", tags=['Statistics'], ) - def list(self, request): - queryset = Statistics.objects.all() - serializer = StatisticsSerializer(queryset, many=True) - return Response(serializer.data) + def list(self, *args, **kwargs): + return super().list(*args, **kwargs) @swagger_auto_schema( operation_description="Retrieve pre-computed statistics from an ID", operation_summary="API to retrieve pre-computed statistics.", tags=['Statistics'], ) - def retrieve(self, request, stats_id=None): - queryset = Statistics.objects.all() - stats = get_object_or_404(queryset, stats_id=stats_id) - serializer = StatisticsSerializer(stats) - return Response(serializer.data) + def retrieve(self, *args, **kwargs): + return super().retrieve(*args, **kwargs) + + @swagger_auto_schema( + tags=['Statistics'], + ) + def create(self, *args, **kwargs): + return super().create(*args, **kwargs) + + @swagger_auto_schema( + tags=['Statistics'], + ) + def update(self, *args, **kwargs): + return super().update(*args, **kwargs) + + @swagger_auto_schema( + tags=['Statistics'], + ) + def partial_update(self, *args, **kwargs): + return super().partial_update(*args, **kwargs) diff --git a/backend/metagenedb/apps/catalog/admin/__init__.py b/backend/metagenedb/apps/catalog/admin/__init__.py index f7d7aca57c0b5b0c860d3a70d7887edc6cef111a..93ccd2c7ba4e6eaa890f73e791ebacd94fca3c75 100644 --- a/backend/metagenedb/apps/catalog/admin/__init__.py +++ b/backend/metagenedb/apps/catalog/admin/__init__.py @@ -1,3 +1,4 @@ from .gene import GeneAdmin # noqa from .function import FunctionAdmin, KeggOrthologyAdmin # noqa +from .statistics import Statistics # noqa from .taxonomy import TaxonomyAdmin # noqa diff --git a/backend/metagenedb/apps/catalog/admin/statistics.py b/backend/metagenedb/apps/catalog/admin/statistics.py new file mode 100644 index 0000000000000000000000000000000000000000..6b1d5755fdb3dbacb22bba0d2b2f72a199072a5c --- /dev/null +++ b/backend/metagenedb/apps/catalog/admin/statistics.py @@ -0,0 +1,9 @@ +from django.contrib import admin + +from metagenedb.apps.catalog.models import Statistics + + +@admin.register(Statistics) +class StatisticsAdmin(admin.ModelAdmin): + list_display = ('stats_id',) + search_fields = ('stats_id',) diff --git a/backend/metagenedb/apps/catalog/models/statistics.py b/backend/metagenedb/apps/catalog/models/statistics.py index 71630a7e66320f9326d5b0c8f83310b450c4f2e7..70371c626b7b74bf63e710a574ba03280a9c4bef 100644 --- a/backend/metagenedb/apps/catalog/models/statistics.py +++ b/backend/metagenedb/apps/catalog/models/statistics.py @@ -9,3 +9,6 @@ class Statistics(models.Model): stats_id = models.SlugField(max_length=400, db_index=True, unique=True) body = JSONField() + + class Meta: + verbose_name_plural = "Statistics" diff --git a/backend/metagenedb/common/django_default/permissions.py b/backend/metagenedb/common/django_default/permissions.py index 456f88f6fbb4d9bd5a2b79b6e27d49d7a741e4f4..c92bbde9b39c2d0407bc55e7476b4c1ac6d9957c 100644 --- a/backend/metagenedb/common/django_default/permissions.py +++ b/backend/metagenedb/common/django_default/permissions.py @@ -7,4 +7,7 @@ class ListAndRetrieveAll(BasePermission): """ def has_permission(self, request, view): + print(view.action) + print(view.action in ['list', 'retrieve']) + print(request.user.is_staff) return view.action in ['list', 'retrieve'] or request.user.is_staff