diff --git a/backend/metagenedb/api/catalog/urls.py b/backend/metagenedb/api/catalog/urls.py index 043fbbd25f484494ae49841a155657dcdb1ef836..fa35c70c40cc00bced8ae137d900ea6dd2ad713f 100644 --- a/backend/metagenedb/api/catalog/urls.py +++ b/backend/metagenedb/api/catalog/urls.py @@ -4,7 +4,7 @@ from rest_framework.routers import DefaultRouter, DynamicRoute, Route from metagenedb.api.catalog import views -from metagenedb.api.catalog.views.celery_test import celery_test_view, test_task_view +# from metagenedb.api.catalog.views.celery_test import celery_test_view, test_task_view class CustomRouter(DefaultRouter): diff --git a/backend/metagenedb/api/catalog/views/base.py b/backend/metagenedb/api/catalog/views/base.py index 62e2f0e35e1fe3b10213f55ef10cb119f814a80c..dbd21b2cb5de1fe9200e5894f22e4ebae442ee45 100644 --- a/backend/metagenedb/api/catalog/views/base.py +++ b/backend/metagenedb/api/catalog/views/base.py @@ -1,13 +1,22 @@ from marshmallow.exceptions import ValidationError from rest_framework import status +from rest_framework.mixins import ( + CreateModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin +) from rest_framework.response import Response -from rest_framework.viewsets import ModelViewSet +from rest_framework.viewsets import GenericViewSet from metagenedb.common.django_default.permissions import ListAndRetrieveAll from metagenedb.common.django_default.qparams_validators import PaginatedQueryParams -class QParamsValidationViewSet(ModelViewSet): +class QParamsValidationViewSet( + CreateModelMixin, + ListModelMixin, + RetrieveModelMixin, + UpdateModelMixin, + GenericViewSet +): query_params_parser = PaginatedQueryParams def _get_qparams(self, raw_query_params): diff --git a/backend/metagenedb/api/catalog/views/function.py b/backend/metagenedb/api/catalog/views/function.py index ce21c8dd29158473a8c46e7f9c2cd0b3d2fd740c..207efdee78672f21acef3650ca791d6f7d8b43d1 100644 --- a/backend/metagenedb/api/catalog/views/function.py +++ b/backend/metagenedb/api/catalog/views/function.py @@ -1,5 +1,6 @@ import logging +from drf_yasg.utils import swagger_auto_schema from marshmallow.exceptions import ValidationError from rest_framework.response import Response from rest_framework.status import HTTP_422_UNPROCESSABLE_ENTITY @@ -25,6 +26,36 @@ class FunctionViewSet(BulkViewSet): filterset_class = FunctionFilter query_params_parser = FunctionQueryParams + @swagger_auto_schema( + tags=['Functions'], + ) + def list(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Functions'], + ) + def retrieve(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Functions'], + ) + def create(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Functions'], + ) + def update(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Functions'], + ) + def partial_update(self, *args, **kwargs): + super().list(*args, **kwargs) + class KeggOrthologyViewSet(QParamsValidationViewSet): queryset = KeggOrthology.objects.all() @@ -42,6 +73,9 @@ class KeggOrthologyViewSet(QParamsValidationViewSet): detailed_data = db_data return detailed_data + @swagger_auto_schema( + tags=['KEGG'], + ) def retrieve(self, request, *args, **kwargs): try: query_params = self.query_params_parser().load(request.query_params) @@ -58,6 +92,30 @@ class KeggOrthologyViewSet(QParamsValidationViewSet): returned_data = self._get_external_info(returned_data) return Response(returned_data) + @swagger_auto_schema( + tags=['KEGG'], + ) + def list(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['KEGG'], + ) + def create(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['KEGG'], + ) + def update(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['KEGG'], + ) + def partial_update(self, *args, **kwargs): + super().list(*args, **kwargs) + class EggNOGViewSet(QParamsValidationViewSet): queryset = EggNOG.objects.all() @@ -65,3 +123,33 @@ class EggNOGViewSet(QParamsValidationViewSet): lookup_field = 'function_id' filterset_class = EggNOGFilter query_params_parser = EggNOGQueryParams + + @swagger_auto_schema( + tags=['EggNOG'], + ) + def list(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['EggNOG'], + ) + def retrieve(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['EggNOG'], + ) + def create(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['EggNOG'], + ) + def update(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['EggNOG'], + ) + def partial_update(self, *args, **kwargs): + super().list(*args, **kwargs) diff --git a/backend/metagenedb/api/catalog/views/gene.py b/backend/metagenedb/api/catalog/views/gene.py index 3d73654bde985d9367a7c5ef03bed1fdbd10c576..04fd2b4b953942e8b09f937b84bf35d5b415bca8 100644 --- a/backend/metagenedb/api/catalog/views/gene.py +++ b/backend/metagenedb/api/catalog/views/gene.py @@ -1,3 +1,5 @@ +from drf_yasg.utils import swagger_auto_schema + from metagenedb.apps.catalog.models import Gene from metagenedb.api.catalog.filters import GeneFilter from metagenedb.api.catalog.qparams_validators.gene import GeneQueryParams @@ -12,3 +14,33 @@ class GeneViewSet(BulkViewSet): filterset_class = GeneFilter query_params_parser = GeneQueryParams lookup_field = 'gene_id' + + @swagger_auto_schema( + tags=['Genes'], + ) + def list(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Genes'], + ) + def retrieve(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Genes'], + ) + def create(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Genes'], + ) + def update(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Genes'], + ) + def partial_update(self, *args, **kwargs): + super().list(*args, **kwargs) diff --git a/backend/metagenedb/api/catalog/views/statistics.py b/backend/metagenedb/api/catalog/views/statistics.py index f4448168035f73332c6634f32ecd2f273a259e10..f0e3cfd92c570a1de1b0b7238b60793186e853c1 100644 --- a/backend/metagenedb/api/catalog/views/statistics.py +++ b/backend/metagenedb/api/catalog/views/statistics.py @@ -1,4 +1,5 @@ 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 @@ -7,16 +8,23 @@ from metagenedb.apps.catalog.serializers import StatisticsSerializer class StatisticsViewSet(viewsets.ViewSet): - """ - API View that list or retrieve pre-computed statistics from the catalog. - """ lookup_field = 'stats_id' + @swagger_auto_schema( + operation_description="List all pre-computed statistics", + 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) + @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) diff --git a/backend/metagenedb/api/catalog/views/taxonomy.py b/backend/metagenedb/api/catalog/views/taxonomy.py index a05eeb567c0a23fd5f39ed39a8651d6ebb6590a5..86ed8ff47668b3af1a09ec61c6c6d396700a7660 100644 --- a/backend/metagenedb/api/catalog/views/taxonomy.py +++ b/backend/metagenedb/api/catalog/views/taxonomy.py @@ -1,3 +1,5 @@ +from drf_yasg.utils import swagger_auto_schema + from metagenedb.api.catalog.filters import TaxonomyFilter from metagenedb.api.catalog.qparams_validators.taxonomy import TaxonomyQueryParams from metagenedb.apps.catalog.models import Taxonomy @@ -13,3 +15,33 @@ class TaxonomyViewSet(BulkViewSet): lookup_field = 'tax_id' filterset_class = TaxonomyFilter query_params_parser = TaxonomyQueryParams + + @swagger_auto_schema( + tags=['Taxonomy'], + ) + def list(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Taxonomy'], + ) + def retrieve(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Taxonomy'], + ) + def create(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Taxonomy'], + ) + def update(self, *args, **kwargs): + super().list(*args, **kwargs) + + @swagger_auto_schema( + tags=['Taxonomy'], + ) + def partial_update(self, *args, **kwargs): + super().list(*args, **kwargs)