This is the simplest configuration for developers to start with.
- Run docker-compose run --rm django ./manage.py migrate
- Run docker-compose run --rm django ./manage.py createsuperuserand follow the prompts to create your own user. Make sure to supply an email address.
- Run docker-compose run --rm django ./manage.py createarangoreadonlyuser
- To hydrate the database with the demo data, run docker-compose run --rm django ./manage.py setupdevenv <user_email from above step>
- Run docker-compose up
- Access the site, starting at http://localhost:8000/admin/ with your email from above as the username.
- When finished, use Ctrl+C
Occasionally, new package dependencies or schema changes will necessitate maintenance. To non-destructively update your development stack at any time:
- Run docker-compose pull
- Run docker-compose build --pull --no-cache
- Run docker-compose run --rm django ./manage.py migrate
- Run docker-compose run --rm arangodb arangod --database.auto-upgrade
This configuration still uses Docker to run attached services in the background, but allows developers to run Python code on their native system.
- Run docker-compose -f ./docker-compose.yml up -d
- Install Python 3.12
- Install
psycopg2build prerequisites
- Create and activate a new Python virtualenv
- Run pip install -e .[dev]
- Run source ./dev/export-env.sh
- Run ./manage.py migrate
- Run ./manage.py createsuperuserand follow the prompts to create your own user. Make sure to supply an email address.
- Run ./manage.py createarangoreadonlyuser
- To hydrate the database with the demo data, run ./manage.py setupdevenv <user_email from above step>
- Ensure docker-compose -f ./docker-compose.yml up -dis still active
- Run:
- source ./dev/export-env.sh
- ./manage.py runserver
 
- Run in a separate terminal:
- source ./dev/export-env.sh
- celery --app multinet.celery worker --loglevel INFO --without-heartbeat
 
- When finished, run docker-compose stop
- Navigate to the http://localhost:8000/admin, logging in with your admin user if you're not already logged in
- Under the DJANGO OAUTH TOOLKITsection click theAddin theApplicationsrow. This will bring you to the creation dialog for an (oauth) application.
- In the redirect uris field, enter http://localhost:8080/(must include trailing slash)
- Select Publicfor the Client Type field
- Select Authorization Codefor the Authorization Grant Type field
- Delete everything in the Client Secret field, leaving it blank
- Enter "Multinet GUI" for the Name field
- Copy the value in the Client ID field, but don't modify it
- In the bottom right, click Save
- If you haven't already, copy the .env.defaultfile to.env
- Ensure there's a line that reads VUE_APP_OAUTH_API_ROOT=http://localhost:8000/oauth/
- Ensure there's a line that reads VUE_APP_OAUTH_CLIENT_ID=<the client id you copied above>
- Save the file
- Restart your local dev server
After these steps, you should be able to login to the API from the client.
- Create a google oauth token through the google cloud dashboard in APIs and Services>Credentials.
- Navigate to the http:///admin, logging in with your admin user if you're not already logged in.
- Under SOCIAL ACCOUNTSclick add next toSocial applications.
- Set Provider to Google.
- Set Name to Google Multinet Oauth.
- Copy the Client ID from Google's cloud dashboard to the MultiNet instance.
- Copy the Client secret to secret keyfrom Google's cloud dashboard to the MultiNet instance.
- Add multinet.test to chosen sites.
- Click save.
No changes should be necessary from the OAuth setup steps from above, but they must be completed. When logging in, choose login with Google.
Attached services may be exposed to the host system via alternative ports. Developers who work on multiple software projects concurrently may find this helpful to avoid port conflicts.
To do so, before running any docker-compose commands, set any of the environment variables:
- DOCKER_POSTGRES_PORT
- DOCKER_RABBITMQ_PORT
- DOCKER_MINIO_PORT
The Django server must be informed about the changes:
- When running the "Develop with Docker" configuration, override the environment variables:
- DJANGO_MINIO_STORAGE_MEDIA_URL, using the port from- DOCKER_MINIO_PORT.
 
- When running the "Develop Natively" configuration, override the environment variables:
- DJANGO_DATABASE_URL, using the port from- DOCKER_POSTGRES_PORT
- DJANGO_CELERY_BROKER_URL, using the port from- DOCKER_RABBITMQ_PORT
- DJANGO_MINIO_STORAGE_ENDPOINT, using the port from- DOCKER_MINIO_PORT
 
Since most of Django's environment variables contain additional content, use the values from
the appropriate dev/.env.docker-compose* file as a baseline for overrides.
tox is used to execute all tests.
tox is installed automatically with the dev package extra.
When running the "Develop with Docker" configuration, all tox commands must be run as
docker-compose run --rm django tox; extra arguments may also be appended to this form.
Run tox to launch the full test suite.
Individual test environments may be selectively run. This also allows additional options to be be added. Useful sub-commands include:
- tox -e lint: Run only the style checks
- tox -e type: Run only the type checks
- tox -e test: Run only the pytest-driven tests
To automatically reformat all code to comply with
some (but not all) of the style checks, run tox -e format.