You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2017/11/02 20:05:56 UTC
[airavata-django-portal] branch master updated: AIRAVATA-2568 App
Interface serializer w/ nested inputs/outputs
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-django-portal.git
The following commit(s) were added to refs/heads/master by this push:
new d833423 AIRAVATA-2568 App Interface serializer w/ nested inputs/outputs
d833423 is described below
commit d8334235e72c439ee0c7db516d272bea5f416ab2
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Thu Nov 2 16:05:49 2017 -0400
AIRAVATA-2568 App Interface serializer w/ nested inputs/outputs
---
django_airavata/apps/api/serializers.py | 18 +++++++++++++++---
django_airavata/apps/api/urls.py | 1 +
django_airavata/apps/api/views.py | 20 ++++++++++++++++++++
3 files changed, 36 insertions(+), 3 deletions(-)
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 99c08c8..45af1f1 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -155,16 +155,28 @@ class OutputDataObjectTypeSerializer(serializers.Serializer):
class ApplicationInterfaceDescriptionSerializer(serializers.Serializer):
+ applicationInterfaceId = serializers.CharField(required=False)
applicationName = serializers.CharField(required=False)
applicationDescription = serializers.CharField(required=False)
archiveWorkingDirectory = serializers.BooleanField(required=False)
hasOptionalFileInputs = serializers.BooleanField(required=False)
- applicationOutputs = serializers.ListField(child=OutputDataObjectTypeSerializer())
- applicationInputs = serializers.ListField(child=InputDataObjectTypeSerializer())
+ applicationOutputs = OutputDataObjectTypeSerializer(many=True)
+ applicationInputs = InputDataObjectTypeSerializer(many=True)
applicationModules = serializers.ListField(child=serializers.CharField())
def create(self, validated_data):
- return ApplicationInterfaceDescription(**validated_data)
+ app_interface = ApplicationInterfaceDescription(**validated_data)
+ app_interface.applicationOutputs = []
+ for app_output in validated_data["applicationOutputs"]:
+ output_serializer = OutputDataObjectTypeSerializer(data=app_output)
+ output_serializer.is_valid(raise_exception=True)
+ app_interface.applicationOutputs.append(output_serializer.create(output_serializer.validated_data))
+ app_interface.applicationInputs = []
+ for app_input in validated_data["applicationInputs"]:
+ input_serializer = InputDataObjectTypeSerializer(data=app_input)
+ input_serializer.is_valid(raise_exception=True)
+ app_interface.applicationInputs.append(input_serializer.create(input_serializer.validated_data))
+ return app_interface
def update(self, instance, validated_data):
raise Exception("Not implemented")
diff --git a/django_airavata/apps/api/urls.py b/django_airavata/apps/api/urls.py
index 8237b91..bc95836 100644
--- a/django_airavata/apps/api/urls.py
+++ b/django_airavata/apps/api/urls.py
@@ -12,6 +12,7 @@ router = routers.DefaultRouter()
router.register(r'projects', views.ProjectViewSet, base_name='project')
router.register(r'new/application/module', views.RegisterApplicationModule, base_name='register_app_module')
router.register(r'experiments', views.ApplicationList, base_name='experiments')
+router.register(r'application-interface', views.ApplicationInterfaceViewSet, base_name='application-interface')
app_name = 'django_airavata_api'
urlpatterns = [
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index dc25e8c..1e72668 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -274,3 +274,23 @@ class RegisterApplicationDeployments(APIView):
app_deployment)
return Response(response)
+class ApplicationInterfaceViewSet(APIBackedViewSet):
+
+ serializer_class = serializers.ApplicationInterfaceDescriptionSerializer
+ lookup_field = 'app_interface_id'
+
+ def get_list(self):
+ return self.request.airavata_client.getAllApplicationInterfaces(self.authz_token, self.gateway_id)
+
+ def get_instance(self, lookup_value):
+ return self.request.airavata_client.getApplicationInterface(self.authz_token, lookup_value)
+
+ def perform_create(self, serializer):
+ application_interface = serializer.save()
+ log.debug("application_interface: {}".format(application_interface))
+ app_interface_id = self.request.airavata_client.registerApplicationInterface(self.authz_token, self.gateway_id, application_interface)
+ application_interface.applicationInterfaceId = app_interface_id
+
+ def perform_update(self, serializer):
+ application_interface = serializer.save()
+ self.request.airavata_client.updateApplicationInterface(self.authz_token, application_interface.applicationInterfaceId, application_interface)
--
To stop receiving notification emails like this one, please contact
['"commits@airavata.apache.org" <co...@airavata.apache.org>'].