未验证 提交 5504ba19 编写于 作者: D Dmitry Kalinin 提交者: GitHub

Label name editing (#2806)

* Label name edition

* Added wrong label id handling

* Restored missed logging
上级 383e6ecc
// Copyright (C) 2019-2020 Intel Corporation
// Copyright (C) 2019-2021 Intel Corporation
//
// SPDX-License-Identifier: MIT
......@@ -171,17 +171,21 @@
* @name name
* @type {string}
* @memberof module:API.cvat.classes.Label
* @readonly
* @instance
*/
name: {
get: () => data.name,
set: (name) => {
if (typeof name !== 'string') {
throw new ArgumentError(`Name must be a string, but ${typeof name} was given`);
}
data.name = name;
},
},
/**
* @name color
* @type {string}
* @memberof module:API.cvat.classes.Label
* @readonly
* @instance
*/
color: {
......
......@@ -374,7 +374,6 @@ export default class LabelForm extends React.Component<Props> {
private renderLabelNameInput(): JSX.Element {
const { label, labelNames } = this.props;
const value = label ? label.name : '';
const locked = label ? label.id >= 0 : false;
return (
<Form.Item
......@@ -399,7 +398,7 @@ export default class LabelForm extends React.Component<Props> {
},
]}
>
<Input disabled={locked} placeholder='Label name' />
<Input placeholder='Label name' />
</Form.Item>
);
}
......
......@@ -6,7 +6,7 @@ import os
import re
import shutil
from rest_framework import serializers
from rest_framework import serializers, exceptions
from django.contrib.auth.models import User, Group
from cvat.apps.engine import models
......@@ -66,6 +66,7 @@ class AttributeSerializer(serializers.ModelSerializer):
return attribute
class LabelSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(required=False)
attributes = AttributeSerializer(many=True, source='attributespec_set',
default=[])
color = serializers.CharField(allow_blank=True, required=False)
......@@ -84,12 +85,17 @@ class LabelSerializer(serializers.ModelSerializer):
else:
instance['task'] = parent_instance
logger = slogger.task[parent_instance.id]
(db_label, created) = models.Label.objects.get_or_create(name=validated_data['name'],
**instance)
if created:
logger.info("New {} label was created".format(db_label.name))
if not validated_data.get('id') is None:
try:
db_label = models.Label.objects.get(id=validated_data['id'],
**instance)
except models.Label.DoesNotExist:
raise exceptions.NotFound(detail='Not found label with id #{} to change'.format(validated_data['id']))
db_label.name = validated_data.get('name', db_label.name)
logger.info("{}({}) label was updated".format(db_label.name, db_label.id))
else:
logger.info("{} label was updated".format(db_label.name))
db_label = models.Label.objects.create(name=validated_data.get('name'), **instance)
logger.info("New {} label was created".format(db_label.name))
if not validated_data.get('color', None):
label_names = [l.name for l in
instance[tuple(instance.keys())[0]].label_set.exclude(id=db_label.id).order_by('id')
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册