Skip to content
Snippets Groups Projects
user avatar
Alexa Valentová authored
bbaeb3fb
History

Registr smluv

Aplikace pro transparentní evidenci smluv a informací s nimi spojených.

Struktura projektu

.
├── registry                = Nastavení projektu, URLs.
├── shared                  = Sdílené modely, templaty a statické soubory pro všechny ostatní aplikace.
├── contracts               = Aplikace pro samotné smlouvy.
├── users                   = Aplikace pro uživatele.
├── static_src              = Zdrojové CSS a JS, které příkazem 'make build' buildujeme.
├── requirements            = Pythonové závislosti z PyPI.
└── env.example             = Příklad .env souboru.

Konfigurace

Je třeba definovat minimálně následující environment proměnné:

proměnná popis
DATABASE_URL URL pro připojení k databázi ve formátu postgresql://username:password@host:5432/database_name
SECRET_KEY Tajný klíč např. pro šifrování
OIDC_RP_REALM_URL OpenID server realm URL (např. http://localhost:8080/auth/realms/master/)
OIDC_RP_CLIENT_ID OpenID client ID
OIDC_RP_CLIENT_SECRET OpenID Client Secret
DEFAULT_COUNTRY Defaultní země podepisujících stran, např. Česká republika
DEFAULT_CONTRACTEE_NAME Defaultní jméno naší podepisující strany
DEFAULT_CONTRACTEE_STREET Defaultní ulice a č.p. naší podepisující strany
DEFAULT_CONTRACTEE_ZIP Defaultní PSČ naší podepisující strany
DEFAULT_CONTRACTEE_DISTRICT Defaultní obec naší podepisující strany
DEFAULT_CONTRACTEE_ICO_NUMBER Defaultní IČO naší podepisující strany
DEFAULT_STAFF_GROUP Defaultní skupina pro přihlášené uživatele, která bude mít přístup k vytváření smluv

V produkci je potřeba:

proměnná popis
ALLOWED_HOSTS Seznam domén, skrz které se na server lze připojovat. Více info
SENTRY_DSN Pokud je zadáno, pády se reportují do Sentry.

Vývoj

V produkci používáme Docker. Při vývoji se hodí přiložený Makefile, pro automatizování často prováděných akcí. Pro nápovědu zavolej:

$ make help

Lokální setup

Požadavky:

  • Python 3.9+
  • Linuxové prostředí, na Windows netestováno

Zkopíruj env.example do .env, nastav potřebné proměnné.

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žij třeba Pyenv pro instalaci více verzí Pythonu bez rizika rozbití systému.

Aktivace virtualenvu

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

Pro shell lze vytvořit alias. Do ~/.bash_profile, ~/.zshrc nebo jiného konfiguračního souboru dle tvého shellu přidej:

$ alias senv='source .venv/bin/activate'

A pak můžeš virtualenv aktivovat pouze jednoduchým voláním:

$ senv

Pro sofistikovanější řešení, které aktivuje virtualenv při změně adresáře na adresář s projektem, slouží nástroj direnv.

Deaktivace virtualenv se dělá příkazem:

$ deactivate

Instalace závislostí

Spusť:

$ make install

Tím se nainstalují Pythonové závislosti a virtuální Node.js 19x nutné k buildu statických souborů.

Build statických souborů

Spusť:

$ make build

Tím se vytvoří CSS a JS soubory, které se dají použít v prohlížečovém prostředí.

Spuštění development serveru

Django development server na portu 8012 se spustí příkazem:

$ make run

Poté můžeš web otevřít na adrese http://localhost:8012.

Code quality

K formátování kódu se používá black. Doporučujeme ho nainstalovat do tvého editoru, 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.

Pre-commit hooky

Použivá se pre-commit framework pro management git pre-commit hooks.

Máš-li pre-commit framework nainstalovaný, spusť 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