Videreutvikling

Sette opp utviklingsmiljø

Installer GNU Make, GCC, Git, Python 3 og andre avhengigheter:

sudo apt install build-essential
sudo apt install git
sudo apt install python3 python3-pip python3-distutils python3-dev
sudo apt install postgresql-client libpq-dev
sudo apt install libjpeg-dev zlib1g-dev
sudo apt install libldap2-dev libsasl2-dev
sudo apt install libxml2-dev libxslt1-dev

Hvis det skal gjøres endringer i CSS-en må også Sass CSS precompiler og npm installeres:

sudo apt install sassc
sudo apt install npm

Støtte for å kompilere Tikz-figurer til SVG/PNG trenger også full LaTeX-installasjon (lualatex, pdflatex, ekstra fonter og pdf2svg) og GraphicsMagick:

sudo apt install texlive-full pdf2svg graphicsmagick

Installer Pipenv:

pip3 install --user --upgrade pip
pip3 install --user --upgrade pipenv

Pass på at pipenv ligger i $PATH:

export PATH="$HOME/.local/bin:$PATH"

Hent en kopi av repoet og initialiser Python-environmentet:

git clone git@github.com:imfdrift/wagtail /opt/wagtail
cd wagtail
pipenv sync --dev

Konfigurere utviklingsmiljø

Wagtail henter innstillinger fra fila .env i toppkatalogen.

Kopier eksempelfila env.example til .env og tilpass innholdet. Defaultinnstillingene er stort sett OK, men merk at DEBUG=True er nødvendig for at manage.py runserver skal fungere ordentlig (servere staticfiles).

Se Django settings for en fullstendig oversikt over aktuelle innstillinger samt defaultinnstillinger.

Hvis Feide-innlogging er påskrudd, må det legges til applikasjonsinnstillinger inne i Django admin-grensesnittet Se Konfigurasjon av Feide-innlogging.

Bruk av utviklingsmiljø

For å aktivere Python-environmentet:

pipenv shell

Første gangs initialisering av databasen:

./manage.py migrate
./manage.py createsuperuser
./manage.py createcachetable

Start testserver:

./manage.py runserver

Linting av koden (må gjøres fra inne i src/-katalogen, fordi .pylintrc ligger der):

pylint artikkel/

Deaktivere Python-environmentet:

exit

Hvis utviklingsmiljøet er på en annen maskin enn du kjører browseren på (for eksempel utviklingsmiljø på en Linux-VM og browser på lokal laptop), logg inn på utviklingsboksen med:

ssh -L 8000:localhost:8000

og bruk http://localhost:8000/ på lokal maskin.

Unngå å kjøre manage.py runserver 0.0.0.0:8000 og bruke http://utviklingsboks:8000/, da dette sender passord i klartekst (spesielt uheldig hvis USE_LDAP_AUTH er påskrudd).

Oppgradering av Python-pakker

For å sjekke om noen av pakkene vi bruker inneholder rapporterte sikkerhetshull:

pipenv check

For å oppgradere til nyeste versjon av Python-pakkene, innenfor versjonsbegrensningene angitt i Pipfile:

pipenv update

pipenv update oppgraderer Python-environmentet, og skriver ut nye Pipenv og Pipenv.lock-filer. Commit så disse til repoet:

git add Pipenv Pipenv.lock
git commit

Bygge dokumentasjon

For å kompilere dokumentasjonen i docs/, kjør:

make docs

Dokumentasjonen havner i docs/_build/html/. Denne katalogen er unntatt fra repoet.

Bygge CSS

For å kunne kompilere CSS må bootstrap og fontawesome først lastes ned:

make download

For å kompilere CSS, kjør:

make css

Hovedfila heter css/main.scss, og denne inkluderer de andre filene som utgjør stilarkene. (CSS for hver innholdsblokk er skilt ut i egne filer.)

I motsetning til dokumentasjonen ligger resultatfilene i repoet, slik at man ikke trenger å laste ned bootstrap/fontawesome og kompilere CSS-en hver gang man gjør endringer i koden.

CSS-koden for fargelegging av programkode i CodeBlock er automatisk generert ut fra pygments sine stilark. For å regenerere pygments-relatert CSS (f.eks etter oppgradering av pygments), kjør:

make -C css clean pygments

etterfulgt av make css for å oppdatere hovedfila. Se css/Makefile for detaljer.