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', {