Portal Interface for Apache Airavata Custos Security

Clone this repo:
  1. cddc1bf Merge pull request #176 from apache/local-custos-integration-fixes by Marcus Christie · 1 year, 7 months ago master
  2. e3c9d8d Updated README with quickstart instructions for working with Custos local development by Marcus Christie · 1 year, 7 months ago
  3. 3f86396 Downgrade PyJWT, newer one has incompatible method signature by Marcus Christie · 1 year, 7 months ago
  4. 2a51327 Run dev server on port 9002 since local Custos docker containers take ports 9000 and 9001 by Marcus Christie · 1 year, 7 months ago
  5. dd7ba07 Merge pull request #173 from apache:fix-django-dockerfile by Marcus Christie · 1 year, 8 months ago

Airavata Custos Portal

Getting started with running locally

.env file

Assuming you are running Custos locally (see https://github.com/apache/airavata-custos/tree/develop#quickstart), edit the .env file to match the client id and secret generated by the Custos bootstrap service:

CUSTOS_CLIENT_ID="custos-s8qf9g3odbbcdsgd2khv-10000000"
CUSTOS_CLIENT_SEC="..."
CUSTOS_API_URL="http://localhost:10000"
CUSTOS_SUPER_CLIENT_ID="custos-s8qf9g3odbbcdsgd2khv-10000000"

Running the frontend

You need Node.js 14 and Yarn 1 installed.

yarn install
yarn run serve

Running the Django server

You need Python 3.9+.

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
./manage.py migrate
./manage.py runserver

How to use as a Django app

Airavat custos portal is available as a python package to install and customise for tenants needs. The forllowing instructions are for setting up a customised portal using all the features available in the airavata custos portal.

  1. Install
pip install airavata-custos-portal
  1. Create a Django app
django-admin startproject my_first_custos_app .
cd my_first_custos_app
django-admin startapp apps
cd apps
django-admin startapp frontend
  1. Include the custos portal api and frontend in the urls.
# my_first_custos_app/apps/frontend/urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("api/", include("airavata_custos_portal.apps.api.urls")),
    path("", include("airavata_custos_portal.apps.frontend.urls")),
]
  1. Also, include the custom UI app in the urls.
# my_first_custos_app/apps/frontend/urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
    path("api/", include("airavata_custos_portal.apps.api.urls")),
    path("", include("airavata_custos_portal.apps.frontend.urls")),
    path("custom-ui/", include("my_first_custos_app.my_custom_ui.urls")),
]

Development

The application consists of a Vue.js frontend and a Django based backend. The instructions below are for setting up the local setup for development.

Change the configurations

Change the environment variables on .env

Run Vue.js app

yarn install
yarn serve

Lints and fixes files

yarn lint

Running the Django server locally

python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
./manage.py migrate
./manage.py runserver

And then point to http://localhost:8000

How to publish

  1. Build the static files
yarn build
  1. Build the python package
python -m pip install --upgrade build
python -m build
  1. Publish the python package to pypi.org. Optionally can push to test.pypi.org. See https://packaging.python.org/tutorials/packaging-projects/ for more info.
python -m pip install --upgrade twine
python -m twine upload dist/*