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/09/19 18:07:02 UTC

[1/4] airavata-django-portal git commit: Adding project's experiments to ProjectViewSet

Repository: airavata-django-portal
Updated Branches:
  refs/heads/master 4253233ff -> 4147972a1


Adding project's experiments to ProjectViewSet


Project: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/commit/0a2bc1c5
Tree: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/tree/0a2bc1c5
Diff: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/diff/0a2bc1c5

Branch: refs/heads/master
Commit: 0a2bc1c50cc53dfd030c6bec170f2d380ebf2404
Parents: 4253233
Author: Marcus Christie <ma...@iu.edu>
Authored: Mon Sep 18 09:19:59 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Mon Sep 18 09:19:59 2017 -0400

----------------------------------------------------------------------
 django_airavata/apps/api/serializers.py |  4 ++--
 django_airavata/apps/api/urls.py        | 10 +++++++++-
 django_airavata/apps/api/views.py       | 17 +++++++----------
 3 files changed, 18 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/0a2bc1c5/django_airavata/apps/api/serializers.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index d13b718..7f38bf1 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -42,13 +42,13 @@ class GatewayIdDefaultField(serializers.CharField):
         self.default = settings.GATEWAY_ID
 
 class ProjectSerializer(serializers.Serializer):
-    url = FullyEncodedHyperlinkedIdentityField(view_name='project-detail', lookup_field='projectID', lookup_url_kwarg='pk')
+    url = FullyEncodedHyperlinkedIdentityField(view_name='project-detail', lookup_field='projectID', lookup_url_kwarg='project_id')
     projectID = serializers.CharField(read_only=True)
     name = serializers.CharField(required=True)
     description = serializers.CharField(required=False)
     owner = GatewayUsernameDefaultField()
     gatewayId = GatewayIdDefaultField()
-    experiments = FullyEncodedHyperlinkedIdentityField(view_name='api_project_experiments_list', lookup_field='projectID', lookup_url_kwarg='project_id')
+    experiments = FullyEncodedHyperlinkedIdentityField(view_name='project-experiments', lookup_field='projectID', lookup_url_kwarg='project_id')
 
     def create(self, validated_data):
         return Project(**validated_data)

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/0a2bc1c5/django_airavata/apps/api/urls.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/api/urls.py b/django_airavata/apps/api/urls.py
index 544c07b..750e677 100644
--- a/django_airavata/apps/api/urls.py
+++ b/django_airavata/apps/api/urls.py
@@ -5,6 +5,10 @@ from django.conf.urls import include, url
 from rest_framework import routers
 from rest_framework.urlpatterns import format_suffix_patterns
 
+import logging
+
+logger = logging.getLogger(__name__)
+
 router = routers.SimpleRouter()
 router.register(r'projects', views.ProjectViewSet, base_name='project')
 
@@ -13,10 +17,14 @@ urlpatterns = [
     # url(r'^projects/$', views.ProjectList.as_view(), name='api_project_list'),
     # More specific, longer URLs should come before less specific, shorter ones
     # since the regular expression for project_id allows any character, even '/'
-    url(r'^projects/(?P<project_id>.+)/experiments/$', views.ProjectExperimentList.as_view(), name='api_project_experiments_list'),
+    # url(r'^projects/(?P<project_id>.+)/experiments/$', views.ProjectExperimentList.as_view(), name='api_project_experiments_list'),
     # url(r'^projects/(?P<project_id>.+)/$', views.ProjectDetail.as_view(), name='api_project_detail'),
     url(r'^experiments/$', views.ExperimentList.as_view(), name='api_experiment_list'),
     url(r'^', include(router.urls)),
 ]
 
+if logger.isEnabledFor(logging.DEBUG):
+    for url in router.urls:
+        logger.debug("router url: {}".format(url))
+
 urlpatterns = format_suffix_patterns(urlpatterns)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/0a2bc1c5/django_airavata/apps/api/views.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index 2de3ba8..1181fa3 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -2,7 +2,7 @@
 from . import serializers
 
 from rest_framework import status, mixins
-from rest_framework.decorators import api_view
+from rest_framework.decorators import api_view, detail_route
 from rest_framework.views import APIView
 from rest_framework.viewsets import GenericViewSet
 from rest_framework.response import Response
