Backend

Backend is written in Python. It requires Python 3.9 or newer. You will need Poetry version 1.2 or newer to install package and all the dependencies.

Preparing development environment

Clone Github repo:

git clone https://github.com/KustoszApp/server

Install dependencies:

poetry install --with test,dev -E container

Changing development version configuration

If you want to change the configuration of development version, the best way of doing so is through settings.local.yaml (inside settings directory). For example, following file would turn on debug-level logging, while ignoring log messages produced by some third-party libraries:

default:
  LOGGING__root__level: 'DEBUG'
  LOGGING__loggers__reader__handlers:
    - 'null'
  LOGGING__loggers__readability__handlers:
    - 'null'
  LOGGING__loggers__requests_cache:
    handlers:
      - 'null'
    propagate: False
  LOGGING__loggers__requests:
    handlers:
      - 'null'
    propagate: False

Running current development version

Commands below assume that current virtual environment is active. You can spawn shell with activated virtual environment using:

poetry shell

Run migrations:

python manage.py migrate

Create cache tables:

python manage.py createcachetable

Create user:

python manage.py createsuperuser --username admin --email admin@example.invalid

Generate authentication token:

python manage.py drf_create_token admin

Run server:

python manage.py runserver

Kustosz API server will be available at http://127.0.0.1:8000/. You can use curl or httpx to communicate with it. See Frontend for instructions how to run development version of Kustosz frontend.

Running unit tests

Running unit tests using currently installed Django version and Python version used to create active virtual environment is as simple as:

pytest

If you want to run unit tests against the matrix of all supported Python and Django versions, then run:

nox --non-interactive --session "tests"

This will work only if you have binaries for all of the Python versions (e.g. python3.9 and python3.10). You can use pyenv or asdf to install them.