|
|
|
|
@ -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')
|
|
|
|
|
|