diff --git a/loomengine/master/api/models/data_objects.py b/loomengine/master/api/models/data_objects.py index 18ab5830..6c10b200 100644 --- a/loomengine/master/api/models/data_objects.py +++ b/loomengine/master/api/models/data_objects.py @@ -192,7 +192,7 @@ def initialize(cls, **kwargs): kwargs.get('filename'), kwargs.get('source_type'), kwargs.get('data_object'), - kwargs.get('task_attempt') + kwargs.pop('task_attempt', None) )) file_resource = cls(**kwargs) return file_resource @@ -232,7 +232,6 @@ def _get_breadcrumbs(cls, source_type, data_object, task_attempt): """Create a path for a given file, in such a way that files end up being organized and browsable by run """ - # We cannot generate the path unless connect to a TaskAttempt # and a run if not task_attempt: diff --git a/loomengine/master/api/serializers/data_channels.py b/loomengine/master/api/serializers/data_channels.py index ec6e39c2..4b185ac3 100644 --- a/loomengine/master/api/serializers/data_channels.py +++ b/loomengine/master/api/serializers/data_channels.py @@ -36,7 +36,8 @@ def update(self, instance, validated_data): raise serializers.ValidationError('Update to existing data not allowed') data_node_serializer = DataNodeSerializer( data=data, - context = {'type': instance.type}) + context = {'type': instance.type, + 'task_attempt': instance.task_attempt}) data_node_serializer.is_valid(raise_exception=True) data_node = data_node_serializer.save() instance.setattrs_and_save_with_retries({ diff --git a/loomengine/master/api/views.py b/loomengine/master/api/views.py index 39920769..81839d33 100644 --- a/loomengine/master/api/views.py +++ b/loomengine/master/api/views.py @@ -558,7 +558,12 @@ def get_queryset(self): serializer_class=rest_framework.serializers.Serializer) def create_data_object(self, request, uuid=None): try: - task_attempt_log_file = models.TaskAttemptLogFile.objects.get(uuid=uuid) + task_attempt_log_file = models\ + .TaskAttemptLogFile\ + .objects\ + .select_related('task_attempt')\ + .select_related('data_object')\ + .get(uuid=uuid) except ObjectDoesNotExist: raise rest_framework.exceptions.NotFound() if task_attempt_log_file.data_object: @@ -568,7 +573,9 @@ def create_data_object(self, request, uuid=None): s = serializers.DataObjectSerializer( task_attempt_log_file.data_object, data=data, context={ 'request': request, - 'task_attempt_log_file': task_attempt_log_file}) + 'task_attempt_log_file': task_attempt_log_file, + 'task_attempt': task_attempt_log_file.task_attempt, + }) s.is_valid(raise_exception=True) data_object = s.save() return JsonResponse(s.data, status=201)