Z-Order flag in creation task process (#2294)

* Z-Order flag in creation task process has been removed
main
Vitaliy Nishukov 5 years ago committed by GitHub
parent 2dcb9056e0
commit 00f6486f80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [1.2.0] - Unreleased ## [1.2.0] - Unreleased
### Added ### Added
- Removed Z-Order flag from task creation process
- Ability to login into CVAT-UI with token from api/v1/auth/login (<https://github.com/openvinotoolkit/cvat/pull/2234>) - Ability to login into CVAT-UI with token from api/v1/auth/login (<https://github.com/openvinotoolkit/cvat/pull/2234>)
- Added layout grids toggling ('ctrl + alt + Enter') - Added layout grids toggling ('ctrl + alt + Enter')
- Added password reset functionality (<https://github.com/opencv/cvat/pull/2058>) - Added password reset functionality (<https://github.com/opencv/cvat/pull/2058>)

@ -1,6 +1,6 @@
{ {
"name": "cvat-core", "name": "cvat-core",
"version": "3.8.0", "version": "3.8.1",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

@ -1,6 +1,6 @@
{ {
"name": "cvat-core", "name": "cvat-core",
"version": "3.8.0", "version": "3.8.1",
"description": "Part of Computer Vision Tool which presents an interface for client-side integration", "description": "Part of Computer Vision Tool which presents an interface for client-side integration",
"main": "babel.config.js", "main": "babel.config.js",
"scripts": { "scripts": {

@ -824,7 +824,6 @@
* <br> <li style="margin-left: 10px;"> name * <br> <li style="margin-left: 10px;"> name
* <br> <li style="margin-left: 10px;"> assignee * <br> <li style="margin-left: 10px;"> assignee
* <br> <li style="margin-left: 10px;"> bug_tracker * <br> <li style="margin-left: 10px;"> bug_tracker
* <br> <li style="margin-left: 10px;"> z_order
* <br> <li style="margin-left: 10px;"> labels * <br> <li style="margin-left: 10px;"> labels
* <br> <li style="margin-left: 10px;"> segment_size * <br> <li style="margin-left: 10px;"> segment_size
* <br> <li style="margin-left: 10px;"> overlap * <br> <li style="margin-left: 10px;"> overlap
@ -844,7 +843,6 @@
bug_tracker: undefined, bug_tracker: undefined,
overlap: undefined, overlap: undefined,
segment_size: undefined, segment_size: undefined,
z_order: undefined,
image_quality: undefined, image_quality: undefined,
start_frame: undefined, start_frame: undefined,
stop_frame: undefined, stop_frame: undefined,
@ -1055,24 +1053,6 @@
data.segment_size = segment; data.segment_size = segment;
}, },
}, },
/**
* @name zOrder
* @type {boolean}
* @memberof module:API.cvat.classes.Task
* @instance
* @throws {module:API.cvat.exceptions.ArgumentError}
*/
zOrder: {
get: () => data.z_order,
set: (zOrder) => {
if (typeof (zOrder) !== 'boolean') {
throw new ArgumentError(
'Value must be a boolean',
);
}
data.z_order = zOrder;
},
},
/** /**
* @name imageQuality * @name imageQuality
* @type {integer} * @type {integer}
@ -1700,7 +1680,6 @@
assignee: this.assignee ? this.assignee.id : null, assignee: this.assignee ? this.assignee.id : null,
name: this.name, name: this.name,
bug_tracker: this.bugTracker, bug_tracker: this.bugTracker,
z_order: this.zOrder,
labels: [...this.labels.map((el) => el.toJSON())], labels: [...this.labels.map((el) => el.toJSON())],
}; };
@ -1711,7 +1690,6 @@
const taskSpec = { const taskSpec = {
name: this.name, name: this.name,
labels: this.labels.map((el) => el.toJSON()), labels: this.labels.map((el) => el.toJSON()),
z_order: Boolean(this.zOrder),
}; };
if (typeof (this.bugTracker) !== 'undefined') { if (typeof (this.bugTracker) !== 'undefined') {

@ -98,7 +98,6 @@ describe('Feature: save a task', () => {
}); });
result[0].bugTracker = 'newBugTracker'; result[0].bugTracker = 'newBugTracker';
result[0].zOrder = true;
result[0].name = 'New Task Name'; result[0].name = 'New Task Name';
result[0].save(); result[0].save();
@ -108,7 +107,6 @@ describe('Feature: save a task', () => {
}); });
expect(result[0].bugTracker).toBe('newBugTracker'); expect(result[0].bugTracker).toBe('newBugTracker');
expect(result[0].zOrder).toBe(true);
expect(result[0].name).toBe('New Task Name'); expect(result[0].name).toBe('New Task Name');
}); });
@ -161,7 +159,6 @@ describe('Feature: save a task', () => {
}], }],
bug_tracker: 'bug tracker value', bug_tracker: 'bug tracker value',
image_quality: 50, image_quality: 50,
z_order: true,
}); });
const result = await task.save(); const result = await task.save();

@ -165,7 +165,6 @@ const tasksDummyData = {
"updated_date": "2019-09-05T14:04:07.569344Z", "updated_date": "2019-09-05T14:04:07.569344Z",
"overlap": 0, "overlap": 0,
"segment_size": 0, "segment_size": 0,
"z_order": false,
"status": "annotation", "status": "annotation",
"labels": [{ "labels": [{
"id": 5, "id": 5,
@ -199,7 +198,6 @@ const tasksDummyData = {
"updated_date": "2019-07-16T15:51:29.142871+03:00", "updated_date": "2019-07-16T15:51:29.142871+03:00",
"overlap": 0, "overlap": 0,
"segment_size": 0, "segment_size": 0,
"z_order": false,
"status": "annotation", "status": "annotation",
"labels": [ "labels": [
{ {
@ -249,7 +247,6 @@ const tasksDummyData = {
"updated_date": "2019-07-12T16:43:58.904892+03:00", "updated_date": "2019-07-12T16:43:58.904892+03:00",
"overlap": 5, "overlap": 5,
"segment_size": 500, "segment_size": 500,
"z_order": false,
"status": "annotation", "status": "annotation",
"labels": [ "labels": [
{ {
@ -625,7 +622,6 @@ const tasksDummyData = {
"updated_date": "2019-05-16T13:08:00.621797+03:00", "updated_date": "2019-05-16T13:08:00.621797+03:00",
"overlap": 5, "overlap": 5,
"segment_size": 5000, "segment_size": 5000,
"z_order": true,
"flipped": false, "flipped": false,
"status": "annotation", "status": "annotation",
"labels": [ "labels": [
@ -889,7 +885,6 @@ const tasksDummyData = {
"updated_date": "2019-05-15T16:58:27.992785+03:00", "updated_date": "2019-05-15T16:58:27.992785+03:00",
"overlap": 5, "overlap": 5,
"segment_size": 0, "segment_size": 0,
"z_order": false,
"flipped": false, "flipped": false,
"status": "annotation", "status": "annotation",
"labels": [ "labels": [
@ -1141,7 +1136,6 @@ const tasksDummyData = {
"updated_date": "2019-05-15T11:20:55.770587+03:00", "updated_date": "2019-05-15T11:20:55.770587+03:00",
"overlap": 0, "overlap": 0,
"segment_size": 0, "segment_size": 0,
"z_order": true,
"flipped": false, "flipped": false,
"status": "annotation", "status": "annotation",
"labels": [ "labels": [

@ -125,7 +125,6 @@ class ServerProxy {
updated_date: '2019-05-16T13:08:00.621797+03:00', updated_date: '2019-05-16T13:08:00.621797+03:00',
overlap: taskData.overlap ? taskData.overlap : 5, overlap: taskData.overlap ? taskData.overlap : 5,
segment_size: taskData.segment_size ? taskData.segment_size : 5000, segment_size: taskData.segment_size ? taskData.segment_size : 5000,
z_order: taskData.z_order,
flipped: false, flipped: false,
status: 'annotation', status: 'annotation',
image_quality: taskData.image_quality, image_quality: taskData.image_quality,

@ -1,6 +1,6 @@
{ {
"name": "cvat-ui", "name": "cvat-ui",
"version": "1.9.13", "version": "1.9.14",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

@ -1,6 +1,6 @@
{ {
"name": "cvat-ui", "name": "cvat-ui",
"version": "1.9.13", "version": "1.9.14",
"description": "CVAT single-page application", "description": "CVAT single-page application",
"main": "src/index.tsx", "main": "src/index.tsx",
"scripts": { "scripts": {

@ -383,7 +383,6 @@ ThunkAction<Promise<void>, {}, {}, AnyAction> {
const description: any = { const description: any = {
name: data.basic.name, name: data.basic.name,
labels: data.labels, labels: data.labels,
z_order: data.advanced.zOrder,
image_quality: 70, image_quality: 70,
use_zip_chunks: data.advanced.useZipChunks, use_zip_chunks: data.advanced.useZipChunks,
use_cache: data.advanced.useCache, use_cache: data.advanced.useCache,

@ -19,7 +19,6 @@ interface Props {
assignee: string; assignee: string;
startFrame: number; startFrame: number;
stopFrame: number; stopFrame: number;
zOrder: boolean;
bugTracker: string; bugTracker: string;
jobStatus: string; jobStatus: string;
savingJobStatus: boolean; savingJobStatus: boolean;
@ -36,7 +35,6 @@ export default function StatisticsModalComponent(props: Props): JSX.Element {
assignee, assignee,
startFrame, startFrame,
stopFrame, stopFrame,
zOrder,
bugTracker, bugTracker,
closeStatistics, closeStatistics,
changeJobStatus, changeJobStatus,
@ -171,10 +169,6 @@ export default function StatisticsModalComponent(props: Props): JSX.Element {
<Text strong className='cvat-text'>Frames</Text> <Text strong className='cvat-text'>Frames</Text>
<Text className='cvat-text'>{stopFrame - startFrame + 1}</Text> <Text className='cvat-text'>{stopFrame - startFrame + 1}</Text>
</Col> </Col>
<Col span={4}>
<Text strong className='cvat-text'>Z-Order</Text>
<Text className='cvat-text'>{zOrder.toString()}</Text>
</Col>
</Row> </Row>
{ !!bugTracker && ( { !!bugTracker && (
<Row type='flex' justify='start' className='cvat-job-info-bug-tracker'> <Row type='flex' justify='start' className='cvat-job-info-bug-tracker'>

@ -15,7 +15,6 @@ import patterns from 'utils/validation-patterns';
export interface AdvancedConfiguration { export interface AdvancedConfiguration {
bugTracker?: string; bugTracker?: string;
zOrder: boolean;
imageQuality?: number; imageQuality?: number;
overlapSize?: number; overlapSize?: number;
segmentSize?: number; segmentSize?: number;
@ -115,22 +114,6 @@ class AdvancedConfigurationForm extends React.PureComponent<Props> {
form.resetFields(); form.resetFields();
} }
private renderZOrder(): JSX.Element {
const { form } = this.props;
return (
<Form.Item help='Enables order for shapes. Useful for segmentation tasks'>
{form.getFieldDecorator('zOrder', {
initialValue: false,
valuePropName: 'checked',
})(
<Checkbox>
<Text className='cvat-text-color'>Z-order</Text>
</Checkbox>,
)}
</Form.Item>
);
}
private renderImageQuality(): JSX.Element { private renderImageQuality(): JSX.Element {
const { form } = this.props; const { form } = this.props;
@ -407,10 +390,6 @@ class AdvancedConfigurationForm extends React.PureComponent<Props> {
return ( return (
<Form> <Form>
<Row>
<Col>{this.renderZOrder()}</Col>
</Row>
<Row> <Row>
<Col>{this.renderUzeZipChunks()}</Col> <Col>{this.renderUzeZipChunks()}</Col>
</Row> </Row>

@ -39,7 +39,6 @@ const defaultState = {
name: '', name: '',
}, },
advanced: { advanced: {
zOrder: false,
lfs: false, lfs: false,
useZipChunks: true, useZipChunks: true,
useCache: true, useCache: true,

@ -163,7 +163,6 @@ export default class DetailsComponent extends React.PureComponent<Props, State>
private renderParameters(): JSX.Element { private renderParameters(): JSX.Element {
const { taskInstance } = this.props; const { taskInstance } = this.props;
const { overlap, segmentSize, imageQuality } = taskInstance; const { overlap, segmentSize, imageQuality } = taskInstance;
const zOrder = taskInstance.zOrder.toString();
return ( return (
<> <>
@ -185,11 +184,6 @@ export default class DetailsComponent extends React.PureComponent<Props, State>
<br /> <br />
<Text className='cvat-text-color'>{imageQuality}</Text> <Text className='cvat-text-color'>{imageQuality}</Text>
</Col> </Col>
<Col span={12}>
<Text strong className='cvat-text-color'>Z-order</Text>
<br />
<Text className='cvat-text-color'>{zOrder}</Text>
</Col>
</Row> </Row>
</> </>
); );

@ -147,7 +147,6 @@ class TaskData:
("start_frame", str(self._db_task.data.start_frame)), ("start_frame", str(self._db_task.data.start_frame)),
("stop_frame", str(self._db_task.data.stop_frame)), ("stop_frame", str(self._db_task.data.stop_frame)),
("frame_filter", self._db_task.data.frame_filter), ("frame_filter", self._db_task.data.frame_filter),
("z_order", str(self._db_task.z_order)),
("labels", [ ("labels", [
("label", OrderedDict([ ("label", OrderedDict([

@ -229,8 +229,7 @@ def dump_as_cvat_annotation(file_object, annotations):
)), )),
])) ]))
if annotations.meta["task"]["z_order"] != "False": dump_data['z_order'] = str(shape.z_order)
dump_data['z_order'] = str(shape.z_order)
if shape.group: if shape.group:
dump_data['group_id'] = str(shape.group) dump_data['group_id'] = str(shape.group)
@ -343,8 +342,7 @@ def dump_as_cvat_interpolation(file_object, annotations):
for x,y in pairwise(shape.points)])) for x,y in pairwise(shape.points)]))
])) ]))
if annotations.meta["task"]["z_order"] != "False": dump_data["z_order"] = str(shape.z_order)
dump_data["z_order"] = str(shape.z_order)
if shape.type == "rectangle": if shape.type == "rectangle":
dumper.open_box(dump_data) dumper.open_box(dump_data)

@ -222,7 +222,6 @@ class TaskExportTest(_DbTestBase):
"assignee": '', "assignee": '',
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"labels": [ "labels": [
{ {
"name": "car", "name": "car",
@ -429,7 +428,6 @@ class FrameMatchingTest(_DbTestBase):
"assignee": '', "assignee": '',
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"labels": [ "labels": [
{ {
"name": "car", "name": "car",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 97 KiB

@ -150,8 +150,6 @@ Go to the [Django administration panel](http://localhost:8080/admin). There you
![](static/documentation/images/image128_use_cache.jpg) ![](static/documentation/images/image128_use_cache.jpg)
**Z-Order**. Defines the order on drawn polygons. Check the box for enable layered displaying.
**Use zip chunks**. Force to use zip chunks as compressed data. Actual for videos only. **Use zip chunks**. Force to use zip chunks as compressed data. Actual for videos only.
**Use cache**. Defines how to work with data. Select the checkbox to switch to the "on-the-fly data processing", **Use cache**. Defines how to work with data. Select the checkbox to switch to the "on-the-fly data processing",
@ -760,7 +758,6 @@ _Overview_:
- ``Start Frame`` - the number of the first frame in this job. - ``Start Frame`` - the number of the first frame in this job.
- ``End Frame`` - the number of the last frame in this job. - ``End Frame`` - the number of the last frame in this job.
- ``Frames`` - the total number of all frames in the job. - ``Frames`` - the total number of all frames in the job.
- ``Z-Order`` - z-order enable indicator.
_Annotations statistics_: _Annotations statistics_:
@ -1087,7 +1084,6 @@ Press ``Esc`` to cancel editing.
It is used for semantic / instance segmentation. It is used for semantic / instance segmentation.
If you want to annotate polygons, make sure the ``Z-Order`` flag in ``Create new task`` dialog is enabled.
The Z-Order flag defines the order of drawing. It is necessary to The Z-Order flag defines the order of drawing. It is necessary to
get the right annotation mask without extra work (additional drawing of borders). get the right annotation mask without extra work (additional drawing of borders).
Z-Order can be changed by pressing ``+``/``-`` which set maximum/minimum z-order Z-Order can be changed by pressing ``+``/``-`` which set maximum/minimum z-order
@ -1571,4 +1567,4 @@ Many UI elements have shortcut hints. Put your pointer to a required element to
| ``Down Arrow`` | Go to the next attribute (down) | | ``Down Arrow`` | Go to the next attribute (down) |
| ``Tab`` | Go to the next annotated object in current frame | | ``Tab`` | Go to the next annotated object in current frame |
| ``Shift+Tab`` | Go to the previous annotated object in current frame | | ``Shift+Tab`` | Go to the previous annotated object in current frame |
| ``<number>`` | Assign a corresponding value to the current attribute | | ``<number>`` | Assign a corresponding value to the current attribute |

@ -0,0 +1,17 @@
# Generated by Django 3.1.1 on 2020-10-12 17:16
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('engine', '0031_auto_20201011_0220'),
]
operations = [
migrations.RemoveField(
model_name='task',
name='z_order',
),
]

@ -171,7 +171,6 @@ class Task(models.Model):
overlap = models.PositiveIntegerField(null=True) overlap = models.PositiveIntegerField(null=True)
# Zero means that there are no limits (default) # Zero means that there are no limits (default)
segment_size = models.PositiveIntegerField(default=0) segment_size = models.PositiveIntegerField(default=0)
z_order = models.BooleanField(default=False)
status = models.CharField(max_length=32, choices=StatusChoice.choices(), status = models.CharField(max_length=32, choices=StatusChoice.choices(),
default=StatusChoice.ANNOTATION) default=StatusChoice.ANNOTATION)
data = models.ForeignKey(Data, on_delete=models.CASCADE, null=True, related_name="tasks") data = models.ForeignKey(Data, on_delete=models.CASCADE, null=True, related_name="tasks")

@ -244,7 +244,7 @@ class TaskSerializer(WriteOnceMixin, serializers.ModelSerializer):
model = models.Task model = models.Task
fields = ('url', 'id', 'name', 'mode', 'owner', 'assignee', fields = ('url', 'id', 'name', 'mode', 'owner', 'assignee',
'bug_tracker', 'created_date', 'updated_date', 'overlap', 'bug_tracker', 'created_date', 'updated_date', 'overlap',
'segment_size', 'z_order', 'status', 'labels', 'segments', 'segment_size', 'status', 'labels', 'segments',
'project', 'data_chunk_size', 'data_compressed_chunk_type', 'data_original_chunk_type', 'size', 'image_quality', 'data') 'project', 'data_chunk_size', 'data_compressed_chunk_type', 'data_original_chunk_type', 'size', 'image_quality', 'data')
read_only_fields = ('mode', 'created_date', 'updated_date', 'status', 'data_chunk_size', read_only_fields = ('mode', 'created_date', 'updated_date', 'status', 'data_chunk_size',
'data_compressed_chunk_type', 'data_original_chunk_type', 'size', 'image_quality', 'data') 'data_compressed_chunk_type', 'data_original_chunk_type', 'size', 'image_quality', 'data')
@ -282,7 +282,6 @@ class TaskSerializer(WriteOnceMixin, serializers.ModelSerializer):
instance.assignee = validated_data.get('assignee', instance.assignee) instance.assignee = validated_data.get('assignee', instance.assignee)
instance.bug_tracker = validated_data.get('bug_tracker', instance.bug_tracker = validated_data.get('bug_tracker',
instance.bug_tracker) instance.bug_tracker)
instance.z_order = validated_data.get('z_order', instance.z_order)
instance.project = validated_data.get('project', instance.project) instance.project = validated_data.get('project', instance.project)
labels = validated_data.get('label_set', []) labels = validated_data.get('label_set', [])
for label in labels: for label in labels:
@ -496,4 +495,4 @@ class LogEventSerializer(serializers.Serializer):
is_active = serializers.BooleanField() is_active = serializers.BooleanField()
class AnnotationFileSerializer(serializers.Serializer): class AnnotationFileSerializer(serializers.Serializer):
annotation_file = serializers.FileField() annotation_file = serializers.FileField()

@ -103,7 +103,6 @@ def create_dummy_db_tasks(obj, project=None):
"assignee": obj.assignee, "assignee": obj.assignee,
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"image_quality": 75, "image_quality": 75,
"size": 100, "size": 100,
"project": project "project": project
@ -116,7 +115,6 @@ def create_dummy_db_tasks(obj, project=None):
"owner": obj.user, "owner": obj.user,
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": True,
"image_quality": 50, "image_quality": 50,
"size": 200, "size": 200,
"project": project "project": project
@ -130,7 +128,6 @@ def create_dummy_db_tasks(obj, project=None):
"assignee": obj.assignee, "assignee": obj.assignee,
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"image_quality": 75, "image_quality": 75,
"size": 100, "size": 100,
"project": project "project": project
@ -143,7 +140,6 @@ def create_dummy_db_tasks(obj, project=None):
"owner": obj.admin, "owner": obj.admin,
"overlap": 0, "overlap": 0,
"segment_size": 50, "segment_size": 50,
"z_order": False,
"image_quality": 95, "image_quality": 95,
"size": 50, "size": 50,
"project": project "project": project
@ -1082,7 +1078,6 @@ class TaskGetAPITestCase(APITestCase):
self.assertEqual(response.data["assignee"], assignee) self.assertEqual(response.data["assignee"], assignee)
self.assertEqual(response.data["overlap"], db_task.overlap) self.assertEqual(response.data["overlap"], db_task.overlap)
self.assertEqual(response.data["segment_size"], db_task.segment_size) self.assertEqual(response.data["segment_size"], db_task.segment_size)
self.assertEqual(response.data["z_order"], db_task.z_order)
self.assertEqual(response.data["image_quality"], db_task.data.image_quality) self.assertEqual(response.data["image_quality"], db_task.data.image_quality)
self.assertEqual(response.data["status"], db_task.status) self.assertEqual(response.data["status"], db_task.status)
self.assertListEqual( self.assertListEqual(
@ -1191,8 +1186,6 @@ class TaskUpdateAPITestCase(APITestCase):
self.assertEqual(response.data["assignee"], assignee) self.assertEqual(response.data["assignee"], assignee)
self.assertEqual(response.data["overlap"], db_task.overlap) self.assertEqual(response.data["overlap"], db_task.overlap)
self.assertEqual(response.data["segment_size"], db_task.segment_size) self.assertEqual(response.data["segment_size"], db_task.segment_size)
z_order = data.get("z_order", db_task.z_order)
self.assertEqual(response.data["z_order"], z_order)
image_quality = data.get("image_quality", db_task.data.image_quality) image_quality = data.get("image_quality", db_task.data.image_quality)
self.assertEqual(response.data["image_quality"], image_quality) self.assertEqual(response.data["image_quality"], image_quality)
self.assertEqual(response.data["status"], db_task.status) self.assertEqual(response.data["status"], db_task.status)
@ -1351,7 +1344,6 @@ class TaskCreateAPITestCase(APITestCase):
self.assertEqual(response.data["bug_tracker"], data.get("bug_tracker", "")) self.assertEqual(response.data["bug_tracker"], data.get("bug_tracker", ""))
self.assertEqual(response.data["overlap"], data.get("overlap", None)) self.assertEqual(response.data["overlap"], data.get("overlap", None))
self.assertEqual(response.data["segment_size"], data.get("segment_size", 0)) self.assertEqual(response.data["segment_size"], data.get("segment_size", 0))
self.assertEqual(response.data["z_order"], data.get("z_order", False))
self.assertEqual(response.data["status"], StatusChoice.ANNOTATION) self.assertEqual(response.data["status"], StatusChoice.ANNOTATION)
self.assertListEqual( self.assertListEqual(
[label["name"] for label in data.get("labels")], [label["name"] for label in data.get("labels")],
@ -1748,7 +1740,6 @@ class TaskDataAPITestCase(APITestCase):
"assignee": self.assignee.id, "assignee": self.assignee.id,
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"labels": [ "labels": [
{"name": "car"}, {"name": "car"},
{"name": "person"}, {"name": "person"},
@ -1795,7 +1786,6 @@ class TaskDataAPITestCase(APITestCase):
"name": "my video task #1", "name": "my video task #1",
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"labels": [ "labels": [
{"name": "car"}, {"name": "car"},
{"name": "person"}, {"name": "person"},
@ -2048,7 +2038,6 @@ class TaskDataAPITestCase(APITestCase):
"assignee": self.assignee.id, "assignee": self.assignee.id,
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"labels": [ "labels": [
{"name": "car"}, {"name": "car"},
{"name": "person"}, {"name": "person"},
@ -2095,7 +2084,6 @@ class JobAnnotationAPITestCase(APITestCase):
"assignee": assignee.id, "assignee": assignee.id,
"overlap": 0, "overlap": 0,
"segment_size": 100, "segment_size": 100,
"z_order": False,
"labels": [ "labels": [
{ {
"name": "car", "name": "car",

Loading…
Cancel
Save