Development Setup
Make sure you have Poetry and a Celery Broker installed as described in Prerequisites.
Create the Environment
Create the python environment with the required packages.
After the --extras
flag, provide a quoted, space-separated list with all the package
extras you would like to install.
An overview of all available extras can be found in the Package Overview.
In this example we’re going to install the dependencies for PostgreSQL and LDAP support
as well as the Poetry dependency groups containing development tools and tools for the
generation of docs.
poetry install --extras "pgsql ldap" --with dev,docs
Then open a shell with this environment loaded by executing
poetry shell
Note
All of the following commands need to be executed inside the Poetry shell.
Now create a .env
file by copying the provided sample.
cd heliport_config
cp -i .env.dist .env
Finally, edit the .env
file to provide your own settings.
Some settings are required, others are commented out and can be left unchanged.
The comments will guide you in the process.
For a development setup of HELIPORT, DEVELOPMENT
should be uncommented and set to
True
.
Run the Tests
To run the tests, execute pytest in the Poetry shell:
pytest -v
Run the Development Server
To run the server, first do a database migration and then execute the runserver
command.
Note
migrate
is only required when starting the app for the first time or if the database
schema changed since the last start.
heliport-cli migrate
heliport-cli runserver
Start the Celery Worker
Start the Celery worker:
celery -A heliport_config worker
Or run it in the background:
celery -A heliport_config multi start "celery@$HOSTNAME" --logfile=celery.log --pidfile=celery.pid
Build the JavaScript Code Bundles
To build the JavaScript code, the necessary libraries need to be installed.
This can be done by running yarnpkg install
.
Then, running yarnpkg build
will create webpacks of the JavaScript and CSS code.
To start the webpack development server which keeps the webpacks up to date during
development, run yarnpkg dev
.
If you don’t want to change any Javascript code, running the build command once will
suffice.
Note
The yarnpkg
command refers to the Yarn package manager.
On some systems it might simply be called yarn
.
Additional Tips
Admin Interface
If you want an admin for the /admin/
interface, you can create one:
heliport-cli createsuperuser
Contributing
If you want to contribute code, please make sure to format it by running the following
commands (ruff
and djlint
can be installed via pipx
):
# fix lint violations with Ruff (https://docs.astral.sh/ruff/)
ruff check --fix .
# format Python code
ruff format .
# format Django templates with djlint (https://djlint.com/)
djlint --lint --reformat .
# format css, js, yaml, ... with Prettier (https://prettier.io/)
yarnpkg format
Also, please make sure to add a license header to all new files.
reuse
can help you with this (reuse
can be installed via pipx
):
reuse annotate --license GPL-3.0-or-later --copyright "Your institution" path/to/file
You can check if the code is up to the REUSE spec like this:
reuse lint
For automated checks during git commit
, the pre-commit hook provided in this
repository can be used.
You can activate it by copying or linking it into the .git/hooks
directory:
ln -rs .gitlab/bin/pre-commit.py .git/hooks/pre-commit
The checks can be skipped using the --no-verify
option for git commit
.