From 51a48c56f4f47e4101cd67dc15d46c0f8be0fd5e Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 11 Jul 2019 16:55:46 +0300 Subject: [PATCH 1/3] Backend fix for cloning broken instance --- scidash/sciunitmodels/api/views.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scidash/sciunitmodels/api/views.py b/scidash/sciunitmodels/api/views.py index f7d2b938..783dd241 100644 --- a/scidash/sciunitmodels/api/views.py +++ b/scidash/sciunitmodels/api/views.py @@ -109,6 +109,15 @@ def get(self, request, model_id): ), 404 ) + if model_instance.model_class.import_path == '': + return response.Response(json.dumps( + { + 'success': False, + 'message': 'Unable to clone, import_path is missing' + } + ), 400 + ) + new_model_instance = self.clone_model(model_instance, request) serializer = ModelInstanceSerializer(new_model_instance) return response.Response(serializer.data) From c00d1e806b9c839935775741f71c850e6702a793 Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 11 Jul 2019 16:57:15 +0300 Subject: [PATCH 2/3] Same fix for tests --- scidash/sciunittests/api/views.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/scidash/sciunittests/api/views.py b/scidash/sciunittests/api/views.py index 52c0664e..c85bade5 100644 --- a/scidash/sciunittests/api/views.py +++ b/scidash/sciunittests/api/views.py @@ -102,6 +102,15 @@ def get(self, request, test_id): new_test_instance = self.clone_test(test_instance, request) serializer = TestInstanceSerializer(new_test_instance) + if test_instance.test_class.import_path == '': + return response.Response(json.dumps( + { + 'success': False, + 'message': 'Unable to clone, import_path is missing' + } + ), 400 + ) + return response.Response(serializer.data) def clone_test(self, test_instance_model, request): From 70f5bba52d64b3145f6f4edbc8d3fe16b3b3661a Mon Sep 17 00:00:00 2001 From: Roman Date: Thu, 11 Jul 2019 17:30:18 +0300 Subject: [PATCH 3/3] Fix --- scidash/sciunitmodels/api/views.py | 5 +++-- scidash/sciunittests/api/views.py | 6 ++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scidash/sciunitmodels/api/views.py b/scidash/sciunitmodels/api/views.py index 783dd241..699bcb96 100644 --- a/scidash/sciunitmodels/api/views.py +++ b/scidash/sciunitmodels/api/views.py @@ -117,9 +117,10 @@ def get(self, request, model_id): } ), 400 ) + else: + new_model_instance = self.clone_model(model_instance, request) + serializer = ModelInstanceSerializer(new_model_instance) - new_model_instance = self.clone_model(model_instance, request) - serializer = ModelInstanceSerializer(new_model_instance) return response.Response(serializer.data) def clone_model(self, model_instance_model, request): diff --git a/scidash/sciunittests/api/views.py b/scidash/sciunittests/api/views.py index c85bade5..81395a5d 100644 --- a/scidash/sciunittests/api/views.py +++ b/scidash/sciunittests/api/views.py @@ -99,8 +99,6 @@ def get(self, request, test_id): } ), 404 ) - new_test_instance = self.clone_test(test_instance, request) - serializer = TestInstanceSerializer(new_test_instance) if test_instance.test_class.import_path == '': return response.Response(json.dumps( @@ -110,6 +108,10 @@ def get(self, request, test_id): } ), 400 ) + else: + new_test_instance = self.clone_test(test_instance, request) + serializer = TestInstanceSerializer(new_test_instance) + return response.Response(serializer.data)