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/21 16:59:37 UTC

[07/54] [abbrv] [partial] airavata-django-portal git commit: Moving admin_view JS into django app and moving django project back

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/api/views.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/api/views.py b/django_portal/django_airavata/apps/api/views.py
deleted file mode 100644
index 7a7be35..0000000
--- a/django_portal/django_airavata/apps/api/views.py
+++ /dev/null
@@ -1,127 +0,0 @@
-
-from . import serializers
-
-from rest_framework import status, mixins
-from rest_framework.decorators import api_view
-from rest_framework.views import APIView
-from rest_framework.viewsets import GenericViewSet
-from rest_framework.response import Response
-from rest_framework.reverse import reverse
-
-from django.conf import settings
-from django.http import JsonResponse, Http404
-from django.shortcuts import render
-from django.views.decorators.csrf import csrf_exempt
-
-# Create your views here.
-@api_view(['GET'])
-def api_root(request, format=None):
-    return Response({
-        'projects': reverse('project-list', request=request, format=format),
-        'admin': reverse('api_experiment_list', request=request, format=format)
-    })
-
-class GenericAPIBackedViewSet(GenericViewSet):
-
-    def get_list(self):
-        """
-        Subclasses must implement.
-        """
-        raise NotImplementedError()
-
-    def get_instance(self, lookup_value):
-        """
-        Subclasses must implement.
-        """
-        raise NotImplementedError()
-
-    def get_queryset(self):
-        return self.get_list()
-
-    def get_object(self):
-        lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
-        lookup_value = self.kwargs[lookup_url_kwarg]
-        inst = self.get_instance(lookup_value)
-        if inst is None:
-            raise Http404
-        self.check_object_permissions(self.request, inst)
-        return inst
-
-    @property
-    def username(self):
-        return self.request.user.username
-
-    @property
-    def gateway_id(self):
-        return settings.GATEWAY_ID
-
-    @property
-    def authz_token(self):
-        return self.request.authz_token
-
-class CreateUpdateRetrieveListViewSet(mixins.CreateModelMixin,
-                                      mixins.RetrieveModelMixin,
-                                      mixins.UpdateModelMixin,
-                                      mixins.DestroyModelMixin,
-                                      mixins.ListModelMixin,
-                                      GenericAPIBackedViewSet):
-    """
-    A viewset that provides default `create()`, `retrieve()`, `update()`,
-    `partial_update()` and `list()` actions.
-
-    Subclasses must implement the following:
-    * get_list(self)
-    * get_instance(self, lookup_value)
-    * perform_create(self, serializer) - should return instance with id populated
-    * perform_update(self, serializer)
-    """
-    pass
-
-
-class ProjectViewSet(CreateUpdateRetrieveListViewSet):
-
-    serializer_class = serializers.ProjectSerializer
-
-    def get_list(self):
-        # TODO: support pagination
-        return self.request.airavata_client.getUserProjects(self.authz_token, self.gateway_id, self.username, -1, 0)
-
-    def get_instance(self, lookup_value):
-        return self.request.airavata_client.getProject(self.authz_token, lookup_value)
-
-    def perform_create(self, serializer):
-        project = serializer.save()
-        project_id = self.request.airavata_client.createProject(self.authz_token, self.gateway_id, project)
-        project.projectID = project_id
-
-    def perform_update(self, serializer):
-        project = serializer.save()
-        self.request.airavata_client.updateProject(self.authz_token, project.projectID, project)
-
-
-class ExperimentList(APIView):
-    def get(self, request, format=None):
-        gateway_id = settings.GATEWAY_ID
-        username = request.user.username
-
-        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)
-
-
-class ApplicationList(APIView):
-
-    def get(self,request,format=None):
-        gateway_id = settings.GATEWAY_ID
-        app_modules=request.airavata_client.getAllAppModules(request.authz_token,gateway_id)
-        serializer=serializers.ApplicationModuleSerializer(app_modules,many=True,context={'request':request})
-        return Response(serializer.data)

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/__init__.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/__init__.py b/django_portal/django_airavata/apps/auth/__init__.py
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/admin.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/admin.py b/django_portal/django_airavata/apps/auth/admin.py
deleted file mode 100644
index 8c38f3f..0000000
--- a/django_portal/django_airavata/apps/auth/admin.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib import admin
-
-# Register your models here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/apps.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/apps.py b/django_portal/django_airavata/apps/auth/apps.py
deleted file mode 100644
index 1e103a4..0000000
--- a/django_portal/django_airavata/apps/auth/apps.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.apps import AppConfig
-
-
-class AuthConfig(AppConfig):
-    name = 'django_airavata.apps.auth'
-    label = 'django_airavata_auth'

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/backends.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/backends.py b/django_portal/django_airavata/apps/auth/backends.py
deleted file mode 100644
index c198123..0000000
--- a/django_portal/django_airavata/apps/auth/backends.py
+++ /dev/null
@@ -1,73 +0,0 @@
-
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.urls import reverse
-
-from oauthlib.oauth2 import LegacyApplicationClient
-from requests_oauthlib import OAuth2Session
-
-import logging
-
-logger = logging.getLogger(__name__)
-
-class KeycloakBackend(object):
-    def authenticate(self, username=None, password=None, request=None):
-        token = None
-        userinfo = None
-        if username and password:
-            token, userinfo = self._get_token_and_userinfo_password_flow(username, password)
-        else:
-            token, userinfo = self._get_token_and_userinfo_redirect_flow(request)
-        # TODO validate the JWS signature
-        logger.debug("token: {}".format(token))
-        access_token = token['access_token']
-        logger.debug("userinfo: {}".format(userinfo))
-        username = userinfo['preferred_username']
-        # TODO load user roles too
-        try:
-            user = User.objects.get(username=username)
-        except User.DoesNotExist:
-            user = User(username=username)
-            user.save()
-        # Put access_token into session to be used for authenticating with API server
-        request.session['ACCESS_TOKEN'] = access_token
-        request.session['USERINFO'] = userinfo
-        return user
-
-    def get_user(self, user_id):
-        try:
-            return User.objects.get(pk=user_id)
-        except User.DoesNotExist:
-            return None
-
-    def _get_token_and_userinfo_password_flow(self, username, password):
-        client_id = settings.KEYCLOAK_CLIENT_ID
-        client_secret = settings.KEYCLOAK_CLIENT_SECRET
-        token_url = settings.KEYCLOAK_TOKEN_URL
-        userinfo_url = settings.KEYCLOAK_USERINFO_URL
-        verify_ssl = settings.KEYCLOAK_VERIFY_SSL
-        oauth2_session = OAuth2Session(client=LegacyApplicationClient(client_id=client_id))
-        if hasattr(settings, 'KEYCLOAK_CA_CERTFILE'):
-            oauth2_session.verify = settings.KEYCLOAK_CA_CERTFILE
-        token = oauth2_session.fetch_token(token_url=token_url, username=username,
-            password=password, client_id=client_id, client_secret=client_secret, verify=verify_ssl)
-        userinfo = oauth2_session.get(userinfo_url).json()
-        return token, userinfo
-
-    def _get_token_and_userinfo_redirect_flow(self, request):
-        authorization_code_url=request.build_absolute_uri()
-        redirect_url=request.build_absolute_uri(reverse('django_airavata_auth:callback'))
-        client_id = settings.KEYCLOAK_CLIENT_ID
-        client_secret = settings.KEYCLOAK_CLIENT_SECRET
-        token_url = settings.KEYCLOAK_TOKEN_URL
-        userinfo_url = settings.KEYCLOAK_USERINFO_URL
-        verify_ssl = settings.KEYCLOAK_VERIFY_SSL
-        state = request.session['OAUTH2_STATE']
-        logger.debug("state={}".format(state))
-        oauth2_session = OAuth2Session(client_id, scope='openid', redirect_uri=redirect_url, state=state)
-        if hasattr(settings, 'KEYCLOAK_CA_CERTFILE'):
-            oauth2_session.verify = settings.KEYCLOAK_CA_CERTFILE
-        token = oauth2_session.fetch_token(token_url, client_secret=client_secret,
-            authorization_response=authorization_code_url, verify=verify_ssl)
-        userinfo = oauth2_session.get(userinfo_url).json()
-        return token, userinfo

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/middleware.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/middleware.py b/django_portal/django_airavata/apps/auth/middleware.py
deleted file mode 100644
index 2ee937d..0000000
--- a/django_portal/django_airavata/apps/auth/middleware.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from . import utils
-
-def authz_token_middleware(get_response):
-    "Automatically add the 'authz_token' to the request"
-
-    def middleware(request):
-
-        authz_token = None
-        if request.user.is_authenticated:
-            authz_token = utils.get_authz_token(request)
-
-        request.authz_token = authz_token
-
-        return get_response(request)
-
-    return middleware

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/migrations/__init__.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/migrations/__init__.py b/django_portal/django_airavata/apps/auth/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/models.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/models.py b/django_portal/django_airavata/apps/auth/models.py
deleted file mode 100644
index 71a8362..0000000
--- a/django_portal/django_airavata/apps/auth/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/auth_error.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/auth_error.html b/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/auth_error.html
deleted file mode 100644
index b7f5d58..0000000
--- a/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/auth_error.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-    <head>
-        <title>Authentication Error</title>
-    </head>
-    <body>
-        <h1>Authentication Error</h1>
-        <p>
-            Failed to process authentication callback. You might want to <a href="{{ login_url }}">try logging in again</a>.
-        </p>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/login.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/login.html b/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/login.html
deleted file mode 100644
index fb326b0..0000000
--- a/django_portal/django_airavata/apps/auth/templates/django_airavata_auth/login.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{% extends 'main_base.html' %}
-
-{% block content %}
-
-<div class="container">
-    <div class="row">
-        <div class="col-md-6 col-md-offset-3">
-            <div class="panel panel-default">
-                <div class="panel-body">
-                    <h3>Login</h3>
-                    <form action="{% url 'django_airavata_auth:handle_login' %}" method="post">
-                        {% csrf_token %}
-                        <div class="form-group">
-                            <label for="username">Username</label>
-                            <input type="text" class="form-control" id="username" name="username" placeholder="Username" value="{{ username }}">
-                        </div>
-                        <div class="form-group">
-                            <label for="password">Password</label>
-                            <input type="password" class="form-control" id="password" name="password" placeholder="Password">
-                        </div>
-                        <button type="submit" class="btn btn-default">Submit</button>
-                    </form>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-{% endblock content %}

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/tests.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/tests.py b/django_portal/django_airavata/apps/auth/tests.py
deleted file mode 100644
index 7ce503c..0000000
--- a/django_portal/django_airavata/apps/auth/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/urls.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/urls.py b/django_portal/django_airavata/apps/auth/urls.py
deleted file mode 100644
index 4cb5b35..0000000
--- a/django_portal/django_airavata/apps/auth/urls.py
+++ /dev/null
@@ -1,13 +0,0 @@
-
-from django.conf.urls import url
-
-from . import views
-
-app_name = 'django_airavata_auth'
-urlpatterns = [
-    url(r'^login$', views.start_login, name='login'),
-    url(r'^handle_login$', views.handle_login, name='handle_login'),
-    url(r'^logout$', views.start_logout, name='logout'),
-    url(r'^callback', views.callback, name='callback'),
-    url(r'^error', views.auth_error, name='error'),
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/utils.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/utils.py b/django_portal/django_airavata/apps/auth/utils.py
deleted file mode 100644
index 7d0bee4..0000000
--- a/django_portal/django_airavata/apps/auth/utils.py
+++ /dev/null
@@ -1,13 +0,0 @@
-
-from apache.airavata.model.security.ttypes import AuthzToken
-
-from django.conf import settings
-
-def get_authz_token(request):
-    if 'ACCESS_TOKEN' in request.session:
-        access_token = request.session['ACCESS_TOKEN']
-        username = request.user.username
-        gateway_id = settings.GATEWAY_ID
-        return AuthzToken(accessToken=access_token, claimsMap={'gatewayID': gateway_id, 'userName': username})
-    else:
-        return None

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/auth/views.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/auth/views.py b/django_portal/django_airavata/apps/auth/views.py
deleted file mode 100644
index a066bc8..0000000
--- a/django_portal/django_airavata/apps/auth/views.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from django.conf import settings
-from django.contrib.auth import authenticate, login, logout
-from django.http import HttpResponse
-from django.shortcuts import render, redirect
-from django.urls import reverse
-
-from requests_oauthlib import OAuth2Session
-
-import logging
-from urllib.parse import quote
-
-logger = logging.getLogger(__name__)
-
-# Create your views here.
-
-def start_login(request):
-    # TODO: If the gateway is configured to not allow username password authentication, then redirect to Keycloak
-    # client_id = settings.KEYCLOAK_CLIENT_ID
-    # base_authorize_url = settings.KEYCLOAK_AUTHORIZE_URL
-    # oauth2_session = OAuth2Session(client_id, scope='openid', redirect_uri=request.build_absolute_uri(reverse('django_airavata_auth:callback')))
-    # authorization_url, state = oauth2_session.authorization_url(base_authorize_url)
-    # logger.debug("authorization_url={}, state={}".format(authorization_url, state))
-    # # Store state in session for later validation
-    # request.session['OAUTH2_STATE'] = state
-    # return redirect(authorization_url)
-    return render(request, 'django_airavata_auth/login.html')
-
-def handle_login(request):
-    username = request.POST['username']
-    password = request.POST['password']
-    user = authenticate(username=username, password=password, request=request)
-    logger.debug("authenticated user: {}".format(user))
-    try:
-        if user is not None:
-            login(request, user)
-            return redirect(settings.LOGIN_REDIRECT_URL)
-        else:
-            # TODO: add error message that login failed
-            return render(request, 'django_airavata_auth/login.html', {
-                'username': username
-            })
-    except Exception as err:
-        logger.exception("An error occurred while logging in with username and password")
-        return redirect(reverse('django_airavata_auth:error'))
-
-def start_logout(request):
-    logout(request)
-    redirect_url = request.build_absolute_uri(reverse(settings.LOGOUT_REDIRECT_URL))
-    return redirect(settings.KEYCLOAK_LOGOUT_URL + "?redirect_uri=" + quote(redirect_url))
-
-def callback(request):
-    try:
-        user = authenticate(request=request)
-        login(request, user)
-        return redirect(settings.LOGIN_REDIRECT_URL)
-    except Exception as err:
-        logger.exception("An error occurred while processing OAuth2 callback: {}".format(request.build_absolute_uri()))
-        return redirect(reverse('django_airavata_auth:error'))
-
-def auth_error(request):
-    return render(request, 'django_airavata_auth/auth_error.html', {
-        'login_url': settings.LOGIN_URL
-    })
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/__init__.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/__init__.py b/django_portal/django_airavata/apps/groups/__init__.py
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/admin.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/admin.py b/django_portal/django_airavata/apps/groups/admin.py
deleted file mode 100644
index 8c38f3f..0000000
--- a/django_portal/django_airavata/apps/groups/admin.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib import admin
-
-# Register your models here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/apps.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/apps.py b/django_portal/django_airavata/apps/groups/apps.py
deleted file mode 100644
index e66c251..0000000
--- a/django_portal/django_airavata/apps/groups/apps.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.apps import AppConfig
-
-
-class GroupsConfig(AppConfig):
-    name = 'django_airavata.apps.groups'
-    label = 'django_airavata_group'

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/forms.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/forms.py b/django_portal/django_airavata/apps/groups/forms.py
deleted file mode 100644
index d3ba029..0000000
--- a/django_portal/django_airavata/apps/groups/forms.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Create your forms here.
-from django import forms
-
-class CreateForm(forms.Form):
-    domain_id = forms.CharField(required=True, widget=forms.HiddenInput)
-    group_name = forms.CharField(required=True)
-    description = forms.CharField(
-        required=True,
-        widget=forms.Textarea
-    )
-    group_owner = forms.CharField(required=True, widget=forms.HiddenInput)
-    CHOICES1 = (('1', 'User Level',), ('2', 'Admin Level',))
-    group_type = forms.ChoiceField(widget=forms.HiddenInput, choices=CHOICES1, required=True)
-    CHOICES2 = (('0', 'Single User',), ('1', 'Multi User',))
-    group_cardinality = forms.ChoiceField(widget=forms.HiddenInput, choices=CHOICES2, required=True)
-
-#class AddForm(forms.Form):
-#    users = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
-
-#class RemoveForm(forms.Form):
-#    members = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, required=False)
-
-class AddForm(forms.Form):
-    def __init__(self, data=None, user_choices=None):
-        super().__init__(data=data)
-        self.fields["users"] = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=user_choices)
-
-class RemoveForm(forms.Form):
-    def __init__(self, data=None, user_choices=None):
-        super().__init__(data=data)
-        self.fields["members"] = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=user_choices)

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/migrations/__init__.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/migrations/__init__.py b/django_portal/django_airavata/apps/groups/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/models.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/models.py b/django_portal/django_airavata/apps/groups/models.py
deleted file mode 100644
index 71a8362..0000000
--- a/django_portal/django_airavata/apps/groups/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_details.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_details.html b/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_details.html
deleted file mode 100644
index 45364c5..0000000
--- a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_details.html
+++ /dev/null
@@ -1,61 +0,0 @@
-{% extends 'base.html' %}
-
-{% block content %}
-
-<h1 align="center">Group Details</h1>
-
-<div class="jumbotron">
-    <div class="container">
-        {% if user.is_authenticated %}
-        <div class="row">
-            <div class="col-md-12 table-responsive">
-                <table class="table table-striped table-bordered">
-                    <thead>
-                        <tr>
-                            <th style="text-align:center">PROPERTY</th>
-                            <th style="text-align:center">VALUE</th>
-                        </tr>
-                    </thead>
-                    <tbody align="center">
-                        <tr>
-                            <td>Group Name</td>
-                            <td>{{ group.name }}</td>
-                        </tr>
-                        <tr>
-                            <td>Description</td>
-                            <td>{{ group.description }}</td>
-                        </tr>
-                        <tr>
-                            <td>Onwer ID</td>
-                            <td>{{ group.ownerId }}</td>
-                        </tr>
-                        {% if u_id == group.ownerId %}
-                        <tr>
-                            <td>Group Members</td>
-                            <td>
-                            {% for member in members %}
-                            {{ member.userId }}<br>
-                            {% endfor %}
-                            </td>
-                        </tr>
-                        {% endif %}
-                        <tr>
-                            <td>Created</td>
-                            <td>{{ c_time }}</td>
-                        </tr>
-                        <tr>
-                            <td>Updated</td>
-                            <td>{{ u_time }}</td>
-                        </tr>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-        <p align="right"><a class="btn btn-primary btn-xs" href="{% url 'django_airavata_groups:manage' %}" role="button">Back</a></p>
-        {% else %}
-        <p><a class="btn btn-primary btn-lg" href="{% url 'django_airavata_auth:login' %}" role="button">Login »</a></p>
-        {% endif %}
-    </div>
-</div>
-
-{% endblock content %}

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_edit.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_edit.html b/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_edit.html
deleted file mode 100644
index 507a456..0000000
--- a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/group_edit.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{% extends 'base.html' %}
-
-{% block content %}
-
-<h1 align="center">Edit Group</h1>
-<br>
-{% block body %}
-<div class="container">
-    {% if user.is_authenticated %}
-    <h5>Group Name: {{ group_name }}</h5>
-    <div class="row">
-        <div class="col-lg-6">
-            <h3>Add</h3>
-            <form action="" method="post">
-                {% csrf_token %}
-                {{ add_form.as_p }}
-                <button class="btn btn-primary btn-xs" type="submit" role="button" name="add">Add</button>
-            </form>
-        </div>
-        <div class="col-lg-6">
-            <h3>Remove</h3>
-            <form action="" method="post">
-                {% csrf_token %}
-                {{ remove_form.as_p }}
-                <button class="btn btn-primary btn-xs" type="submit" role="button" name="remove" onclick="return confirm('Are you sure you want to remove the selected members from the group? This action cannot be undone!')">Remove</button>
-            </form>
-        </div>
-    </div>
-    <br>
-    <br>
-    <p align="right"><a class="btn btn-primary btn-xs" href="{% url 'django_airavata_groups:manage' %}" role="button">Back</a></p>
-    {% else %}
-    <p><a class="btn btn-primary btn-lg" href="{% url 'django_airavata_auth:login' %}" role="button">Login »</a></p>
-    {% endif %}
-</div>
-{% endblock %}
-
-{% endblock content %}

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_create.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_create.html b/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_create.html
deleted file mode 100644
index e7ac749..0000000
--- a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_create.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{% extends 'base.html' %}
-
-{% block content %}
-
-<h1 align="center">Create a Group</h1>
-<br>
-{% block body %}
-<div class="container">
-    {% if user.is_authenticated %}
-    <div class="row">
-        <div class="col-md-12">
-            <h3>Enter Group Details</h3>
-            <form action="" method="post">
-                {% csrf_token %}
-                {{ form.as_p }}
-                <button class="btn btn-primary btn-xs" type="submit" role="button">Submit</button>
-            </form>
-        </div>
-    </div>
-    <br>
-    <p align="right"><a class="btn btn-primary btn-xs" href="{% url 'django_airavata_groups:manage' %}" role="button">Back</a></p>
-    {% else %}
-    <p><a class="btn btn-primary btn-lg" href="{% url 'django_airavata_auth:login' %}" role="button">Login »</a></p>
-    {% endif %}
-</div>
-{% endblock %}
-
-{% endblock content %}

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_manage.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_manage.html b/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_manage.html
deleted file mode 100644
index 2e7fc0b..0000000
--- a/django_portal/django_airavata/apps/groups/templates/django_airavata_groups/groups_manage.html
+++ /dev/null
@@ -1,99 +0,0 @@
-{% extends 'base.html' %}
-
-{% block content %}
-
-<h1 align="center">Manage Groups</h1>
-<br>
-<div class="container">
-    {% if user.is_authenticated %}
-    <div class="row">
-        <a href="{% url 'django_airavata_groups:create' %}">
-            <button type="button" class="btn btn-default toggle-add-tenant"><span
-                        class="glyphicon glyphicon-plus"></span>Create a New Group
-            </button>
-        </a>
-    </div>
-    <br>
-    <hr>
-    {% if messages %}
-    <div class="alert alert-info">
-        <ul class="messages">
-            {% for message in messages %}
-            <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
-            {% endfor %}
-        </ul>
-    </div>
-    {% endif %}
-    <br>
-    <div class="row">
-        <div class="col-md-12 table-responsive">
-            <h3>Groups you own</h3>
-            <br>
-            <br>
-            <table class="table table-striped table-bordered">
-                <thead>
-                    <tr>
-                        <th style="text-align:center">NAME</th>
-                        <th style="text-align:center">OPTIONS</th>
-                    </tr>
-                </thead>
-                <tbody align="center">
-                    {% for group in owner %}
-                    <tr>
-                        <td>{{ group.name }}</td>
-                        <td>
-                            <a href="{% url 'django_airavata_groups:view' %}?group_id={{ group.groupId | urlencode }}">
-                                <button type="button" class="btn btn-primary btn-xs">View</button>
-                            </a>
-                            <a href="{% url 'django_airavata_groups:edit' %}?group_id={{ group.groupId | urlencode }}">
-                                <button type="button" class="btn btn-primary btn-xs">Edit</button>
-                            </a>
-                            <a href="{% url 'django_airavata_groups:delete' %}?group_id={{ group.groupId | urlencode }}">
-                                <button type="button" class="btn btn-danger btn-xs" onclick="return confirm('Are you sure you want to delete the group? This action cannot be undone!')">Delete</button>
-                            </a>
-                        </td>
-                    </tr>
-                    {% endfor %}
-                </tbody>
-            </table>
-        </div>
-    </div>
-    <br>
-    <hr>
-    <br>
-    <div class="row">
-        <div class="col-md-12 table-responsive">
-            <h3>Groups you're a member of</h3>
-            <br>
-            <br>
-            <table class="table table-striped table-bordered">
-                <thead>
-                    <tr>
-                        <th style="text-align:center">NAME</th>
-                        <th style="text-align:center">OPTIONS</th>
-                    </tr>
-                </thead>
-                <tbody align="center">
-                    {% for group in member %}
-                    <tr>
-                        <td>{{ group.name }}</td>
-                        <td>
-                            <a href="{% url 'django_airavata_groups:view' %}?group_id={{ group.groupId | urlencode }}">
-                                <button type="button" class="btn btn-primary btn-xs">View</button>
-                            </a>
-                            <a href="{% url 'django_airavata_groups:leave' %}?group_id={{ group.groupId | urlencode }}">
-                                <button type="button" class="btn btn-danger btn-xs" onclick="return confirm('Are you sure you want to leave the group? This action cannot be undone!')">Leave</button>
-                            </a>
-                        </td>
-                    </tr>
-                    {% endfor %}
-                </tbody>
-            </table>
-        </div>
-    </div>
-    {% else %}
-    <p><a class="btn btn-primary btn-lg" href="{% url 'django_airavata_auth:login' %}" role="button">Login »</a></p>
-    {% endif %}
-</div>
-
-{% endblock content %}

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/tests.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/tests.py b/django_portal/django_airavata/apps/groups/tests.py
deleted file mode 100644
index 7ce503c..0000000
--- a/django_portal/django_airavata/apps/groups/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/urls.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/urls.py b/django_portal/django_airavata/apps/groups/urls.py
deleted file mode 100644
index d4ed1f3..0000000
--- a/django_portal/django_airavata/apps/groups/urls.py
+++ /dev/null
@@ -1,9 +0,0 @@
-
-from django.conf.urls import url
-
-from . import views
-
-app_name = 'django_airavata_groups'
-urlpatterns = [
-    url(r'^$', views.groups_list, name='groups'),
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/groups/views.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/groups/views.py b/django_portal/django_airavata/apps/groups/views.py
deleted file mode 100644
index 805ceab..0000000
--- a/django_portal/django_airavata/apps/groups/views.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Create your views here.
-from django.conf import settings
-from django.contrib.auth.decorators import login_required
-from django.shortcuts import render, redirect
-
-import logging
-
-logger = logging.getLogger(__name__)
-
-
-@login_required
-def groups_list(request):
-
-    gateway_id = settings.GATEWAY_ID
-
-    try:
-        groups = request.sharing_client.getGroups(gateway_id, 0, -1)
-        return render(request, 'django_airavata_groups/groups_list.html', {
-            'groups': groups
-        })
-    except Exception as e:
-        logger.exception("Failed to load groups")
-        return redirect('/')

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/__init__.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/__init__.py b/django_portal/django_airavata/apps/workspace/__init__.py
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/admin.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/admin.py b/django_portal/django_airavata/apps/workspace/admin.py
deleted file mode 100644
index 8c38f3f..0000000
--- a/django_portal/django_airavata/apps/workspace/admin.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib import admin
-
-# Register your models here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/apps.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/apps.py b/django_portal/django_airavata/apps/workspace/apps.py
deleted file mode 100644
index ffa1ad0..0000000
--- a/django_portal/django_airavata/apps/workspace/apps.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.apps import AppConfig
-
-
-class WorkspaceConfig(AppConfig):
-    name = 'django_airavata.apps.workspace'
-    label = 'django_airavata_workspace'

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/migrations/__init__.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/migrations/__init__.py b/django_portal/django_airavata/apps/workspace/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/models.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/models.py b/django_portal/django_airavata/apps/workspace/models.py
deleted file mode 100644
index 71a8362..0000000
--- a/django_portal/django_airavata/apps/workspace/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/templates/django_airavata_workspace/projects_list.html
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/templates/django_airavata_workspace/projects_list.html b/django_portal/django_airavata/apps/workspace/templates/django_airavata_workspace/projects_list.html
deleted file mode 100644
index 4a52225..0000000
--- a/django_portal/django_airavata/apps/workspace/templates/django_airavata_workspace/projects_list.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends 'base.html' %}
-
-{% load static %}
-
-{% block content %}
-
-<h1>Projects</h1>
-
-<div id="app"></div>
-
-{% endblock content %}
-
-{% block scripts %}
-
-<script src="{% static "django_airavata_workspace/build/main.js" %}"></script>
-{% endblock %}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/tests.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/tests.py b/django_portal/django_airavata/apps/workspace/tests.py
deleted file mode 100644
index 7ce503c..0000000
--- a/django_portal/django_airavata/apps/workspace/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/urls.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/urls.py b/django_portal/django_airavata/apps/workspace/urls.py
deleted file mode 100644
index 6bc73a7..0000000
--- a/django_portal/django_airavata/apps/workspace/urls.py
+++ /dev/null
@@ -1,9 +0,0 @@
-
-from django.conf.urls import url
-
-from . import views
-
-app_name = 'django_airavata_workspace'
-urlpatterns = [
-    url(r'^projects$', views.projects_list, name='projects'),
-]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/apps/workspace/views.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/apps/workspace/views.py b/django_portal/django_airavata/apps/workspace/views.py
deleted file mode 100644
index 6967f25..0000000
--- a/django_portal/django_airavata/apps/workspace/views.py
+++ /dev/null
@@ -1,21 +0,0 @@
-
-from django_airavata.apps.api.views import ProjectViewSet
-from rest_framework.renderers import JSONRenderer
-from django.conf import settings
-from django.contrib.auth.decorators import login_required
-from django.shortcuts import render, redirect
-
-import logging
-
-logger = logging.getLogger(__name__)
-
-
-@login_required
-def projects_list(request):
-
-    response = ProjectList().get(request)
-    projects_json = JSONRenderer().render(response.data)
-
-    return render(request, 'django_airavata_workspace/projects_list.html', {
-        'projects_data': projects_json
-    })

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/middleware.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/middleware.py b/django_portal/django_airavata/middleware.py
deleted file mode 100644
index 8954d11..0000000
--- a/django_portal/django_airavata/middleware.py
+++ /dev/null
@@ -1,123 +0,0 @@
-
-from apache.airavata.api import Airavata
-from apache.airavata.api.sharing import SharingRegistryService
-
-from thrift import Thrift
-from thrift.transport import TSSLSocket
-from thrift.transport import TSocket
-from thrift.transport import TTransport
-from thrift.protocol import TBinaryProtocol
-
-from django.conf import settings
-
-import logging
-
-logger = logging.getLogger(__name__)
-
-def get_unsecure_transport(hostname, port):
-    # Create a socket to the Airavata Server
-    transport = TSocket.TSocket(hostname, port)
-
-    # Use Buffered Protocol to speedup over raw sockets
-    transport = TTransport.TBufferedTransport(transport)
-    return transport
-
-def get_secure_transport(hostname, port):
-
-    # Create a socket to the Airavata Server
-    # TODO: validate server certificate
-    transport = TSSLSocket.TSSLSocket(hostname, port, validate=False)
-
-    # Use Buffered Protocol to speedup over raw sockets
-    transport = TTransport.TBufferedTransport(transport)
-    return transport
-
-def get_transport(hostname, port, secure=True):
-    if secure:
-        transport = get_secure_transport(hostname, port)
-    else:
-        transport = get_unsecure_transport(hostname, port)
-    return transport
-
-def get_airavata_client(transport):
-
-    # Airavata currently uses Binary Protocol
-    protocol = TBinaryProtocol.TBinaryProtocol(transport)
-
-    # Create a Airavata client to use the protocol encoder
-    client=Airavata.Client(protocol)
-    return client
-
-def get_sharing_client(transport):
-
-    protocol = TBinaryProtocol.TBinaryProtocol(transport)
-
-    return SharingRegistryService.Client(protocol)
-
-def airavata_client(get_response):
-    "Open and close Airavata client for each request"
-
-    def middleware(request):
-
-        # If user is logged in create an airavata api client for the request
-        if request.user.is_authenticated:
-            transport = get_transport(settings.AIRAVATA_API_HOST, settings.AIRAVATA_API_PORT, settings.AIRAVATA_API_SECURE)
-            airavata_client = get_airavata_client(transport)
-
-            try:
-                transport.open()
-            except Exception as e:
-                logger.exception("Failed to open thrift connection to API server")
-
-            if transport.isOpen():
-                request.airavata_client = airavata_client
-            else:
-                # if request.airavata_client is None, this will indicate to view
-                # code that the API server is down
-                request.airavata_client = None
-
-            response = get_response(request)
-
-            if transport.isOpen():
-                transport.close()
-                logger.debug("transport closed in middleware")
-        else:
-            response = get_response(request)
-
-        return response
-
-    return middleware
-
-def sharing_client(get_response):
-    "Open and close Sharing registry client for each request"
-
-    def middleware(request):
-
-        # If user is logged in create an airavata api client for the request
-        if request.user.is_authenticated:
-            transport = get_transport(settings.SHARING_API_HOST, settings.SHARING_API_PORT, settings.SHARING_API_SECURE)
-            sharing_client = get_sharing_client(transport)
-
-            try:
-                transport.open()
-            except Exception as e:
-                logger.exception("Failed to open thrift connection to Sharing Registry server")
-
-            if transport.isOpen():
-                request.sharing_client = sharing_client
-            else:
-                # if request.sharing_client is None, this will indicate to view
-                # code that the Sharing server is down
-                request.sharing_client = None
-
-            response = get_response(request)
-
-            if transport.isOpen():
-                transport.close()
-                logger.debug("transport closed in middleware")
-        else:
-            response = get_response(request)
-
-        return response
-
-    return middleware

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/resources/incommon_rsa_server_ca.pem
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/resources/incommon_rsa_server_ca.pem b/django_portal/django_airavata/resources/incommon_rsa_server_ca.pem
deleted file mode 100644
index 63c6bae..0000000
--- a/django_portal/django_airavata/resources/incommon_rsa_server_ca.pem
+++ /dev/null
@@ -1,68 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIF+TCCA+GgAwIBAgIQRyDQ+oVGGn4XoWQCkYRjdDANBgkqhkiG9w0BAQwFADCB
-iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
-cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
-BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQx
-MDA2MDAwMDAwWhcNMjQxMDA1MjM1OTU5WjB2MQswCQYDVQQGEwJVUzELMAkGA1UE
-CBMCTUkxEjAQBgNVBAcTCUFubiBBcmJvcjESMBAGA1UEChMJSW50ZXJuZXQyMREw
-DwYDVQQLEwhJbkNvbW1vbjEfMB0GA1UEAxMWSW5Db21tb24gUlNBIFNlcnZlciBD
-QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJwb8bsvf2MYFVFRVA+e
-xU5NEFj6MJsXKZDmMwysE1N8VJG06thum4ltuzM+j9INpun5uukNDBqeso7JcC7v
-HgV9lestjaKpTbOc5/MZNrun8XzmCB5hJ0R6lvSoNNviQsil2zfVtefkQnI/tBPP
-iwckRR6MkYNGuQmm/BijBgLsNI0yZpUn6uGX6Ns1oytW61fo8BBZ321wDGZq0GTl
-qKOYMa0dYtX6kuOaQ80tNfvZnjNbRX3EhigsZhLI2w8ZMA0/6fDqSl5AB8f2IHpT
-eIFken5FahZv9JNYyWL7KSd9oX8hzudPR9aKVuDjZvjs3YncJowZaDuNi+L7RyML
-fzcCAwEAAaOCAW4wggFqMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bL
-MB0GA1UdDgQWBBQeBaN3j2yW4luHS6a0hqxxAAznODAOBgNVHQ8BAf8EBAMCAYYw
-EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH
-AwIwGwYDVR0gBBQwEjAGBgRVHSAAMAgGBmeBDAECAjBQBgNVHR8ESTBHMEWgQ6BB
-hj9odHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQ2VydGlmaWNh
-dGlvbkF1dGhvcml0eS5jcmwwdgYIKwYBBQUHAQEEajBoMD8GCCsGAQUFBzAChjNo
-dHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vVVNFUlRydXN0UlNBQWRkVHJ1c3RDQS5j
-cnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZI
-hvcNAQEMBQADggIBAC0RBjjW29dYaK+qOGcXjeIT16MUJNkGE+vrkS/fT2ctyNMU
-11ZlUp5uH5gIjppIG8GLWZqjV5vbhvhZQPwZsHURKsISNrqOcooGTie3jVgU0W+0
-+Wj8mN2knCVANt69F2YrA394gbGAdJ5fOrQmL2pIhDY0jqco74fzYefbZ/VS29fR
-5jBxu4uj1P+5ZImem4Gbj1e4ZEzVBhmO55GFfBjRidj26h1oFBHZ7heDH1Bjzw72
-hipu47Gkyfr2NEx3KoCGMLCj3Btx7ASn5Ji8FoU+hCazwOU1VX55mKPU1I2250Lo
-RCASN18JyfsD5PVldJbtyrmz9gn/TKbRXTr80U2q5JhyvjhLf4lOJo/UzL5WCXED
-Smyj4jWG3R7Z8TED9xNNCxGBMXnMete+3PvzdhssvbORDwBZByogQ9xL2LUZFI/i
-eoQp0UM/L8zfP527vWjEzuDN5xwxMnhi+vCToh7J159o5ah29mP+aJnvujbXEnGa
-nrNxHzu+AGOePV8hwrGGG7hOIcPDQwkuYwzN/xT29iLp/cqf9ZhEtkGcQcIImH3b
-oJ8ifsCnSbu0GB9L06Yqh7lcyvKDTEADslIaeSEINxhO2Y1fmcYFX/Fqrrp1WnhH
-OjplXuXE0OPa0utaKC25Aplgom88L2Z8mEWcyfoB7zKOfD759AN7JKZWCYwk
------END CERTIFICATE-----
------BEGIN CERTIFICATE-----
-MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCB
-iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl
-cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV
-BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTAw
-MjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMCVVMxEzARBgNV
-BAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
-aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2Vy
-dGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
-AoICAQCAEmUXNg7D2wiz0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B
-3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2jY0K2dvKpOyuR+OJv0OwWIJAJPuLodMkY
-tJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFnRghRy4YUVD+8M/5+bJz/
-Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O+T23LLb2
-VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT
-79uq/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6
-c0Plfg6lZrEpfDKEY1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmT
-Yo61Zs8liM2EuLE/pDkP2QKe6xJMlXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97l
-c6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8yexDJtC/QV9AqURE9JnnV4ee
-UB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+eLf8ZxXhyVeE
-Hg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
-BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8G
-A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPF
-Up/L+M+ZBn8b2kMVn54CVVeWFPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KO
-VWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ7l8wXEskEVX/JJpuXior7gtNn3/3
-ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQEg9zKC7F4iRO/Fjs
-8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM8WcR
-iQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYze
-Sf7dNXGiFSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZ
-XHlKYC6SQK5MNyosycdiyA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/
-qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9cJ2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRB
-VXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGwsAvgnEzDHNb842m1R0aB
-L6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gxQ+6IHdfG
-jjxDah2nGN59PRbxYvnKkKj9
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/settings.py
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/settings.py b/django_portal/django_airavata/settings.py
deleted file mode 100644
index cca6da1..0000000
--- a/django_portal/django_airavata/settings.py
+++ /dev/null
@@ -1,159 +0,0 @@
-"""
-Django settings for django_airavata_gateway project.
-
-Generated by 'django-admin startproject' using Django 1.10.5.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/1.10/topics/settings/
-
-For the full list of settings and their values, see
-https://docs.djangoproject.com/en/1.10/ref/settings/
-"""
-
-import os
-
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-
-
-# Quick-start development settings - unsuitable for production
-# See https://docs.djangoproject.com/en/1.10/howto/deployment/checklist/
-
-# SECURITY WARNING: keep the secret key used in production secret!
-SECRET_KEY = 'bots0)m91u_i4gpw+103o%2jn#j57wjh7s@9$x*27_4^*jyku4'
-
-# SECURITY WARNING: don't run with debug turned on in production!
-DEBUG = True
-INTERNAL_IPS = ["127.0.0.1"]
-
-ALLOWED_HOSTS = []
-
-
-# Application definition
-
-INSTALLED_APPS = [
-    'django_airavata.apps.admin.apps.AdminConfig',
-    'django.contrib.auth',
-    'django.contrib.contenttypes',
-    'django.contrib.sessions',
-    'django.contrib.messages',
-    'django.contrib.staticfiles',
-    'django_airavata.apps.auth.apps.AuthConfig',
-    'django_airavata.apps.workspace.apps.WorkspaceConfig',
-    'rest_framework',
-    'django_airavata.apps.api.apps.ApiConfig',
-    'django_airavata.apps.groups.apps.GroupsConfig',
-]
-
-MIDDLEWARE = [
-    'django.middleware.security.SecurityMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.middleware.common.CommonMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django.contrib.messages.middleware.MessageMiddleware',
-    'django.middleware.clickjacking.XFrameOptionsMiddleware',
-    'django_airavata.apps.auth.middleware.authz_token_middleware',
-    'django_airavata.middleware.airavata_client',
-    'django_airavata.middleware.sharing_client',
-]
-
-ROOT_URLCONF = 'django_airavata.urls'
-
-TEMPLATES = [
-    {
-        'BACKEND': 'django.template.backends.django.DjangoTemplates',
-        'DIRS': [os.path.join(BASE_DIR, "django_airavata", "templates")],
-        'APP_DIRS': True,
-        'OPTIONS': {
-            'context_processors': [
-                'django.template.context_processors.debug',
-                'django.template.context_processors.request',
-                'django.contrib.auth.context_processors.auth',
-                'django.contrib.messages.context_processors.messages',
-            ],
-        },
-    },
-]
-
-WSGI_APPLICATION = 'django_airavata.wsgi.application'
-
-
-# Database
-# https://docs.djangoproject.com/en/1.10/ref/settings/#databases
-
-DATABASES = {
-    'default': {
-        'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
-    }
-}
-
-
-# Password validation
-# https://docs.djangoproject.com/en/1.10/ref/settings/#auth-password-validators
-
-AUTH_PASSWORD_VALIDATORS = [
-    {
-        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
-    },
-    {
-        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
-    },
-    {
-        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
-    },
-    {
-        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
-    },
-]
-
-
-# Internationalization
-# https://docs.djangoproject.com/en/1.10/topics/i18n/
-
-LANGUAGE_CODE = 'en-us'
-
-TIME_ZONE = 'UTC'
-
-USE_I18N = True
-
-USE_L10N = True
-
-USE_TZ = True
-
-
-# Static files (CSS, JavaScript, Images)
-# https://docs.djangoproject.com/en/1.10/howto/static-files/
-
-STATIC_URL = '/static/'
-STATICFILES_DIRS = [os.path.join(BASE_DIR, "django_airavata", "static")]
-
-AUTHENTICATION_BACKENDS = [
-    'django_airavata.apps.auth.backends.KeycloakBackend'
-]
-
-LOGIN_URL = 'django_airavata_auth:login'
-LOGIN_REDIRECT_URL = 'home'
-LOGOUT_REDIRECT_URL = 'home'
-
-LOGGING = {
-    'version': 1,
-    'handlers': {
-        'console': {
-            'class': 'logging.StreamHandler',
-        },
-    },
-    'loggers': {
-        'django_airavata': {
-            'handlers': ['console'],
-            'level': 'DEBUG' if DEBUG else 'INFO'
-        },
-    },
-}
-
-# Allow all settings to be overridden by settings_local.py file
-try:
-    from django_airavata.settings_local import *
-except ImportError:
-    pass

