Asiointitietovaranto Django REST API
Development with Docker
Prerequisites:
- Docker
- Docker Compose
-
Create a
docker-compose.env.yamlfile in the project folder:- Use
docker-compose.env.yaml.exampleas a base, it does not need any changes for getting the project running. - Set entrypoint/startup variables according to taste.
DEBUG, controls debug mode on/offAPPLY_MIGRATIONS, applies migrations on startupCREATE_ADMIN_USER, creates an admin user with credentialsadmin:(password, see below) (admin@hel.ninja)ADMIN_USER_PASSWORD, the admin user's password. If this is not given, a random password is generated and written into stdout when an admin user is created automatically.
- Use
-
Run
docker-compose up- The project is now running at localhost:8081
Optional steps
-
Run migrations:
- Taken care by the example env
docker exec atv-backend python manage.py migrate
-
Create superuser:
- Taken care by the example env
docker exec -it atv-backend python manage.py add_admin_user
Prerequisites:
- PostgreSQL 14
- Python 3.11
- Run
pip install -r requirements.txt - Run
pip install -r requirements-dev.txt(development requirements)
To setup a database compatible with default database settings:
Create user and database
sudo -u postgres createuser -P -R -S atv # use password `atv`
sudo -u postgres createdb -O atv atv
Allow user to create test database
sudo -u postgres psql -c "ALTER USER atv CREATEDB;"
- Create
.envfile:touch .env
DEBUG=1
DATABASE_URL=postgres://atv:atv@localhost:5437/atv
# Optionals (with a default value on settings.py)
FIELD_ENCRYPTION_KEYS=- Set the
DEBUGenvironment variable to1. - Run
python manage.py migrate - Run
python manage.py add_admin_user - Run
python manage.py runserver 0:8000
The project is now running at localhost:8000
-
Install
pip-tools:pip install pip-tools
-
Add new packages to
requirements.inorrequirements-dev.in -
Update
.txtfile for the changed requirements file:pip-compile requirements.inpip-compile requirements-dev.in
-
If you want to update dependencies to their newest versions, run:
pip-compile --upgrade requirements.in
-
To install Python requirements run:
pip-sync requirements.txt
This project uses
black,
flake8 and
isort
for code formatting and quality checking. Project follows the basic
black config, without any modifications.
Basic black commands:
- To let
blackdo its magic:black . - To see which files
blackwould change:black --check .
pre-commit can be used to install and
run all the formatting tools as git hooks automatically before a
commit.
- Set the
DEBUGenvironment variable to1. - Run
pytest.
-
test fix 1
-
main fix 1
-
main fix 2
-
main fix 3
-
main fix 4
-
main fix 5
-
main fix 6
-
main fix 7
-
main fix 8
-
testataan commit override release as