Skip to content
Snippets Groups Projects
Commit 2dc24147 authored by Valentin Rigal's avatar Valentin Rigal
Browse files

Cleanup

parent fd4bb33b
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,6 @@ from django.contrib.gis.geos import LinearRing
from django.utils.functional import cached_property
from rest_framework import serializers
from rest_framework.exceptions import ValidationError
from arkindex_common.ml_tool import MLToolType
from arkindex_common.enums import MetaType
from arkindex.dataimport.models import WorkerVersion
from arkindex.images.serializers import ZoneSerializer
......@@ -18,7 +17,7 @@ from arkindex.documents.serializers.light import (
)
from arkindex.documents.serializers.entities import BaseEntitySerializer, TranscriptionEntityDetailsSerializer
from arkindex.documents.serializers.ml import ClassificationSerializer, DataSourceSerializer
from arkindex.project.serializer_fields import LinearRingField, DataSourceSlugField
from arkindex.project.serializer_fields import LinearRingField
class MetaDataSerializer(MetaDataLightSerializer):
......
......@@ -5,7 +5,7 @@ from arkindex.documents.models import \
from arkindex_common.enums import EntityType
from arkindex.documents.serializers.light import CorpusLightSerializer, InterpretedDateSerializer
from arkindex.documents.serializers.ml import DataSourceSerializer
from arkindex.project.serializer_fields import EnumField, DataSourceSlugField
from arkindex.project.serializer_fields import EnumField
from arkindex.project.triggers import reindex_start
......
......@@ -9,7 +9,7 @@ from arkindex.dataimport.models import WorkerVersion
from arkindex.documents.models import (
Corpus, Element, ElementType, Transcription, DataSource, MLClass, Classification, ClassificationState
)
from arkindex.project.serializer_fields import EnumField, DataSourceSlugField, LinearRingField
from arkindex.project.serializer_fields import EnumField, LinearRingField
from arkindex.images.serializers import ZoneSerializer
from arkindex.documents.serializers.light import ElementZoneSerializer
import uuid
......
......@@ -3,7 +3,6 @@ from rest_framework import serializers
from enum import Enum
from uuid import UUID
from urllib.parse import quote, unquote
from arkindex_common.ml_tool import MLToolType
from arkindex.project.gis import ensure_linear_ring
......@@ -31,52 +30,6 @@ class EnumField(serializers.ChoiceField):
raise serializers.ValidationError('Value is not of type {}'.format(self.enum.__name__))
class DataSourceSlugField(serializers.CharField):
def __init__(self, tool_type=None, *args, **kwargs):
super().__init__(*args, **kwargs)
if tool_type is not None:
assert isinstance(tool_type, MLToolType)
self.tool_type = tool_type
def to_representation(self, obj):
from arkindex.documents.models import DataSource
if isinstance(obj, DataSource):
return super().to_representation(obj.slug)
return super().to_representation(obj)
def to_internal_value(self, data):
from arkindex.documents.models import DataSource
slug = super().to_internal_value(data)
if self.tool_type and slug == 'manual':
# Get or create a manual source for this tool.
# This behavior is not RESTful but allows to serialize
# a manual source for any tool.
manual_source, _ = DataSource.objects.get_or_create(
type=self.tool_type,
slug=slug,
defaults={
'revision': '',
'internal': False,
}
)
return manual_source
# Pick the most recent source by ordering by revision
# Note that there still might be duplicate sources if there is no tool type filter
# as DataSource only requires unique slugs by type and revision;
# there could be a "sklearn 0.1" classifier and a "sklearn 0.1" DLA.
queryset = DataSource.objects.filter(slug=slug).order_by('-revision')
if self.tool_type:
queryset = queryset.filter(type=self.tool_type)
source = queryset.first()
if not source:
raise serializers.ValidationError('Source with slug {!r} not found'.format(data))
return source
class PointField(serializers.ListField):
child = serializers.IntegerField()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment