From 07a33c5794ee5849f9b035f0e00d4577fad692b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Bedna=C5=99=C3=ADk?= <jan.bednarik@gmail.com> Date: Thu, 16 Apr 2020 15:25:27 +0200 Subject: [PATCH] Basic readme and makefile --- Makefile | 51 ++++++++++++++++++ README.md | 118 ++++++++++++++++++++++++++++++++++++++++++ requirements/base.in | 2 + requirements/base.txt | 30 +++++++++++ 4 files changed, 201 insertions(+) create mode 100644 Makefile create mode 100644 README.md create mode 100644 requirements/base.in create mode 100644 requirements/base.txt diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..3cf90142 --- /dev/null +++ b/Makefile @@ -0,0 +1,51 @@ +#!/usr/bin/make -f + +PYTHON = python +VENV = .venv +PORT = 8006 + +help: + @echo "Setup:" + @echo " venv Setup virtual environment" + @echo " install Install dependencies to venv" + @echo " install-hooks Install pre-commit hooks" + @echo " hooks Run pre-commit hooks manually" + @echo "" + @echo "Application:" + @echo " run Run the application on port ${PORT}" + @echo " shell Run Django shell" + @echo "" + @echo "Database:" + @echo " migrations Generate migrations" + @echo " migrate Run migrations" + @echo "" + +venv: .venv/bin/python +.venv/bin/python: + ${PYTHON} -m venv ${VENV} + +install: venv + ${VENV}/bin/pip install -r requirements/base.txt + +install-hooks: + pre-commit install --install-hooks + +hooks: + pre-commit run -a + +run: venv + ${VENV}/bin/python manage.py runserver ${PORT} + +shell: venv + ${VENV}/bin/python manage.py shell_plus + +migrations: venv + ${VENV}/bin/python manage.py makemigrations + +migrate: venv + ${VENV}/bin/python manage.py migrate + +.PHONY: help venv install install-hooks hooks run shell +.PHONY: migrations migrate + +# EOF diff --git a/README.md b/README.md new file mode 100644 index 00000000..e5ea509c --- /dev/null +++ b/README.md @@ -0,0 +1,118 @@ +# Maják + +Maják je CMS pro Pirátské weby. Postavený je na [Wagtail](https://wagtail.io/). + +## Vývoj + +Pro vývoj je definován pomocný `Makefile` pro časté akce. + +### Lokální instalace a spuštění + +#### Vytvoření virtualenv pro instalaci závislostí + +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](https://github.com/pyenv/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 + +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](https://direnv.net/). + +Deaktivace virtualenvu se dělá příkazem: + + $ deactivate + +#### Instalace závislostí + +V aktivovaném virtualenvu spusťte: + + $ make install + +To nainstaluje Pythonní závislosti pro vývoj projektu na lokále. + +#### Nastavení environment proměnných + +Nastav environment proměnné (viz konfigurace výše). Pro jednoduchost doporučujeme +použít [direnv](https://direnv.net/), který nastaví environment proměnné pro vývoj +při změně adresáře na adresář s projektem. + +### Management projektu + +#### Migrace databáze + +Aplikuj migrace databáze: + + $ make migrate + +Při změně modelů vygeneruj migrace pomocí: + + $ make migrations + +#### Spuštění development serveru + +Django development server na portu `8003` se spustí příkazem: + + $ make run + +Poté můžete otevřít web na adrese [http://localhost:8003](http://localhost:8003) + +#### Django shell + +Django shell používající `shell_plus` z Django extensions spustíte: + + $ make shell + +### Code quality + +K formátování kódu se používá [black](https://github.com/psf/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](https://github.com/timothycrosley/isort/). + +### Pre-commit hooky + +Použivá se [pre-commit](https://pre-commit.com/) framework pro management git +pre-commit hooks. + +Máte-li pre-commit framework [nainstalovaný](https://pre-commit.com/#installation) +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 + +## Upgrade závislostí + +K upgrade se používají [pip-tools](https://github.com/jazzband/pip-tools) (`pip install pip-tools`): + + $ cd requirements/ + $ pip-compile -U base.in + +Tím se vygenerují `base.txt`. diff --git a/requirements/base.in b/requirements/base.in new file mode 100644 index 00000000..30640e47 --- /dev/null +++ b/requirements/base.in @@ -0,0 +1,2 @@ +wagtail +django-extensions diff --git a/requirements/base.txt b/requirements/base.txt new file mode 100644 index 00000000..c5d3144e --- /dev/null +++ b/requirements/base.txt @@ -0,0 +1,30 @@ +# +# This file is autogenerated by pip-compile +# To update, run: +# +# pip-compile base.in +# +asgiref==3.2.7 # via django +beautifulsoup4==4.6.0 # via wagtail +certifi==2020.4.5.1 # via requests +chardet==3.0.4 # via requests +django-extensions==2.2.9 # via -r base.in +django-modelcluster==5.0.1 # via wagtail +django-taggit==1.2.0 # via wagtail +django-treebeard==4.3.1 # via wagtail +django==3.0.5 # via django-taggit, django-treebeard, djangorestframework, wagtail +djangorestframework==3.11.0 # via wagtail +draftjs-exporter==2.1.7 # via wagtail +html5lib==1.0.1 # via wagtail +idna==2.9 # via requests +l18n==2018.5 # via wagtail +pillow==6.2.2 # via wagtail +pytz==2019.3 # via django, django-modelcluster, l18n +requests==2.23.0 # via wagtail +six==1.14.0 # via django-extensions, html5lib, l18n +sqlparse==0.3.1 # via django +unidecode==1.1.1 # via wagtail +urllib3==1.25.8 # via requests +wagtail==2.8.1 # via -r base.in +webencodings==0.5.1 # via html5lib +willow==1.3 # via wagtail -- GitLab