From 441b1d41c2b601dd35b15de9d4ed1e20b09606e1 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 28 Nov 2020 02:41:22 +0000 Subject: [PATCH 1/8] fix: upgrade @types/react from 16.9.55 to 16.9.56 Snyk has created this PR to upgrade @types/react from 16.9.55 to 16.9.56. See this package in npm: https://www.npmjs.com/package/@types/react See this project in Snyk: https://app.snyk.io/org/cvat/project/c1f463ee-3776-44c4-b0fa-cd2254d0a094?utm_source=github&utm_medium=upgrade-pr --- cvat-ui/package-lock.json | 6 +++--- cvat-ui/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 57d3d329..8635a3d2 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1213,9 +1213,9 @@ "dev": true }, "@types/react": { - "version": "16.9.55", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.55.tgz", - "integrity": "sha512-6KLe6lkILeRwyyy7yG9rULKJ0sXplUsl98MGoCfpteXf9sPWFWWMknDcsvubcpaTdBuxtsLF6HDUwdApZL/xIg==", + "version": "16.9.56", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.56.tgz", + "integrity": "sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ==", "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 1168766d..1df9761f 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -49,7 +49,7 @@ "dependencies": { "@types/lodash": "^4.14.165", "@types/platform": "^1.3.3", - "@types/react": "^16.9.55", + "@types/react": "^16.9.56", "@types/react-color": "^3.0.4", "@types/react-dom": "^16.9.9", "@types/react-redux": "^7.1.11", From 0c4f8882e1c4f709f8f9ad6ca7090b0d2d94e612 Mon Sep 17 00:00:00 2001 From: Dmitry Kalinin Date: Mon, 30 Nov 2020 13:16:23 +0300 Subject: [PATCH 2/8] Fixed projects layout --- .../components/projects-page/project-list.tsx | 31 +++++++++++++------ .../src/components/projects-page/styles.scss | 4 +-- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/cvat-ui/src/components/projects-page/project-list.tsx b/cvat-ui/src/components/projects-page/project-list.tsx index 944e4faa..134286be 100644 --- a/cvat-ui/src/components/projects-page/project-list.tsx +++ b/cvat-ui/src/components/projects-page/project-list.tsx @@ -15,7 +15,7 @@ export default function ProjectListComponent(): JSX.Element { const dispatch = useDispatch(); const projectsCount = useSelector((state: CombinedState) => state.projects.count); const { page } = useSelector((state: CombinedState) => state.projects.gettingQuery); - const projectInstances = useSelector((state: CombinedState) => state.projects.current); + let projectInstances = useSelector((state: CombinedState) => state.projects.current); const gettingQuery = useSelector((state: CombinedState) => state.projects.gettingQuery); function changePage(p: number): void { @@ -27,19 +27,30 @@ export default function ProjectListComponent(): JSX.Element { ); } + projectInstances = projectInstances.reduce((rows, key, index) => { + if (index % 4 === 0) { + rows.push([key]); + } else { + rows[rows.length - 1].push(key); + } + return rows; + }, []); + return ( <> - - {projectInstances.map( - (instance: any): JSX.Element => ( - - - - ), - )} - + {projectInstances.map( + (row: any[]): JSX.Element => ( + + {row.map((instance: any) => ( + + + + ))} + + ), + )} diff --git a/cvat-ui/src/components/projects-page/styles.scss b/cvat-ui/src/components/projects-page/styles.scss index 9b113de4..44fb6615 100644 --- a/cvat-ui/src/components/projects-page/styles.scss +++ b/cvat-ui/src/components/projects-page/styles.scss @@ -109,11 +109,11 @@ .cvat-projects-project-item-card { .ant-empty { margin: $grid-unit-size; + height: $grid-unit-size * 16; } img { - height: 100%; - max-height: $grid-unit-size * 18; + height: $grid-unit-size * 18; object-fit: cover; } } From c61402522ed2ac8771a9bf2a185a79dae839074f Mon Sep 17 00:00:00 2001 From: Dmitry Kalinin Date: Mon, 30 Nov 2020 13:22:28 +0300 Subject: [PATCH 3/8] Added CHANGELOG and npm version --- CHANGELOG.md | 1 + cvat-ui/package-lock.json | 2 +- cvat-ui/package.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4395462..987b5f11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Exception: "Value must be a user instance" () - Reset zoom option doesn't work in tag annotation mode () - Canvas is busy error () +- Projects view layout fix () ### Security diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 57d3d329..5063901f 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.10.7", + "version": "1.10.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 1168766d..135d15f0 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.10.7", + "version": "1.10.8", "description": "CVAT single-page application", "main": "src/index.tsx", "scripts": { From 3e336237ab030331c137f1533b26df826d9ae8b2 Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Mon, 30 Nov 2020 14:30:18 +0300 Subject: [PATCH 4/8] fixed getTaskPreview exception handling, slightly improved the backend exception handling --- cvat-ui/src/actions/tasks-actions.ts | 2 +- cvat/apps/engine/views.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/cvat-ui/src/actions/tasks-actions.ts b/cvat-ui/src/actions/tasks-actions.ts index bf1ba2e4..349cd880 100644 --- a/cvat-ui/src/actions/tasks-actions.ts +++ b/cvat-ui/src/actions/tasks-actions.ts @@ -93,7 +93,7 @@ export function getTasksAsync(query: TasksQuery): ThunkAction, {}, } const array = Array.from(result); - const promises = array.map((task): string => (task as any).frames.preview().catch('')); + const promises = array.map((task): string => (task as any).frames.preview().catch(() => '')); dispatch(getInferenceStatusAsync()); diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index e8b14daf..aec2f88a 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -25,7 +25,7 @@ from drf_yasg.inspectors import CoreAPICompatInspector, NotHandled from drf_yasg.utils import swagger_auto_schema from rest_framework import mixins, serializers, status, viewsets from rest_framework.decorators import action -from rest_framework.exceptions import APIException +from rest_framework.exceptions import APIException, NotFound, ValidationError from rest_framework.permissions import SAFE_METHODS, IsAuthenticated from rest_framework.renderers import JSONRenderer from rest_framework.response import Response @@ -427,16 +427,19 @@ class TaskViewSet(auth.TaskGetQuerySetMixin, viewsets.ModelViewSet): possible_quality_values = ('compressed', 'original') if not data_type or data_type not in possible_data_type_values: - return Response(data='data type not specified or has wrong value', status=status.HTTP_400_BAD_REQUEST) + raise ValidationError(detail='Data type not specified or has wrong value') elif data_type == 'chunk' or data_type == 'frame': if not data_id: - return Response(data='number not specified', status=status.HTTP_400_BAD_REQUEST) + raise ValidationError(detail='Number not specified') elif data_quality not in possible_quality_values: - return Response(data='wrong quality value', status=status.HTTP_400_BAD_REQUEST) + raise ValidationError(detail='Wrong quality value') try: db_task = self.get_object() db_data = db_task.data + if not db_data: + raise NotFound(detail='Cannot find requested data for the task') + frame_provider = FrameProvider(db_task.data) if data_type == 'chunk': @@ -468,7 +471,7 @@ class TaskViewSet(auth.TaskGetQuerySetMixin, viewsets.ModelViewSet): else: return Response(data='unknown data type {}.'.format(data_type), status=status.HTTP_400_BAD_REQUEST) except APIException as e: - return Response(data=e.default_detail, status=e.status_code) + return Response(data=e.get_full_details(), status=e.status_code) except Exception as e: msg = 'cannot get requested data type: {}, number: {}, quality: {}'.format(data_type, data_id, data_quality) slogger.task[pk].error(msg, exc_info=True) From b40da653b38b58c2f8640ce75b1ddb6d0e03e97c Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Mon, 30 Nov 2020 14:38:46 +0300 Subject: [PATCH 5/8] npm version++ --- cvat-ui/package-lock.json | 2 +- cvat-ui/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 5063901f..9fd70cc3 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.10.8", + "version": "1.10.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 135d15f0..e555f248 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.10.8", + "version": "1.10.9", "description": "CVAT single-page application", "main": "src/index.tsx", "scripts": { From 94a0c0d4837187e9f889f5c536a762b61841ae6c Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Mon, 30 Nov 2020 14:44:34 +0300 Subject: [PATCH 6/8] Fixed empty frames navigation --- cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx b/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx index 5a7a40fc..1d12a1db 100644 --- a/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx +++ b/cvat-ui/src/containers/annotation-page/top-bar/top-bar.tsx @@ -446,9 +446,9 @@ class AnnotationTopBarContainer extends React.PureComponent { } private searchEmptyFrame(start: number, stop: number): void { - const { canvasInstance, jobInstance, searchAnnotations } = this.props; + const { canvasInstance, jobInstance, searchEmptyFrame } = this.props; if (canvasInstance.isAbleToChangeFrame()) { - searchAnnotations(jobInstance, start, stop); + searchEmptyFrame(jobInstance, start, stop); } } From f4eb7dfb8e217801310f079d2fd577e04df51f9b Mon Sep 17 00:00:00 2001 From: Boris Sekachev Date: Mon, 30 Nov 2020 14:47:31 +0300 Subject: [PATCH 7/8] Updated changelog & version --- CHANGELOG.md | 1 + cvat-ui/package-lock.json | 2 +- cvat-ui/package.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 987b5f11..28037cd0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reset zoom option doesn't work in tag annotation mode () - Canvas is busy error () - Projects view layout fix () +- Empty frames navigation () ### Security diff --git a/cvat-ui/package-lock.json b/cvat-ui/package-lock.json index 5063901f..9fd70cc3 100644 --- a/cvat-ui/package-lock.json +++ b/cvat-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.10.8", + "version": "1.10.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/cvat-ui/package.json b/cvat-ui/package.json index 135d15f0..e555f248 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.10.8", + "version": "1.10.9", "description": "CVAT single-page application", "main": "src/index.tsx", "scripts": { From b40863f1a30a754f10531ecd119ab2795998cb45 Mon Sep 17 00:00:00 2001 From: Andrey Zhavoronkov Date: Mon, 30 Nov 2020 14:40:34 +0300 Subject: [PATCH 8/8] updated changelog --- CHANGELOG.md | 1 + cvat/apps/engine/views.py | 16 ++++++++-------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 987b5f11..82897f74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Reset zoom option doesn't work in tag annotation mode () - Canvas is busy error () - Projects view layout fix () +- Fixed the tasks view (infinite loading) when it is impossible to get a preview of the task () ### Security diff --git a/cvat/apps/engine/views.py b/cvat/apps/engine/views.py index aec2f88a..e6d1745e 100644 --- a/cvat/apps/engine/views.py +++ b/cvat/apps/engine/views.py @@ -426,15 +426,15 @@ class TaskViewSet(auth.TaskGetQuerySetMixin, viewsets.ModelViewSet): possible_data_type_values = ('chunk', 'frame', 'preview') possible_quality_values = ('compressed', 'original') - if not data_type or data_type not in possible_data_type_values: - raise ValidationError(detail='Data type not specified or has wrong value') - elif data_type == 'chunk' or data_type == 'frame': - if not data_id: - raise ValidationError(detail='Number not specified') - elif data_quality not in possible_quality_values: - raise ValidationError(detail='Wrong quality value') - try: + if not data_type or data_type not in possible_data_type_values: + raise ValidationError(detail='Data type not specified or has wrong value') + elif data_type == 'chunk' or data_type == 'frame': + if not data_id: + raise ValidationError(detail='Number is not specified') + elif data_quality not in possible_quality_values: + raise ValidationError(detail='Wrong quality value') + db_task = self.get_object() db_data = db_task.data if not db_data: