Aplikace na výdej materiálu jako roušek v období Coronavirové krize.
Je třeba nastavit environment proměnné:
proměnná | default | popis |
---|---|---|
DATABASE_URL |
DSN k databázi (např. postgres://user:pass@localhost:5342/vydej ) |
V produkci musí být navíc nastaveno:
proměnná | default | popis |
---|---|---|
DJANGO_SECRET_KEY |
tajný šifrovací klíč | |
DJANGO_ALLOWED_HOSTS |
allowed hosts (více hodnot odděleno čárkami) | |
SITE_URL |
adresa webu bez lomítka na konci (vkládá se do emailů) | |
MAILGUN_API_KEY |
Mailgun API klíč |
Další konfigurační parametry:
proměnná | default | popis |
---|---|---|
MAILGUN_API_URL |
"https://api.eu.mailgun.net/v3" | Mailgun API URL |
MAILGUN_SENDER_DOMAIN |
"mail.vydej-materialu.cz" | Mailgun sender domain |
EMAIL_FROM |
"noreply@vydej-materialu.cz" | adresa pro emaily z aplikace |
Do databáze je třeba nahrát předdefinované uživatelské skupiny s oprávněními.
K tomu slouží management command load_groups
:
$ python manage.py load_groups
Tento command se v Docker kontejneru pouští automaticky před startem serveru.
Pro vývoj je definován pomocný Makefile
pro časté akce.
Vytvoř virtualenv:
$ make venv
Vytvoří virtualenv ve složce .venv
. Předpokládá že výchozí python
v terminálu
je Python 3. Pokud tomu tak není, použijte třeba Pyenv
pro instalaci více verzí Pythonu bez rizika rozbití systému.
Před prací na projektu je třeba aktivovat virtualenv. To bohužel nejde dělat
pomocí nástroje make
. Je třeba zavolat příkaz:
$ source .venv/bin/activate
Můžete asi na to vytvořit alias pro shell. Do ~/.bash_profile
nebo ~/.zshrc
nebo jiného konfiguračního souboru dle vašeho shellu přidejte:
alias senv='source .venv/bin/activate'
A pak můžete virtualenv aktivovat pouze jednoduchým voláním:
$ senv
Pro sofistikovanější řešení, které vám aktivuje virtualenv při změně adresáře na adresář s projektem, slouží nástroj direnv.
Deaktivace virtualenvu se dělá příkazem:
$ deactivate
V aktivovaném virtualenvu spusťte:
$ make install
To nainstaluje Pythonní závislosti pro vývoj projektu na lokále.
Nastav environment proměnné (viz konfigurace výše). Pro jednoduchost doporučujeme použít direnv, který nastaví environment proměnné pro vývoj při změně adresáře na adresář s projektem.
Příklad .envrc
:
export DATABASE_URL=postgres://db:db@localhost:5432/vydej
Pro lokální vývoj obsahují settings:
DEBUG = True
ALLOWED_HOSTS = ["localhost", "0.0.0.0", "127.0.0.1"]
SITE_URL = "http://localhost:8008"
EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend"
Aplikuj migrace databáze:
$ make migrate
Při změně modelů vygeneruj migrace pomocí:
$ make migrations
Django development server na portu 8008
se spustí příkazem:
$ make run
Poté můžete otevřít web na adrese http://localhost:8008
Django shell používající shell_plus
z Django extensions spustíte:
$ make shell
Používá se testovací framework pytest. Spuštění testů:
$ pytest
Případně přes make
, ale bez možnosti parametrizovat spuštění testů:
$ make test
Coverage report:
$ make coverage
K formátování kódu se používá black. Doporučujeme ho nainstalovat do vašeho editoru kódu, aby soubory přeformátoval po uložení.
Přeformátování kódu nástrojem black
je součástí pre-commit
hooks (viz níže).
Součástí pre-commit
hooků je také automatické seřazení importů v Pythonních
souborech nástrojem isort.
Použivá se pre-commit framework pro management git pre-commit hooks.
Máte-li pre-commit framework nainstalovaný spusttě příkaz:
$ make install-hooks
Ten naisntaluje hooky pro projekt. A poté při každém commitu dojde k požadovaným akcím na změněných souborech.
Ručně se dají hooky na všechny soubory spustit příkazem:
$ make hooks
K upgrade se používají pip-tools (pip install pip-tools
):
$ cd requirements/
$ pip-compile -U base.in
$ pip-compile -U dev.in
$ pip-compile -U prod.in
Tím se vygenerují base.txt
, dev.txt
a prod.txt
Zatím provizorní řešení přes manuální build a push do Docker HUB.
Build image s aplikací:
$ make build
Push do Docker Hub:
$ make release