@@ -81,6 +81,7 @@ class CreateUpdateRetrieveListViewSet(mixins.CreateModelMixin,
 class ProjectViewSet(CreateUpdateRetrieveListViewSet):
 
     serializer_class = serializers.ProjectSerializer
+    lookup_field = 'project_id'
 
     def get_list(self):
         # TODO: support pagination
@@ -98,6 +99,11 @@ class ProjectViewSet(CreateUpdateRetrieveListViewSet):
         project = serializer.save()
         self.request.airavata_client.updateProject(self.authz_token, project.projectID, project)
 
+    @detail_route()
+    def experiments(self, request, project_id=None):
+        experiments = request.airavata_client.getExperimentsInProject(self.authz_token, project_id, -1, 0)
+        serializer = serializers.ExperimentSerializer(experiments, many=True, context={'request': request})
+        return Response(serializer.data)
 
 class ExperimentList(APIView):
     def get(self, request, format=None):
@@ -107,12 +113,3 @@ class ExperimentList(APIView):
         experiments = request.airavata_client.getUserExperiments(request.authz_token, gateway_id, username, -1, 0)
         serializer = serializers.ExperimentSerializer(experiments, many=True, context={'request': request})
         return Response(serializer.data)
-
-class ProjectExperimentList(APIView):
-    def get(self, request, project_id, format=None):
-        gateway_id = settings.GATEWAY_ID
-        username = request.user.username
-
-        experiments = request.airavata_client.getExperimentsInProject(request.authz_token, project_id, -1, 0)
-        serializer = serializers.ExperimentSerializer(experiments, many=True, context={'request': request})
-        return Response(serializer.data)


[3/4] airavata-django-portal git commit: Namespacing API urls

Posted by ma...@apache.org.
Namespacing API urls


Project: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/commit/e8e0fc44
Tree: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/tree/e8e0fc44
Diff: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/diff/e8e0fc44

Branch: refs/heads/master
Commit: e8e0fc44f4c7764dfb48d3f9a227a2ad7d5898f2
Parents: c975f46
Author: Marcus Christie <ma...@iu.edu>
Authored: Mon Sep 18 10:09:54 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Mon Sep 18 10:09:54 2017 -0400

----------------------------------------------------------------------
 django_airavata/apps/api/serializers.py | 6 +++---
 django_airavata/apps/api/urls.py        | 1 +
 django_airavata/apps/api/views.py       | 4 ++--
 3 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/e8e0fc44/django_airavata/apps/api/serializers.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/api/serializers.py b/django_airavata/apps/api/serializers.py
index 7f38bf1..12442dd 100644
--- a/django_airavata/apps/api/serializers.py
+++ b/django_airavata/apps/api/serializers.py
@@ -42,13 +42,13 @@ class GatewayIdDefaultField(serializers.CharField):
         self.default = settings.GATEWAY_ID
 
 class ProjectSerializer(serializers.Serializer):
-    url = FullyEncodedHyperlinkedIdentityField(view_name='project-detail', lookup_field='projectID', lookup_url_kwarg='project_id')
+    url = FullyEncodedHyperlinkedIdentityField(view_name='django_airavata_api:project-detail', lookup_field='projectID', lookup_url_kwarg='project_id')
     projectID = serializers.CharField(read_only=True)
     name = serializers.CharField(required=True)
     description = serializers.CharField(required=False)
     owner = GatewayUsernameDefaultField()
     gatewayId = GatewayIdDefaultField()
-    experiments = FullyEncodedHyperlinkedIdentityField(view_name='project-experiments', lookup_field='projectID', lookup_url_kwarg='project_id')
+    experiments = FullyEncodedHyperlinkedIdentityField(view_name='django_airavata_api:project-experiments', lookup_field='projectID', lookup_url_kwarg='project_id')
 
     def create(self, validated_data):
         return Project(**validated_data)
@@ -65,7 +65,7 @@ class ExperimentSerializer(serializers.Serializer):
 
     experimentId = serializers.CharField(read_only=True)
     projectId = serializers.CharField(required=True)
-    project = FullyEncodedHyperlinkedIdentityField(view_name='project-detail', lookup_field='projectId', lookup_url_kwarg='project_id')
+    project = FullyEncodedHyperlinkedIdentityField(view_name='django_airavata_api:project-detail', lookup_field='projectId', lookup_url_kwarg='project_id')
     gatewayId = GatewayIdDefaultField()
     experimentType = serializers.CharField(required=True)
     userName = GatewayUsernameDefaultField()

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/e8e0fc44/django_airavata/apps/api/urls.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/api/urls.py b/django_airavata/apps/api/urls.py
index 750e677..1c5e19b 100644
--- a/django_airavata/apps/api/urls.py
+++ b/django_airavata/apps/api/urls.py
@@ -12,6 +12,7 @@ logger = logging.getLogger(__name__)
 router = routers.SimpleRouter()
 router.register(r'projects', views.ProjectViewSet, base_name='project')
 
+app_name = 'django_airavata_api'
 urlpatterns = [
     url(r'^$', views.api_root),
     # url(r'^projects/$', views.ProjectList.as_view(), name='api_project_list'),

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/e8e0fc44/django_airavata/apps/api/views.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/api/views.py b/django_airavata/apps/api/views.py
index 1181fa3..416fa5a 100644
--- a/django_airavata/apps/api/views.py
+++ b/django_airavata/apps/api/views.py
@@ -17,8 +17,8 @@ from django.views.decorators.csrf import csrf_exempt
 @api_view(['GET'])
 def api_root(request, format=None):
     return Response({
-        'projects': reverse('project-list', request=request, format=format),
-        'experiments': reverse('api_experiment_list', request=request, format=format)
+        'projects': reverse('django_airavata_api:project-list', request=request, format=format),
+        'experiments': reverse('django_airavata_api:api_experiment_list', request=request, format=format)
     })
 
 class GenericAPIBackedViewSet(GenericViewSet):


[4/4] airavata-django-portal git commit: Requiring Django session for REST API

Posted by ma...@apache.org.
Requiring Django session for REST API


Project: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/commit/4147972a
Tree: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/tree/4147972a
Diff: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/diff/4147972a

Branch: refs/heads/master
Commit: 4147972a1c157f570abdc5baaa6f243154f4c586
Parents: e8e0fc4
Author: Marcus Christie <ma...@iu.edu>
Authored: Tue Sep 19 14:06:34 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Tue Sep 19 14:06:34 2017 -0400

----------------------------------------------------------------------
 django_airavata/settings.py | 10 ++++++++++
 1 file changed, 10 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/4147972a/django_airavata/settings.py
----------------------------------------------------------------------
diff --git a/django_airavata/settings.py b/django_airavata/settings.py
index c0b55d9..c803a33 100644
--- a/django_airavata/settings.py
+++ b/django_airavata/settings.py
@@ -129,6 +129,16 @@ USE_TZ = True
 STATIC_URL = '/static/'
 STATICFILES_DIRS = [os.path.join(BASE_DIR, "django_airavata", "static")]
 
+# Django REST Framework configuration
+REST_FRAMEWORK = {
+    'DEFAULT_AUTHENTICATION_CLASSES': (
+        'rest_framework.authentication.SessionAuthentication',
+    ),
+    'DEFAULT_PERMISSION_CLASSES': (
+        'rest_framework.permissions.IsAuthenticated',
+    ),
+}
+
 AUTHENTICATION_BACKENDS = [
     'django_airavata.apps.auth.backends.KeycloakBackend'
 ]


[2/4] airavata-django-portal git commit: Fix calling ProjectViewSet directly to get project list

Posted by ma...@apache.org.
Fix calling ProjectViewSet directly to get project list


Project: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/commit/c975f46f
Tree: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/tree/c975f46f
Diff: http://git-wip-us.apache.org/repos/asf/airavata-django-portal/diff/c975f46f

Branch: refs/heads/master
Commit: c975f46f65eed677d12c16927a5aa25a5832260e
Parents: 0a2bc1c
Author: Marcus Christie <ma...@iu.edu>
Authored: Mon Sep 18 09:30:47 2017 -0400
Committer: Marcus Christie <ma...@iu.edu>
Committed: Mon Sep 18 09:44:56 2017 -0400

----------------------------------------------------------------------
 django_airavata/apps/workspace/views.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/c975f46f/django_airavata/apps/workspace/views.py
----------------------------------------------------------------------
diff --git a/django_airavata/apps/workspace/views.py b/django_airavata/apps/workspace/views.py
index 6967f25..b7d8d8f 100644
--- a/django_airavata/apps/workspace/views.py
+++ b/django_airavata/apps/workspace/views.py
@@ -13,7 +13,7 @@ logger = logging.getLogger(__name__)
 @login_required
 def projects_list(request):
 
-    response = ProjectList().get(request)
+    response = ProjectViewSet.as_view({'get': 'list'})(request)
     projects_json = JSONRenderer().render(response.data)
 
     return render(request, 'django_airavata_workspace/projects_list.html', {