"""This file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license. """ import os from django.conf import settings from io_storages.base_models import ExportStorage, ImportStorage from rest_framework import serializers from tasks.models import Task from tasks.serializers import AnnotationSerializer, TaskSerializer from users.models import User from label_studio.core.utils.common import load_func class ImportStorageSerializer(serializers.ModelSerializer): type = serializers.ReadOnlyField(default=os.path.basename(os.path.dirname(__file__))) synchronizable = serializers.BooleanField(required=False, default=True) def validate(self, data): data = super(ImportStorageSerializer, self).validate(data) if settings.IMPORT_STORAGE_SERIALIZER_VALIDATE: validate_func = load_func(settings.IMPORT_STORAGE_SERIALIZER_VALIDATE) data = validate_func(self, data) return data class Meta: model = ImportStorage fields = '__all__' class ExportStorageSerializer(serializers.ModelSerializer): type = serializers.ReadOnlyField(default=os.path.basename(os.path.dirname(__file__))) synchronizable = serializers.BooleanField(required=False, default=True) class Meta: model = ExportStorage fields = '__all__' class StorageTaskSerializer(TaskSerializer): def __init__(self, *args, **kwargs): # task is nested into the annotation, we don't need annotations in the task again kwargs['context'] = {'resolve_uri': False} super().__init__(*args, **kwargs) class Meta: model = Task fields = '__all__' class StorageCompletedBySerializer(serializers.ModelSerializer): class Meta: model = User fields = ('id', 'first_name', 'last_name', 'email') class StorageAnnotationSerializer(AnnotationSerializer): task = StorageTaskSerializer(read_only=True, omit=['annotations']) completed_by = StorageCompletedBySerializer(read_only=True)