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 2018/01/31 15:13:40 UTC
[airavata-django-portal] 01/03: AIRAVATA-2614 Map searchExperiments
to ViewSet, Serializer
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
commit 07a0770b0a50973bebe3af0f5180afcec9d32a90
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Tue Jan 30 16:05:25 2018 -0500
AIRAVATA-2614 Map searchExperiments to ViewSet, Serializer
---
django_airavata/apps/api/serializers.py | 7 +++++++
django_airavata/apps/api/urls.py | 1 +
django_airavata/apps/api/views.py | 21 +++++++++++++++++++++
3 files changed, 29 insertions(+)
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 3a0fd09..0d045e5 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -305,3 +305,10 @@ class FullExperimentSerializer(serializers.Serializer):
def update(self, instance, validated_data):
raise Exception("Not implemented")
+
+
+class ExperimentSummarySerializer(
+ thrift_utils.create_serializer_class(ExperimentSummaryModel)):
+ creationTime = UTCPosixTimestampDateTimeField()
+ url = FullyEncodedHyperlinkedIdentityField(view_name='django_airavata_api:experiment-detail', lookup_field='experimentId', lookup_url_kwarg='experiment_id')
+ project = FullyEncodedHyperlinkedIdentityField(view_name='django_airavata_api:project-detail', lookup_field='projectId', lookup_url_kwarg='project_id')
diff --git a/django_airavata/apps/api/urls.py b/django_airavata/apps/api/urls.py
index e20babf..345f85d 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'experiments', views.ExperimentViewSet, base_name='experiment')
router.register(r'full-experiments', views.FullExperimentViewSet, base_name='full-experiment')
+router.register(r'experiment-search', views.ExperimentSearchViewSet, base_name='experiment-search')
router.register(r'new/application/module', views.RegisterApplicationModule, base_name='register_app_module')
router.register(r'application-interfaces', views.ApplicationInterfaceViewSet, base_name='application-interface')
router.register(r'applications', views.ApplicationModuleViewSet, base_name='application')
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index c9b2f57..cf44e41 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -268,6 +268,27 @@ class ExperimentViewSet(APIBackedViewSet):
return Response(serializer.data)
+class ExperimentSearchViewSet(mixins.ListModelMixin, GenericAPIBackedViewSet):
+
+ serializer_class = serializers.ExperimentSummarySerializer
+ pagination_class = APIResultPagination
+ pagination_viewname = 'django_airavata_api:experiment-search-list'
+
+ def get_list(self):
+ view = self
+
+ # TODO: implement support for filters
+ class ExperimentSearchResultIterator(APIResultIterator):
+ def get_results(self, limit=-1, offset=0):
+ return view.request.airavata_client.searchExperiments(
+ view.authz_token, view.gateway_id, view.username, {},
+ limit, offset)
+ return ExperimentSearchResultIterator()
+
+ def get_instance(self, lookup_value):
+ raise NotImplementedError()
+
+
class FullExperimentViewSet(mixins.RetrieveModelMixin,
GenericAPIBackedViewSet):
--
To stop receiving notification emails like this one, please contact
machristie@apache.org.