diff --git a/arkindex/dataimport/serializers/imports.py b/arkindex/dataimport/serializers/imports.py index a5146ba50e429bd54310e87ef6b785358007f22d..f125f423a5b65dcbf65d97167b96db8586788112 100644 --- a/arkindex/dataimport/serializers/imports.py +++ b/arkindex/dataimport/serializers/imports.py @@ -53,7 +53,28 @@ class DataImportLightSerializer(serializers.ModelSerializer): read_only_fields = ('id', 'state', 'mode', 'corpus', 'creator', 'workflow', 'activity_state') -class DataImportSerializer(DataImportLightSerializer): +class DataImportTrainingSerializer(DataImportLightSerializer): + model_id = serializers.PrimaryKeyRelatedField(read_only=True) + train_folder_id = serializers.PrimaryKeyRelatedField(read_only=True) + validation_folder_id = serializers.PrimaryKeyRelatedField(read_only=True) + test_folder_id = serializers.PrimaryKeyRelatedField(read_only=True) + + class Meta(DataImportLightSerializer.Meta): + fields = DataImportLightSerializer.Meta.fields + ( + 'model_id', + 'train_folder_id', + 'validation_folder_id', + 'test_folder_id', + ) + read_only_fields = DataImportLightSerializer.Meta.read_only_fields + ( + 'model_id', + 'train_folder_id', + 'validation_folder_id', + 'test_folder_id', + ) + + +class DataImportSerializer(DataImportTrainingSerializer): """ Serialize a data importing workflow with its settings """ @@ -82,14 +103,9 @@ class DataImportSerializer(DataImportLightSerializer): source='template', style={'base_template': 'input.html'} ) - # Training properties - model_id = serializers.PrimaryKeyRelatedField(read_only=True) - train_folder_id = serializers.PrimaryKeyRelatedField(read_only=True) - validation_folder_id = serializers.PrimaryKeyRelatedField(read_only=True) - test_folder_id = serializers.PrimaryKeyRelatedField(read_only=True) - class Meta(DataImportLightSerializer.Meta): - fields = DataImportLightSerializer.Meta.fields + ( + class Meta(DataImportTrainingSerializer.Meta): + fields = DataImportTrainingSerializer.Meta.fields + ( 'files', 'revision', 'element', @@ -101,12 +117,8 @@ class DataImportSerializer(DataImportLightSerializer): 'use_cache', 'use_gpu', 'template_id', - 'model_id', - 'train_folder_id', - 'validation_folder_id', - 'test_folder_id', ) - read_only_fields = DataImportLightSerializer.Meta.read_only_fields + ( + read_only_fields = DataImportTrainingSerializer.Meta.read_only_fields + ( 'files', 'revision', 'element', @@ -114,10 +126,6 @@ class DataImportSerializer(DataImportLightSerializer): 'use_cache', 'use_gpu', 'template_id', - 'model_id', - 'train_folder_id', - 'validation_folder_id', - 'test_folder_id', ) def __init__(self, *args, **kwargs): @@ -426,7 +434,7 @@ class WorkerRunEditSerializer(WorkerRunSerializer): worker_version = WorkerVersionSerializer(read_only=True, source='version') configuration = WorkerConfigurationSerializer(read_only=True) - process = DataImportLightSerializer(read_only=True, source='dataimport') + process = DataImportTrainingSerializer(read_only=True, source='dataimport') class Meta(WorkerRunSerializer.Meta): fields = WorkerRunSerializer.Meta.fields + ( diff --git a/arkindex/dataimport/tests/test_workerruns.py b/arkindex/dataimport/tests/test_workerruns.py index 0dde740bc59f115a0fe8075689f640f14d09a7ff..b3d00608111dc4639b7b459d9cbcaf46fe68f860 100644 --- a/arkindex/dataimport/tests/test_workerruns.py +++ b/arkindex/dataimport/tests/test_workerruns.py @@ -79,6 +79,10 @@ def _deserialize_worker_process(process): 'corpus': str(process.corpus.id), 'workflow': (str(process.workflow) if process.workflow else None), 'activity_state': process.activity_state.value, + 'model_id': str(process.model_id) if process.model_id else None, + 'train_folder_id': str(process.train_folder_id) if process.train_folder_id else None, + 'test_folder_id': str(process.test_folder_id) if process.test_folder_id else None, + 'validation_folder_id': str(process.validation_folder_id) if process.validation_folder_id else None, }