From 5305443fa1831f309a221b5a8392af8d135bdf2d Mon Sep 17 00:00:00 2001 From: Maya Date: Sat, 26 Feb 2022 00:56:03 +0300 Subject: [PATCH 1/4] Update readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 3948d11d9da0..6e219ced8f5c 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,10 @@ Prebuilt docker images for CVAT releases are available on Docker Hub: - [cvat_server](https://hub.docker.com/r/openvino/cvat_server) - [cvat_ui](https://hub.docker.com/r/openvino/cvat_ui) +## REST API +The current REST API version is `2.0-alpha`. We focus on its improvement and therefore +REST API may be changed in the next release. + ## LICENSE Code released under the [MIT License](https://opensource.org/licenses/MIT). From 6ea6c68bc82263db69e54a2f5f0bc3d2cdc73780 Mon Sep 17 00:00:00 2001 From: Maya Date: Sat, 26 Feb 2022 00:56:23 +0300 Subject: [PATCH 2/4] Update version in swagger doc --- cvat/settings/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cvat/settings/base.py b/cvat/settings/base.py index 53f40f663721..68f0fca9a8c9 100644 --- a/cvat/settings/base.py +++ b/cvat/settings/base.py @@ -503,7 +503,7 @@ def add_ssh_keys(): # Statically set schema version. May also be an empty string. When used together with # view versioning, will become '0.0.0 (v2)' for 'v2' versioned requests. # Set VERSION to None if only the request version should be rendered. - 'VERSION': None, + 'VERSION': 'alpha', 'CONTACT': { 'name': 'Nikita Manovich', 'url': 'https://github.com/nmanovic', From 1bbcd6d07b712e432fb46ad124da62d63e4e58a3 Mon Sep 17 00:00:00 2001 From: Maya Date: Sat, 26 Feb 2022 00:57:26 +0300 Subject: [PATCH 3/4] Add small improvements --- cvat/apps/engine/views.py | 575 +++++++++++++++--------------- cvat/apps/iam/views.py | 3 +- cvat/apps/lambda_manager/views.py | 50 +-- cvat/apps/organizations/views.py | 181 +++++----- cvat/apps/restrictions/views.py | 7 +- 5 files changed, 424 insertions(+), 392 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index dd845738d1a9..b382b02077e8 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -73,6 +73,7 @@ CommentPermission, IssuePermission, JobPermission, ProjectPermission, TaskPermission, UserPermission) +@extend_schema(tags=['server']) class ServerViewSet(viewsets.ViewSet): serializer_class = None iam_organization_field = None @@ -86,8 +87,7 @@ def get_serializer(self, *args, **kwargs): @extend_schema(summary='Method provides basic CVAT information', responses={ '200': AboutSerializer, - }, - tags=['server'], versions=['2.0']) + }) @action(detail=False, methods=['GET'], serializer_class=AboutSerializer) def about(request): from cvat import __version__ as cvat_version @@ -111,8 +111,7 @@ def about(request): description='Sends logs to the ELK if it is connected', request=ExceptionSerializer, responses={ '201': ExceptionSerializer, - }, - tags=['server'], versions=['2.0']) + }) @action(detail=False, methods=['POST'], serializer_class=ExceptionSerializer) def exception(request): serializer = ExceptionSerializer(data=request.data) @@ -139,7 +138,7 @@ def exception(request): request=LogEventSerializer(many=True), responses={ '201': LogEventSerializer(many=True), - }, tags=['server'], versions=['2.0']) + }) @action(detail=False, methods=['POST'], serializer_class=LogEventSerializer) def logs(request): serializer = LogEventSerializer(many=True, data=request.data) @@ -166,7 +165,7 @@ def logs(request): ], responses={ '200' : FileInfoSerializer(many=True) - }, tags=['server'], versions=['2.0']) + }) @action(detail=False, methods=['GET'], serializer_class=FileInfoSerializer) def share(request): param = request.query_params.get('directory', '/') @@ -199,7 +198,7 @@ def share(request): summary='Method provides the list of supported annotations formats', responses={ '200': DatasetFormatsSerializer, - }, tags=['server'], versions=['2.0']) + }) @action(detail=False, methods=['GET'], url_path='annotation/formats') def annotation_formats(request): data = dm.views.get_all_formats() @@ -210,7 +209,7 @@ def annotation_formats(request): summary='Method provides allowed plugins', responses={ '200': PluginsSerializer, - }, tags=['server'], versions=['2.0']) + }) @action(detail=False, methods=['GET'], url_path='plugins', serializer_class=PluginsSerializer) def plugins(request): response = { @@ -221,7 +220,6 @@ def plugins(request): } return Response(response) - class ProjectFilter(filters.FilterSet): name = filters.CharFilter(field_name="name", lookup_expr="icontains") owner = filters.CharFilter(field_name="owner__username", lookup_expr="icontains") @@ -232,46 +230,49 @@ class Meta: model = models.Project fields = ("id", "name", "owner", "status") -@extend_schema_view(list=extend_schema( - summary='Returns a paginated list of projects according to query parameters (12 projects per page)', - parameters=[ - OpenApiParameter('id', description='A unique number value identifying this project', - location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), - OpenApiParameter('name', description='Find all projects where name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('owner', description='Find all project where owner name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('status', description='Find all projects with a specific status', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=StatusChoice.list()), - OpenApiParameter('names_only', description="Returns only names and id's of projects", - location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL) - ], - responses={ - '200': PolymorphicProxySerializer(component_name='PolymorphicProject', - serializers=[ - ProjectSerializer, ProjectSearchSerializer, - ], resource_type_field_name='name', many=True), - }, tags=['projects'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates a new project', - responses={ - '201': ProjectSerializer, - }, tags=['projects'], versions=['2.0'])) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of a specific project', - responses={ - '200': ProjectSerializer, - }, tags=['projects'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes a specific project', - responses={ - '204': OpenApiResponse(description='The project has been deleted'), - }, tags=['projects'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in a project', - responses={ - '200': ProjectSerializer, - }, tags=['projects'], versions=['2.0'])) +@extend_schema(tags=['projects']) +@extend_schema_view( + list=extend_schema( + summary='Returns a paginated list of projects according to query parameters (12 projects per page)', + parameters=[ + OpenApiParameter('id', description='A unique number value identifying this project', + location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), + OpenApiParameter('name', description='Find all projects where name contains a parameter value', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('owner', description='Find all project where owner name contains a parameter value', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('status', description='Find all projects with a specific status', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=StatusChoice.list()), + OpenApiParameter('names_only', description="Returns only names and id's of projects", + location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL) + ], + responses={ + '200': PolymorphicProxySerializer(component_name='PolymorphicProject', + serializers=[ + ProjectSerializer, ProjectSearchSerializer, + ], resource_type_field_name='name', many=True), + }), + create=extend_schema( + summary='Method creates a new project', + responses={ + '201': ProjectSerializer, + }), + retrieve=extend_schema( + summary='Method returns details of a specific project', + responses={ + '200': ProjectSerializer, + }), + destroy=extend_schema( + summary='Method deletes a specific project', + responses={ + '204': OpenApiResponse(description='The project has been deleted'), + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in a project', + responses={ + '200': ProjectSerializer, + }) +) class ProjectViewSet(viewsets.ModelViewSet): queryset = models.Project.objects.prefetch_related(Prefetch('label_set', queryset=models.Label.objects.order_by('id') @@ -307,7 +308,7 @@ def perform_create(self, serializer): summary='Method returns information of the tasks of the project with the selected id', responses={ '200': TaskSerializer(many=True), - }, tags=['projects'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=TaskSerializer) def tasks(self, request, pk): self.get_object() # force to call check_object_permissions @@ -339,7 +340,7 @@ def tasks(self, request, pk): '201': OpenApiResponse(description='Output file is ready for downloading'), '202': OpenApiResponse(description='Exporting has been started'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['projects'], versions=['2.0']) + }) @extend_schema(methods=['POST'], summary='Import dataset in specific format as a project', parameters=[ OpenApiParameter('format', description='Desired dataset format name\n' @@ -350,7 +351,7 @@ def tasks(self, request, pk): '202': OpenApiResponse(description='Exporting has been started'), '400': OpenApiResponse(description='Failed to import dataset'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['projects'], versions=['2.0']) + }) @action(detail=True, methods=['GET', 'POST'], serializer_class=None, url_path='dataset') def dataset(self, request, pk): @@ -419,7 +420,7 @@ def dataset(self, request, pk): '202': OpenApiResponse(description='Dump of annotations has been started'), '401': OpenApiResponse(description='Format is not specified'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['projects'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=LabeledDataSerializer) def annotations(self, request, pk): @@ -442,7 +443,7 @@ def annotations(self, request, pk): '200': OpenApiResponse(description='Download of file started'), '201': OpenApiResponse(description='Output backup file is ready for downloading'), '202': OpenApiResponse(description='Creating a backup file has been started'), - }, tags=['projects'], versions=['2.0']) + }) @action(methods=['GET'], detail=True, url_path='backup') def export_backup(self, request, pk=None): db_project = self.get_object() # force to call check_object_permissions @@ -452,7 +453,7 @@ def export_backup(self, request, pk=None): responses={ '201': OpenApiResponse(description='The project has been imported'), # or better specify {id: project_id} '202': OpenApiResponse(description='Importing a backup file has been started'), - }, tags=['projects'], versions=['2.0']) + }) @action(detail=False, methods=['POST'], url_path='backup') def import_backup(self, request, pk=None): return backup.import_project(request) @@ -563,48 +564,51 @@ class Meta: fields = ("id", "project_id", "project", "name", "owner", "mode", "status", "assignee") -@extend_schema_view(list=extend_schema( - summary='Returns a paginated list of tasks according to query parameters (10 tasks per page)', - parameters=[ - OpenApiParameter('id', description='A unique number value identifying this task', - location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), - OpenApiParameter('name', description='Find all tasks where name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('owner', description='Find all tasks where owner name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('mode', description='Find all tasks with a specific mode', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=['annotation', 'interpolation']), - OpenApiParameter('status', description='Find all tasks with a specific status', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=StatusChoice.list()), - OpenApiParameter('assignee', description='Find all tasks where assignee name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR) - ], - responses={ - '200': TaskSerializer(many=True), - }, tags=['tasks'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates a new task in a database without any attached images and videos', - responses={ - '201': TaskSerializer, - }, tags=['tasks'], versions=['2.0'])) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of a specific task', - responses=TaskSerializer, tags=['tasks'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates a task by id', - responses={ - '200': TaskSerializer, - }, tags=['tasks'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes a specific task, all attached jobs, annotations, and data', - responses={ - '204': OpenApiResponse(description='The task has been deleted'), - }, tags=['tasks'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in a task', - responses={ - '200': TaskSerializer, - }, tags=['tasks'], versions=['2.0'])) +@extend_schema(tags=['tasks']) +@extend_schema_view( + list=extend_schema( + summary='Returns a paginated list of tasks according to query parameters (10 tasks per page)', + parameters=[ + OpenApiParameter('id', description='A unique number value identifying this task', + location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), + OpenApiParameter('name', description='Find all tasks where name contains a parameter value', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('owner', description='Find all tasks where owner name contains a parameter value', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('mode', description='Find all tasks with a specific mode', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=['annotation', 'interpolation']), + OpenApiParameter('status', description='Find all tasks with a specific status', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=StatusChoice.list()), + OpenApiParameter('assignee', description='Find all tasks where assignee name contains a parameter value', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR) + ], + responses={ + '200': TaskSerializer(many=True), + }), + create=extend_schema( + summary='Method creates a new task in a database without any attached images and videos', + responses={ + '201': TaskSerializer, + }), + retrieve=extend_schema( + summary='Method returns details of a specific task', + responses=TaskSerializer), + update=extend_schema( + summary='Method updates a task by id', + responses={ + '200': TaskSerializer, + }), + destroy=extend_schema( + summary='Method deletes a specific task, all attached jobs, annotations, and data', + responses={ + '204': OpenApiResponse(description='The task has been deleted'), + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in a task', + responses={ + '200': TaskSerializer, + }) +) class TaskViewSet(UploadMixin, viewsets.ModelViewSet): queryset = Task.objects.prefetch_related( Prefetch('label_set', queryset=models.Label.objects.order_by('id')), @@ -629,7 +633,7 @@ def get_queryset(self): responses={ '201': OpenApiResponse(description='The task has been imported'), # or better specify {id: task_id} '202': OpenApiResponse(description='Importing a backup file has been started'), - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=False, methods=['POST'], url_path='backup') def import_backup(self, request, pk=None): return backup.import_task(request) @@ -639,7 +643,7 @@ def import_backup(self, request, pk=None): '200': OpenApiResponse(description='Download of file started'), '201': OpenApiResponse(description='Output backup file is ready for downloading'), '202': OpenApiResponse(description='Creating a backup file has been started'), - }, tags=['tasks'], versions=['2.0']) + }) @action(methods=['GET'], detail=True, url_path='backup') def export_backup(self, request, pk=None): db_task = self.get_object() # force to call check_object_permissions @@ -675,7 +679,7 @@ def perform_destroy(self, instance): @extend_schema(summary='Method returns a list of jobs for a specific task', responses={ '200': JobReadSerializer(many=True), - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=JobReadSerializer) def jobs(self, request, pk): self.get_object() # force to call check_object_permissions @@ -732,7 +736,7 @@ def upload_finished(self, request): ], responses={ '202': OpenApiResponse(description=''), - }, tags=['tasks'], versions=['2.0']) + }) @extend_schema(methods=['GET'], summary='Method returns data for a specific task', parameters=[ OpenApiParameter('type', location=OpenApiParameter.QUERY, required=True, @@ -746,7 +750,7 @@ def upload_finished(self, request): ], responses={ '200': OpenApiResponse(description='Data of a specific type'), - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=True, methods=['OPTIONS', 'POST', 'GET'], url_path=r'data/?$') def data(self, request, pk): db_task = self.get_object() # call check_object_permissions as well @@ -788,7 +792,7 @@ def data(self, request, pk): '201': OpenApiResponse(description='Annotations file is ready to download'), '202': OpenApiResponse(description='Dump of annotations has been started'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['tasks'], versions=['2.0']) + }) @extend_schema(methods=['PUT'], summary='Method allows to upload task annotations', parameters=[ OpenApiParameter('format', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, required=False, @@ -798,16 +802,16 @@ def data(self, request, pk): '201': OpenApiResponse(description='Uploading has finished'), '202': OpenApiResponse(description='Uploading has been started'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['tasks'], versions=['2.0']) + }) @extend_schema(methods=['PATCH'], summary='Method performs a partial update of annotations in a specific task', parameters=[ OpenApiParameter('action', location=OpenApiParameter.QUERY, required=True, type=OpenApiTypes.STR, enum=['create', 'update', 'delete']), - ], tags=['tasks'], versions=['2.0']) + ]) @extend_schema(methods=['DELETE'], summary='Method deletes all annotations for a specific task', responses={ '204': OpenApiResponse(description='The annotation has been deleted'), - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=True, methods=['GET', 'DELETE', 'PUT', 'PATCH'], serializer_class=LabeledDataSerializer) def annotations(self, request, pk): @@ -863,7 +867,7 @@ def annotations(self, request, pk): summary='When task is being created the method returns information about a status of the creation process', responses={ '200': RqStatusSerializer, - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=RqStatusSerializer) def status(self, request, pk): self.get_object() # force to call check_object_permissions @@ -896,7 +900,7 @@ def _get_rq_response(queue, job_id): @extend_schema(summary='Method provides a meta information about media files which are related with the task', responses={ '200': DataMetaSerializer, - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=DataMetaSerializer, url_path='data/meta') def data_info(request, pk): @@ -940,7 +944,7 @@ def data_info(request, pk): '201': OpenApiResponse(description='Output file is ready for downloading'), '202': OpenApiResponse(description='Exporting has been started'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['tasks'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=None, url_path='dataset') def dataset_export(self, request, pk): @@ -968,26 +972,29 @@ class Meta: model = Job fields = ("assignee", ) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of a job', - responses={ - '200': JobReadSerializer, - }, tags=['jobs'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a paginated list of jobs according to query parameters', - responses={ - '200': JobReadSerializer(many=True), - }, tags=['jobs'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates a job by id', - responses={ - '200': JobWriteSerializer, - }, tags=['jobs'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in a job', - responses={ - '200': JobWriteSerializer, - }, tags=['jobs'], versions=['2.0'])) +@extend_schema(tags=['jobs']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a job', + responses={ + '200': JobReadSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of jobs according to query parameters', + responses={ + '200': JobReadSerializer(many=True), + }), + update=extend_schema( + summary='Method updates a job by id', + responses={ + '200': JobWriteSerializer, + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in a job', + responses={ + '200': JobWriteSerializer, + }) +) class JobViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin): queryset = Job.objects.all().order_by('id') @@ -1011,13 +1018,13 @@ def get_serializer_class(self): @extend_schema(methods=['GET'], summary='Method returns annotations for a specific job', responses={ '200': LabeledDataSerializer(many=True), - }, tags=['jobs'], versions=['2.0']) + }) @extend_schema(methods=['PUT'], summary='Method performs an update of all annotations in a specific job', request=AnnotationFileSerializer, responses={ '201': OpenApiResponse(description='Uploading has finished'), '202': OpenApiResponse(description='Uploading has been started'), '405': OpenApiResponse(description='Format is not available'), - }, tags=['jobs'], versions=['2.0']) + }) @extend_schema(methods=['PATCH'], summary='Method performs a partial update of annotations in a specific job', parameters=[ OpenApiParameter('action', location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, @@ -1026,11 +1033,11 @@ def get_serializer_class(self): responses={ #TODO '200': OpenApiResponse(description=''), - }, tags=['jobs'], versions=['2.0']) + }) @extend_schema(methods=['DELETE'], summary='Method deletes all annotations for a specific job', responses={ '204': OpenApiResponse(description='The annotation has been deleted'), - }, tags=['jobs'], versions=['2.0']) + }) @action(detail=True, methods=['GET', 'DELETE', 'PUT', 'PATCH'], serializer_class=LabeledDataSerializer) def annotations(self, request, pk): @@ -1076,7 +1083,7 @@ def annotations(self, request, pk): summary='Method returns list of issues for the job', responses={ '200': IssueReadSerializer(many=True) - }, tags=['jobs'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=IssueReadSerializer) def issues(self, request, pk): db_job = self.get_object() @@ -1099,7 +1106,7 @@ def issues(self, request, pk): ], responses={ '200': OpenApiResponse(description='Data of a specific type'), - }, tags=['jobs'], versions=['2.0']) + }) @action(detail=True, methods=['GET']) def data(self, request, pk): db_job = self.get_object() # call check_object_permissions as well @@ -1113,36 +1120,39 @@ def data(self, request, pk): return data_getter(request, db_job.segment.start_frame, db_job.segment.stop_frame, db_job.segment.task.data) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of an issue', - responses={ - '200': IssueReadSerializer, - }, tags=['issues'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a paginated list of issues according to query parameters', - responses={ - '200': IssueReadSerializer(many=True), - }, tags=['issues'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates an issue by id', - responses={ - '200': IssueWriteSerializer, - }, tags=['issues'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in an issue', - responses={ - '200': IssueWriteSerializer, - }, tags=['issues'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates an issue', - responses={ - '201': IssueWriteSerializer, - }, tags=['issues'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes an issue', - responses={ - '204': OpenApiResponse(description='The issue has been deleted'), - }, tags=['issues'], versions=['2.0'])) +@extend_schema(tags=['issues']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of an issue', + responses={ + '200': IssueReadSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of issues according to query parameters', + responses={ + '200': IssueReadSerializer(many=True), + }), + update=extend_schema( + summary='Method updates an issue by id', + responses={ + '200': IssueWriteSerializer, + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in an issue', + responses={ + '200': IssueWriteSerializer, + }), + create=extend_schema( + summary='Method creates an issue', + responses={ + '201': IssueWriteSerializer, + }), + destroy=extend_schema( + summary='Method deletes an issue', + responses={ + '204': OpenApiResponse(description='The issue has been deleted'), + }) +) class IssueViewSet(viewsets.ModelViewSet): queryset = Issue.objects.all().order_by('-id') http_method_names = ['get', 'post', 'patch', 'delete', 'options'] @@ -1168,7 +1178,7 @@ def perform_create(self, serializer): @extend_schema(summary='The action returns all comments of a specific issue', responses={ '200': CommentReadSerializer(many=True), - }, tags=['issues'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], serializer_class=CommentReadSerializer) def comments(self, request, pk): db_issue = self.get_object() @@ -1178,36 +1188,39 @@ def comments(self, request, pk): return Response(serializer.data) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of a comment', - responses={ - '200': CommentReadSerializer, - }, tags=['comments'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a paginated list of comments according to query parameters', - responses={ - '200':CommentReadSerializer(many=True), - }, tags=['comments'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates a comment by id', - responses={ - '200': CommentWriteSerializer, - }, tags=['comments'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in a comment', - responses={ - '200': CommentWriteSerializer, - }, tags=['comments'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates a comment', - responses={ - '201': CommentWriteSerializer, - }, tags=['comments'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes a comment', - responses={ - '204': OpenApiResponse(description='The comment has been deleted'), - }, tags=['comments'], versions=['2.0'])) +@extend_schema(tags=['comments']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a comment', + responses={ + '200': CommentReadSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of comments according to query parameters', + responses={ + '200':CommentReadSerializer(many=True), + }), + update=extend_schema( + summary='Method updates a comment by id', + responses={ + '200': CommentWriteSerializer, + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in a comment', + responses={ + '200': CommentWriteSerializer, + }), + create=extend_schema( + summary='Method creates a comment', + responses={ + '201': CommentWriteSerializer, + }), + destroy=extend_schema( + summary='Method deletes a comment', + responses={ + '204': OpenApiResponse(description='The comment has been deleted'), + }) +) class CommentViewSet(viewsets.ModelViewSet): queryset = Comment.objects.all().order_by('-id') http_method_names = ['get', 'post', 'patch', 'delete', 'options'] @@ -1235,41 +1248,44 @@ class Meta: model = User fields = ("id", "is_active") -@extend_schema_view(list=extend_schema( - summary='Method provides a paginated list of users registered on the server', - parameters=[ - OpenApiParameter('id', description='A unique number value identifying this user', - location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), - OpenApiParameter('is_active', description='Returns only active users', - location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL), - ], - responses={ - '200': PolymorphicProxySerializer(component_name='MetaUser', - serializers=[ - UserSerializer, BasicUserSerializer, - ], resource_type_field_name='username'), - }, tags=['users'], versions=['2.0'])) -@extend_schema_view(retrieve=extend_schema( - summary='Method provides information of a specific user', - responses={ - '200': PolymorphicProxySerializer(component_name='MetaUser', - serializers=[ - UserSerializer, BasicUserSerializer, - ], resource_type_field_name='username'), - }, tags=['users'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Method updates chosen fields of a user', - responses={ - '200': PolymorphicProxySerializer(component_name='MetaUser', - serializers=[ - UserSerializer, BasicUserSerializer, - ], resource_type_field_name='username'), - }, tags=['users'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes a specific user from the server', - responses={ - '204': OpenApiResponse(description='The user has been deleted'), - }, tags=['users'], versions=['2.0'])) +@extend_schema(tags=['users']) +@extend_schema_view( + list=extend_schema( + summary='Method provides a paginated list of users registered on the server', + parameters=[ + OpenApiParameter('id', description='A unique number value identifying this user', + location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), + OpenApiParameter('is_active', description='Returns only active users', + location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL), + ], + responses={ + '200': PolymorphicProxySerializer(component_name='MetaUser', + serializers=[ + UserSerializer, BasicUserSerializer, + ], resource_type_field_name='username'), + }), + retrieve=extend_schema( + summary='Method provides information of a specific user', + responses={ + '200': PolymorphicProxySerializer(component_name='MetaUser', + serializers=[ + UserSerializer, BasicUserSerializer, + ], resource_type_field_name='username'), + }), + partial_update=extend_schema( + summary='Method updates chosen fields of a user', + responses={ + '200': PolymorphicProxySerializer(component_name='MetaUser', + serializers=[ + UserSerializer, BasicUserSerializer, + ], resource_type_field_name='username'), + }), + destroy=extend_schema( + summary='Method deletes a specific user from the server', + responses={ + '204': OpenApiResponse(description='The user has been deleted'), + }) +) class UserViewSet(viewsets.GenericViewSet, mixins.ListModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin): queryset = User.objects.prefetch_related('groups').all().order_by('id') @@ -1304,7 +1320,7 @@ def get_serializer_class(self): serializers=[ UserSerializer, BasicUserSerializer, ], resource_type_field_name='username'), - }, tags=['users'], versions=['2.0']) + }) @action(detail=False, methods=['GET']) def self(self, request): """ @@ -1337,49 +1353,52 @@ class Meta: model = models.CloudStorage fields = ('id', 'display_name', 'provider_type', 'resource', 'credentials_type', 'description', 'owner') -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of a specific cloud storage', - responses={ - '200': CloudStorageReadSerializer, - }, tags=['cloud storages'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Returns a paginated list of storages according to query parameters', - parameters=[ - OpenApiParameter('provider_type', description='A supported provider of cloud storages', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=CloudProviderChoice.list()), - OpenApiParameter('display_name', description='A display name of storage', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('resource', description='A name of bucket or container', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('owner', description='A resource owner', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('credentials_type', description='A type of a granting access', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=CredentialsTypeChoice.list()), - ], - #FIXME - #field_inspectors=[RedefineDescriptionField] - responses={ - '200': CloudStorageReadSerializer(many=True), - }, tags=['cloud storages'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes a specific cloud storage', - responses={ - '204': OpenApiResponse(description='The cloud storage has been removed'), - }, tags=['cloud storages'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in a cloud storage instance', - # FIXME - #field_inspectors=[RedefineDescriptionField] - responses={ - '200': CloudStorageWriteSerializer, - }, tags=['cloud storages'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates a cloud storage with a specified characteristics', - # FIXME - #field_inspectors=[RedefineDescriptionField], - responses={ - '201': CloudStorageWriteSerializer, - }, tags=['cloud storages'], versions=['2.0'])) +@extend_schema(tags=['cloud storages']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a specific cloud storage', + responses={ + '200': CloudStorageReadSerializer, + }), + list=extend_schema( + summary='Returns a paginated list of storages according to query parameters', + parameters=[ + OpenApiParameter('provider_type', description='A supported provider of cloud storages', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=CloudProviderChoice.list()), + OpenApiParameter('display_name', description='A display name of storage', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('resource', description='A name of bucket or container', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('owner', description='A resource owner', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), + OpenApiParameter('credentials_type', description='A type of a granting access', + location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=CredentialsTypeChoice.list()), + ], + #FIXME + #field_inspectors=[RedefineDescriptionField] + responses={ + '200': CloudStorageReadSerializer(many=True), + }), + destroy=extend_schema( + summary='Method deletes a specific cloud storage', + responses={ + '204': OpenApiResponse(description='The cloud storage has been removed'), + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in a cloud storage instance', + # FIXME + #field_inspectors=[RedefineDescriptionField] + responses={ + '200': CloudStorageWriteSerializer, + }), + create=extend_schema( + summary='Method creates a cloud storage with a specified characteristics', + # FIXME + #field_inspectors=[RedefineDescriptionField], + responses={ + '201': CloudStorageWriteSerializer, + }) +) class CloudStorageViewSet(viewsets.ModelViewSet): http_method_names = ['get', 'post', 'patch', 'delete'] queryset = CloudStorageModel.objects.all().prefetch_related('data').order_by('-id') @@ -1441,7 +1460,7 @@ def create(self, request, *args, **kwargs): ], responses={ '200': OpenApiResponse(response=OpenApiTypes.OBJECT, description='A manifest content'), - }, tags=['cloud storages'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], url_path='content') def content(self, request, pk): storage = None @@ -1501,7 +1520,7 @@ def content(self, request, pk): @extend_schema(summary='Method returns a preview image from a cloud storage', responses={ '200': OpenApiResponse(description='Cloud Storage preview'), - }, tags=['cloud storages'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], url_path='preview') def preview(self, request, pk): storage = None @@ -1577,7 +1596,7 @@ def preview(self, request, pk): @extend_schema(summary='Method returns a cloud storage status', responses={ '200': OpenApiResponse(response=OpenApiTypes.STR, description='Cloud Storage status (AVAILABLE | NOT_FOUND | FORBIDDEN)'), - }, tags=['cloud storages'], versions=['2.0']) + }) @action(detail=True, methods=['GET'], url_path='status') def status(self, request, pk): try: diff --git a/cvat/apps/iam/views.py b/cvat/apps/iam/views.py index 9ebff150d1dd..f9d23d737496 100644 --- a/cvat/apps/iam/views.py +++ b/cvat/apps/iam/views.py @@ -79,6 +79,7 @@ def __call__(self, request): return self.get_response(request) +@extend_schema(tags=['auth']) @extend_schema_view(post=extend_schema( summary='This method signs URL for access to the server', description='Signed URL contains a token which authenticates a user on the server.' @@ -89,7 +90,7 @@ def __call__(self, request): 'url': serializers.CharField(), } ), - responses={'200': OpenApiResponse(response=OpenApiTypes.STR, description='text URL')}, tags=['auth'], versions=['2.0'])) + responses={'200': OpenApiResponse(response=OpenApiTypes.STR, description='text URL')})) class SigningView(views.APIView): def post(self, request): diff --git a/cvat/apps/lambda_manager/views.py b/cvat/apps/lambda_manager/views.py index f5ec851b0669..43738c258ff4 100644 --- a/cvat/apps/lambda_manager/views.py +++ b/cvat/apps/lambda_manager/views.py @@ -630,14 +630,16 @@ def func_wrapper(*args, **kwargs): return func_wrapper return wrap_response -@extend_schema_view(retrieve=extend_schema( - summary='Method returns the information about the function', - responses={ - '200': OpenApiResponse(response=OpenApiTypes.OBJECT, description='Information about the function'), - }, - tags=['lambda'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a list of functions', tags=['lambda'], versions=['2.0'])) +@extend_schema(tags=['lambda']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns the information about the function', + responses={ + '200': OpenApiResponse(response=OpenApiTypes.OBJECT, description='Information about the function'), + }), + list=extend_schema( + summary='Method returns a list of functions') +) class FunctionViewSet(viewsets.ViewSet): lookup_value_regex = '[a-zA-Z0-9_.-]+' lookup_field = 'func_id' @@ -672,21 +674,23 @@ def call(self, request, func_id): return lambda_func.invoke(db_task, request.data) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns the status of the request', - parameters=[ - # specify correct type - OpenApiParameter('id', location=OpenApiParameter.PATH, type=OpenApiTypes.INT, - description='Request id'), - ], - tags=['lambda'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a list of requests', tags=['lambda'], versions=['2.0'])) -#TODO -@extend_schema_view(create=extend_schema( - summary='Method calls the function', tags=['lambda'], versions=['2.0'])) -@extend_schema_view(delete=extend_schema( - summary='Method cancels the request', tags=['lambda'], versions=['2.0'])) +@extend_schema(tags=['lambda']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns the status of the request', + parameters=[ + # specify correct type + OpenApiParameter('id', location=OpenApiParameter.PATH, type=OpenApiTypes.INT, + description='Request id'), + ]), + list=extend_schema( + summary='Method returns a list of requests'), + #TODO + create=extend_schema( + summary='Method calls the function'), + delete=extend_schema( + summary='Method cancels the request') +) class RequestViewSet(viewsets.ViewSet): iam_organization_field = None serializer_class = None diff --git a/cvat/apps/organizations/views.py b/cvat/apps/organizations/views.py index d6def621cb49..b6ada551f1db 100644 --- a/cvat/apps/organizations/views.py +++ b/cvat/apps/organizations/views.py @@ -19,36 +19,39 @@ OrganizationReadSerializer, OrganizationWriteSerializer) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of an organization', - responses={ - '200': OrganizationReadSerializer, - }, tags=['organizations'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a paginated list of organizatins according to query parameters', - responses={ - '200': OrganizationReadSerializer(many=True), - }, tags=['organizations'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates an organization by id', - responses={ - '200': OrganizationWriteSerializer, - }, tags=['organizations'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in an organization', - responses={ - '200': OrganizationWriteSerializer, - }, tags=['organizations'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates an organization', - responses={ - '201': OrganizationWriteSerializer, - }, tags=['organizations'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes an organization', - responses={ - '204': OpenApiResponse(description='The organization has been deleted'), - }, tags=['organizations'], versions=['2.0'])) +@extend_schema(tags=['organizations']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of an organization', + responses={ + '200': OrganizationReadSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of organizatins according to query parameters', + responses={ + '200': OrganizationReadSerializer(many=True), + }), + update=extend_schema( + summary='Method updates an organization by id', + responses={ + '200': OrganizationWriteSerializer, + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in an organization', + responses={ + '200': OrganizationWriteSerializer, + }), + create=extend_schema( + summary='Method creates an organization', + responses={ + '201': OrganizationWriteSerializer, + }), + destroy=extend_schema( + summary='Method deletes an organization', + responses={ + '204': OpenApiResponse(description='The organization has been deleted'), + }) +) class OrganizationViewSet(viewsets.ModelViewSet): queryset = Organization.objects.all() ordering = ['-id'] @@ -79,31 +82,35 @@ class MembershipFilter(filters.FilterSet): class Meta: model = Membership fields = ("user", ) -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of a membership', - responses={ - '200': MembershipReadSerializer, - }, tags=['memberships'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a paginated list of memberships according to query parameters', - responses={ - '200': MembershipReadSerializer(many=True), - }, tags=['memberships'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates a membership by id', - responses={ - '200': MembershipWriteSerializer, - }, tags=['memberships'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in a membership', - responses={ - '200': MembershipWriteSerializer, - }, tags=['memberships'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes a membership', - responses={ - '204': OpenApiResponse(description='The membership has been deleted'), - }, tags=['memberships'], versions=['2.0'])) + +@extend_schema(tags=['memberships']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of a membership', + responses={ + '200': MembershipReadSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of memberships according to query parameters', + responses={ + '200': MembershipReadSerializer(many=True), + }), + update=extend_schema( + summary='Method updates a membership by id', + responses={ + '200': MembershipWriteSerializer, + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in a membership', + responses={ + '200': MembershipWriteSerializer, + }), + destroy=extend_schema( + summary='Method deletes a membership', + responses={ + '204': OpenApiResponse(description='The membership has been deleted'), + }) +) class MembershipViewSet(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, mixins.ListModelMixin, mixins.UpdateModelMixin, viewsets.GenericViewSet): queryset = Membership.objects.all() @@ -123,37 +130,39 @@ def get_queryset(self): permission = MembershipPermission(self.request, self) return permission.filter(queryset) -# TODO -@extend_schema_view(retrieve=extend_schema( - summary='Method returns details of an invitation', - responses={ - '200': InvitationReadSerializer, - }, tags=['invitations'], versions=['2.0'])) -@extend_schema_view(list=extend_schema( - summary='Method returns a paginated list of invitations according to query parameters', - responses={ - '200': InvitationReadSerializer(many=True), - }, tags=['invitations'], versions=['2.0'])) -@extend_schema_view(update=extend_schema( - summary='Method updates an invitation by id', - responses={ - '200': InvitationWriteSerializer, - }, tags=['invitations'], versions=['2.0'])) -@extend_schema_view(partial_update=extend_schema( - summary='Methods does a partial update of chosen fields in an invitation', - responses={ - '200': InvitationWriteSerializer, - }, tags=['invitations'], versions=['2.0'])) -@extend_schema_view(create=extend_schema( - summary='Method creates an invitation', - responses={ - '201': InvitationWriteSerializer, - }, tags=['invitations'], versions=['2.0'])) -@extend_schema_view(destroy=extend_schema( - summary='Method deletes an invitation', - responses={ - '204': OpenApiResponse(description='The invitation has been deleted'), - }, tags=['invitations'], versions=['2.0'])) +@extend_schema(tags=['invitations']) +@extend_schema_view( + retrieve=extend_schema( + summary='Method returns details of an invitation', + responses={ + '200': InvitationReadSerializer, + }), + list=extend_schema( + summary='Method returns a paginated list of invitations according to query parameters', + responses={ + '200': InvitationReadSerializer(many=True), + }), + update=extend_schema( + summary='Method updates an invitation by id', + responses={ + '200': InvitationWriteSerializer, + }), + partial_update=extend_schema( + summary='Methods does a partial update of chosen fields in an invitation', + responses={ + '200': InvitationWriteSerializer, + }), + create=extend_schema( + summary='Method creates an invitation', + responses={ + '201': InvitationWriteSerializer, + }), + destroy=extend_schema( + summary='Method deletes an invitation', + responses={ + '204': OpenApiResponse(description='The invitation has been deleted'), + }) +) class InvitationViewSet(viewsets.ModelViewSet): queryset = Invitation.objects.all() ordering = ['-created_date'] diff --git a/cvat/apps/restrictions/views.py b/cvat/apps/restrictions/views.py index 9b239f8c123d..059f4bfb5dd7 100644 --- a/cvat/apps/restrictions/views.py +++ b/cvat/apps/restrictions/views.py @@ -13,6 +13,7 @@ from cvat.apps.restrictions.serializers import UserAgreementSerializer +@extend_schema(tags=['restrictions']) class RestrictionsViewSet(viewsets.ViewSet): serializer_class = None permission_classes = [AllowAny] @@ -26,8 +27,7 @@ def get_serializer(self, *args, **kwargs): @staticmethod @extend_schema(summary='Method provides user agreements that the user must accept to register', - responses={'200': UserAgreementSerializer}, - tags=['restrictions'], versions=['2.0']) + responses={'200': UserAgreementSerializer}) @action(detail=False, methods=['GET'], serializer_class=UserAgreementSerializer, url_path='user-agreements') def user_agreements(request): user_agreements = settings.RESTRICTIONS['user_agreements'] @@ -37,8 +37,7 @@ def user_agreements(request): @staticmethod @extend_schema(summary='Method provides CVAT terms of use', - responses={'200': OpenApiResponse(description='CVAT terms of use')}, - tags=['restrictions'], versions=['2.0']) + responses={'200': OpenApiResponse(description='CVAT terms of use')}) @action(detail=False, methods=['GET'], renderer_classes=(TemplateHTMLRenderer,), url_path='terms-of-use') def terms_of_use(request): From 24a80f02364526d27f0e8abaa4d6d2f78b1ebad6 Mon Sep 17 00:00:00 2001 From: Maya Date: Mon, 14 Mar 2022 12:30:47 +0300 Subject: [PATCH 4/4] Fix merge --- cvat/apps/engine/views.py | 46 +------------------------------- cvat/apps/organizations/views.py | 2 +- 2 files changed, 2 insertions(+), 46 deletions(-) diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index 1929082ce02c..cca75503baaf 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -1,4 +1,4 @@ -# Copyright (C) 2018-2021 Intel Corporation +# Copyright (C) 2018-2022 Intel Corporation # # SPDX-License-Identifier: MIT @@ -223,18 +223,6 @@ def plugins(request): @extend_schema_view( list=extend_schema( summary='Returns a paginated list of projects according to query parameters (12 projects per page)', - parameters=[ - OpenApiParameter('id', description='A unique number value identifying this project', - location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), - OpenApiParameter('name', description='Find all projects where name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('owner', description='Find all project where owner name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('status', description='Find all projects with a specific status', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=StatusChoice.list()), - OpenApiParameter('names_only', description="Returns only names and id's of projects", - location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL) - ], responses={ '200': PolymorphicProxySerializer(component_name='PolymorphicProject', serializers=[ @@ -545,20 +533,6 @@ def __call__(self, request, start, stop, db_data): @extend_schema_view( list=extend_schema( summary='Returns a paginated list of tasks according to query parameters (10 tasks per page)', - parameters=[ - OpenApiParameter('id', description='A unique number value identifying this task', - location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), - OpenApiParameter('name', description='Find all tasks where name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('owner', description='Find all tasks where owner name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('mode', description='Find all tasks with a specific mode', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=['annotation', 'interpolation']), - OpenApiParameter('status', description='Find all tasks with a specific status', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=StatusChoice.list()), - OpenApiParameter('assignee', description='Find all tasks where assignee name contains a parameter value', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR) - ], responses={ '200': TaskSerializer(many=True), }), @@ -1329,12 +1303,6 @@ def perform_create(self, serializer): @extend_schema_view( list=extend_schema( summary='Method provides a paginated list of users registered on the server', - parameters=[ - OpenApiParameter('id', description='A unique number value identifying this user', - location=OpenApiParameter.QUERY, type=OpenApiTypes.NUMBER), - OpenApiParameter('is_active', description='Returns only active users', - location=OpenApiParameter.QUERY, type=OpenApiTypes.BOOL), - ], responses={ '200': PolymorphicProxySerializer(component_name='MetaUser', serializers=[ @@ -1419,18 +1387,6 @@ def self(self, request): }), list=extend_schema( summary='Returns a paginated list of storages according to query parameters', - parameters=[ - OpenApiParameter('provider_type', description='A supported provider of cloud storages', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=CloudProviderChoice.list()), - OpenApiParameter('display_name', description='A display name of storage', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('resource', description='A name of bucket or container', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('owner', description='A resource owner', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR), - OpenApiParameter('credentials_type', description='A type of a granting access', - location=OpenApiParameter.QUERY, type=OpenApiTypes.STR, enum=CredentialsTypeChoice.list()), - ], responses={ '200': CloudStorageReadSerializer(many=True), }), diff --git a/cvat/apps/organizations/views.py b/cvat/apps/organizations/views.py index f14362ef9b20..6065810cbd4a 100644 --- a/cvat/apps/organizations/views.py +++ b/cvat/apps/organizations/views.py @@ -1,4 +1,4 @@ -# Copyright (C) 2021 Intel Corporation +# Copyright (C) 2021-2022 Intel Corporation # # SPDX-License-Identifier: MIT