sudo apt-get install build-essential libffi-dev libpq-dev python3-dev postgresql-common-dev libcairo2
uv syncuv run python manage.py runserverRun deploy/update_dbdb_app.sh on the production machine to fetch new changes, run migrations, and restart the wsgi server.
Test fixtures live in data/fixtures/. Django loads them by name; the search path is configured in settings.py via FIXTURE_DIRS.
| Fixture | Contents | Source |
|---|---|---|
adminuser.json |
Superuser account for tests | Static |
testuser.json |
Non-superuser account for tests | Static |
core_features.json |
Feature + FeatureOption rows |
Dumped from production (see below) |
core_attributes.json |
Attribute + AttributeOption rows |
Dumped from production (see below) |
core_system.json |
Two synthetic test systems (SQLite, XXX) | Static |
core_savedsearch.json |
One saved search for testing | Static |
Requires Tailscale to be connected so db-web.tail5fc291.ts.net is reachable.
# Features and feature options
uv run python manage.py dumpdata core.feature core.featureoption \
--indent 2 -o data/fixtures/core_features.json
# Attributes and attribute options
uv run python manage.py dumpdata core.attribute core.attributeoption \
--indent 2 -o data/fixtures/core_attributes.jsonThese commands use the DATABASE_URL in .env, which points to the production database.
uv run python manage.py loaddata adminuser testuser \
core_features core_attributes core_system core_savedsearchTests require a local PostgreSQL instance. The test runner creates and destroys a dedicated database (test_dbdb_io) on every run.
PGUSER=<your-local-pg-user> uv run python manage.py test dbdb.core \
--settings=dbdb.test_settings --verbosity=2The dbdb.test_settings module overrides the production DATABASE_URL with local PostgreSQL connection parameters. It reads the following environment variables (all optional, with defaults shown):
| Variable | Default | Notes |
|---|---|---|
PGUSER |
dbdb_user |
Must have CREATEDB privilege |
PGPASSWORD |
(empty) | Omit if using peer auth (Unix socket) |
PGHOST |
(empty) | Empty = Unix socket (peer auth); localhost = TCP |
PGPORT |
5432 |
|
PGDATABASE |
postgres |
Connection database — must differ from test_dbdb_io |
The test database is always named test_dbdb_io and is dropped and recreated fresh on every run.