blob: 9e977c4823d1e20e420012e3b2463b72d04951bc [file] [log] [blame] [view]
# Apache Airavata Django Portal
[![Build Status](https://travis-ci.org/apache/airavata-django-portal.svg?branch=master)](https://travis-ci.org/apache/airavata-django-portal)
[![Build Status](https://readthedocs.org/projects/apache-airavata-django-portal/badge/?version=latest)](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.