| # Apache Airavata Django Portal |
| |
| [](https://travis-ci.org/apache/airavata-django-portal) |
| [](https://apache-airavata-django-portal.readthedocs.io/en/latest/?badge=latest) |
| |
| The Airavata Django Portal is a web interface to the |
| [Apache Airavata](http://airavata.apache.org/) API implemented using the Django |
| web framework. The intention is that the Airavata Django Portal can be used as |
| is for a full featured web based science gateway but it can also be customized |
| through various plugins to add more domain specific functionality as needed. |
| |
| ## Getting Started |
| |
| The following steps will help you quickly get started with running the Airavata |
| Django Portal locally. This will allow you to try it out and can also be used as |
| a development environment. If you just want to run the Airavata Django Portal |
| locally, see the Docker instructions below for a more simplified approach. |
| |
| The Airavata Django Portal works with Python versions 3.6, 3.7, 3.8 and 3.9. |
| You'll need one of these versions installed locally. |
| |
| You'll also need Node.js and yarn to build the JavaScript frontend code. Please |
| install |
| [the most recent LTS version of Node.js](https://nodejs.org/en/download/). You |
| can also use [nvm](https://github.com/nvm-sh/nvm) to manage the Node.js install. |
| If you have nvm installed you can run `nvm install && nvm use` before running |
| any yarn commands. See [the Yarn package manager](https://yarnpkg.com) for |
| information on how to install yarn. |
| |
| 1. Checkout this project and create a virtual environment. |
| |
| ``` |
| git clone https://github.com/apache/airavata-django-portal.git |
| cd airavata-django-portal |
| python3 -m venv venv |
| source venv/bin/activate |
| pip install --upgrade pip setuptools wheel |
| pip install -r requirements.txt |
| ``` |
| |
| - **macOS note**: to install the MySQL dependencies you need to have the |
| MySQL development headers and libraries installed. Also, on macOS you need |
| to have openssl installed. See the |
| [mysqlclient-python installation notes](https://github.com/PyMySQL/mysqlclient-python#install) |
| for more details. |
| |
| 2. Create a local settings file. |
| |
| - You can either copy `django_airavata/settings_local.py.sample` to |
| `django_airavata/settings_local.py` and edit the contents to match your |
| Keycloak and Airavata server deployments. |
| |
| ``` |
| cp django_airavata/settings_local.py.sample django_airavata/settings_local.py |
| ``` |
| |
| - Or, if you have Admin access to an Airavata Django Portal instance, you |
| can log in, go to _Settings_ and then _Developer Console_ |
| (/admin/developers) and download a `settings_local.py` file for local |
| development. Save it to the `django_airavata/` directory. |
| |
| 3. Run Django migrations |
| |
| ``` |
| python manage.py migrate |
| ``` |
| |
| 4. Build the JavaScript sources. There are a few JavaScript packages in the |
| source tree, colocated with the Django apps in which they are used. The |
| `build_js.sh` script will build them all. |
| |
| ``` |
| ./build_js.sh |
| ``` |
| |
| 5. Load the default Wagtail CMS pages. |
| |
| ``` |
| python manage.py load_cms_data new_default_theme |
| ``` |
| |
| 6. Run the server |
| |
| ``` |
| python manage.py runserver |
| ``` |
| |
| 7. Point your browser to http://localhost:8000. |
| |
| ## Docker instructions |
| |
| To run the Django Portal as a Docker container, you need a `settings_local.py` |
| file which you can create from the `settings_local.py.sample` file. Then run the |
| following: |
| |
| 1. Build the Docker image. |
| |
| ``` |
| docker build -t airavata-django-portal . |
| ``` |
| |
| 2. Run the Docker container. |
| |
| ``` |
| docker run -d \ |
| -v /path/to/my/settings_local.py:/code/django_airavata/settings_local.py \ |
| -p 8000:8000 airavata-django-portal |
| ``` |
| |
| 3. Load an initial set of Wagtail pages (theme). You only need to do this when |
| starting the container for the first time. |
| |
| ``` |
| docker exec CONTAINER_ID python manage.py load_cms_data new_default_theme |
| ``` |
| |
| 4. Point your browser to http://localhost:8000. |
| |
| ## Documentation |
| |
| Documentation currently is available at |
| https://apache-airavata-django-portal.readthedocs.io/en/latest/ (built from the |
| 'docs' directory). |
| |
| To build the documentation locally, first |
| [set up a development environment](#setting-up-development-environment), then |
| run the following in the root of the project: |
| |
| ``` |
| mkdocs serve |
| ``` |
| |
| ## Feedback |
| |
| Please send feedback to the mailing list at <dev@airavata.apache.org>. If you |
| encounter bugs or would like to request a new feature you can do so in the |
| [Airavata Jira project](https://issues.apache.org/jira/projects/AIRAVATA) (just |
| select the _Django Portal_ component when you make your issue). |
| |
| ## Customization |
| |
| See the Customization Guide in the |
| [documentation](https://apache-airavata-django-portal.readthedocs.io/en/latest/) |
| for information on how to customize the Airavata Django Portal user interface. |
| To get started we recommend going through the |
| [Gateways Tutorial](https://apache-airavata-django-portal.readthedocs.io/en/latest/tutorial/gateways_tutorial/). |
| This tutorial covers the different ways that the user interface can be |
| customized. |
| |
| ## Contributing |
| |
| For general information on how to contribute, please see the |
| [Get Involved](http://airavata.apache.org/get-involved.html) section of the |
| Apache Airavata website. |
| |
| ### Setting up development environment |
| |
| Run `pip install -r requirements-dev.txt` to install development and testing |
| libraries. |
| |
| Use a code editor that integrates with editorconfig and flake8. I also recommend |
| autopep8 for automatically formatting code to follow the PEP8 guidelines. |
| Prettier is used for formatting JavaScript and Vue.js code. |
| |
| See the docs for more information on |
| [developing the backend](./docs/dev/developing_backend.md) and |
| [frontend code](./docs/dev/developing_frontend.md). |
| |
| ### Running Django Tests |
| |
| Run `./runtests.py` to run the Django unit tests. |
| |
| ## License |
| |
| The Apache Airavata Django Portal is licensed under the Apache 2.0 license. For |
| more information see the [LICENSE](LICENSE) file. |