http://git-wip-us.apache.org/repos/asf/airavata-django-portal/blob/d8d7c37a/django_portal/django_airavata/settings_local.py.sample
----------------------------------------------------------------------
diff --git a/django_portal/django_airavata/settings_local.py.sample b/django_portal/django_airavata/settings_local.py.sample
deleted file mode 100644
index b86ef0b..0000000
--- a/django_portal/django_airavata/settings_local.py.sample
+++ /dev/null
@@ -1,34 +0,0 @@
-"""
-Override default Django settings for a particular instance.
-
-Copy this file to settings_local.py and modify as appropriate. This file will
-be imported into settings.py last of all so settings in this file override any
-defaults specified in settings.py.
-"""
-
-import os
-
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-
-# Keycloak Configuration
-KEYCLOAK_CLIENT_ID = '...'
-KEYCLOAK_CLIENT_SECRET = '...'
-KEYCLOAK_AUTHORIZE_URL = '...'
-KEYCLOAK_TOKEN_URL = '...'
-KEYCLOAK_USERINFO_URL = '...'
-KEYCLOAK_LOGOUT_URL = '...'
-# Optional: specify if using self-signed certificate or certificate from unrecognized CA
-#KEYCLOAK_CA_CERTFILE = os.path.join(BASE_DIR, "django_airavata", "resources", "incommon_rsa_server_ca.pem")
-KEYCLOAK_VERIFY_SSL = True
-
-# Airavata API Configuration
-GATEWAY_ID = 'default'
-AIRAVATA_API_HOST = 'localhost'
-AIRAVATA_API_PORT = 8930
-AIRAVATA_API_SECURE = False
-
-# Sharing API Configuration
-SHARING_API_HOST = 'localhost'
-SHARING_API_PORT = 7878
-SHARING_API_SECURE = False