Tuotantotalouden kilta Prodekon Django CMS -pohjaiset nettisivut.
Prodeko.org projekti käyttää Django versiota 3.1.4
- Lataa docker
- Kopioi prodekoorg/settings/variables.sample.txt ja nimeä se variables.txt nimiseksi.
- Täytä variables.txt tiedostoon puuttuvat muuttujat (kehitysympäristössä ei tarvitse)
Kehitysympäristöä varten tarvitset kirjastot postgresql-devel
ja python3-dev
, jotka voi asentaa Ubuntulla (Debianilla) ja WSL:lla komennolla
$ sudo apt install libpq-dev python3-dev
Asenna lisäksi eslint, prettier, stylelint, pylint, jinjalint ja black ajamalla seuraavat komennot:
$ npm install
$ python3 -m venv venv
$ source venv/bin/activate
$ pip3 install -r requirements-dev.txt
Windowsilla on suositeltavaa ajaa nämä WSL:n sisällä.
Aja docker-kontti ylös seuraavalla komennolla:
$ docker-compose up # Kehitysympäristön käynnistys
Windowsilla on suositeltavaa ajaa tämä WSL:n sisällä.
Voit nyt siirtyä selaimellasi osoitteeseen http://localhost:8000. Kehitysympäristön käynnistys luo sivustolle uuden Django-käyttäjän:
- Käyttäjä: [email protected]
- Salasana: kananugetti
Esimerkiksi app_kiltiskamera luotiin seuraavasti:
mkdir prodekoorg/app_kiltiskamera
python3 manage.py startapp app_kiltiskamera prodekoorg/app_kiltiskamera
Myös abisivut, auth_prodeko, seminaari ja tiedotteet ovat omia appejaan, vaikka ne eivät ole prodekoorg kansion sisällä.
Kun masteriin pusketaan tai mergetään tavaraan repoon määritetty Github Actions pipeline aktivoituu. Pipeline buildaa ja puskee automaattisesti kontin Azure Container Registryyn sekä deployaa kontin palvelimelle infrastructure repon playbookin avulla.
Mikäli deployaus halutaan suorittaa manuaalisesti, onnistuu se seuraavilla komennoilla:
- Kirjaudu Prodekon docker registryyn:
az acr login --name prodekoregistry
- Buildaa image:
docker build . -t prodekoregistry.azurecr.io/prodeko-org/prodeko-org
- Puske image registryyn:
docker push prodekoregistry.azurecr.io/prodeko-org/prodeko-org
- Aja infrastructure reposta:
ansible-playbook playbook.yml --extra-vars '@passwd.yml' --tags prodeko_org
Windowsilla on suositeltavaa ajaa kaikki tämänkin osion komennot WSL:n sisällä.
- Käynnistä projekti komennolla
docker-compose up
- Avaa uusi terminal window
- Testit saa ajettua komennolla
docker exec prodeko_org pytest prodekoorg/
- Testien kattavuus ja rinnakkaisajo
docker exec prodeko_org pytest --cov -n auto prodekoorg/
- Tietyn appin testit saa ajettua näin:
docker exec prodeko_org pytest prodekoorg/app_kulukorvaus
Käytössä seuraavat työkalut:
- python: pylint + black
- html: curlylint
- javascript: eslint + prettier
- css: stylelint + prettier
Code compliance (PEP8)
Konfiguraatiotiedosto .pylintrc.
Aja pylint:
$ pylint --load-plugins pylint_django prodekoorg/
Code formatting
Konfiguraatiotiedosto pyproject.toml.
Aja black:
$ black .
All done! ✨ 🍰 ✨
48 files left unchanged.
HTML-templatejen linttaamiseen käytetään Curlylint
Aja jinjalint:
$ curlylint prodekoorg
Muista asentaa tarvittavat packaget komennolla npm i
.
Javascript
Konfiguraatiotiedosto .eslintrc.js. Lisäksi käytössä on Prettier-integraatio .prettierrc.
$ npm run lint:eslint # Näytä virheet
$ npm run lint:eslint-fix # Korjaa virheet
CSS
Konfiguraatiotiedosto .stylelintrc. Lisäksi käytössä on Prettier-integraatio .prettierrc.
$ npm run lint:css # Näytä virheet
$ npm run lint:css-fix # Korjaa virheet
- Django - Web development framework
- React - Web development framework
- Django CMS - Sisällönhallintajärjestelmä Djangolle
- djangocms-bootstrap4 - Bootstrap4 elementtien lisäys suoraan CMS:stä
.
├── abisivut # abit.prodeko.org
│ └── ...
├── alumnirekisteri # martrikkeli.prodeko.org
│ └── ...
├── auth_prodeko # Autentikaatio
│ └── ...
├── documentation # Dokumentaatio
│ └── ...
├── lifelonglearning # lifelonglearning.prodeko.org
│ └── ...
├── locale # Käännökset
│ └── ...
├── prodekoorg # Projektin pääkansio
│ │── app_contact # Yhteydenottolomake
│ │ └── ...
│ │── app_infoscreen # REST api infoscreenille
│ │ └── ...
│ │── app_kiltiskamera # Kiltiskamera
│ │ └── ...
│ │── app_kulukorvaus # Sähköinen kulukorvauslomake
│ │ └── ...
│ │── app_membership # Jäseneksi liittyminen -lomake
│ │ └── ...
│ │── app_poytakirjat # Pöytäkirjojen automaattinen haku G Suiten Drivestä ja lisäys DjangoCMS:ään
│ │ └── ...
│ │── app_proleko # proleko.prodeko.org
│ │ └── ...
│ │── app_tiedostot # Prodekon brändiin liittyviä tiedostoja
│ │ └── ...
│ │── app_toimarit # Mahdollistaa vuoden toimihenkilöiden päivittämisen sivuille .csv-tiedoston avulla
│ │ └── ...
│ │── app_utils # Kolmannen osapuolen appien poistaminen administa, signaalit mediatiedostojen poistoon
│ │ └── ...
│ │── app_vaalit # Vaaliplatform
│ │ └── ...
│ │── collected-static # Kerätyt staattiset tiedostot dev-asetuksilla. Komento `python3 manage.py collectstatic` kerää tiedostot tänne
│ │ └── ...
│ │── media # Palvelimelle lähetetyt tiedostot kerääntyvät tänne dev-asetuksilla
│ │ └── ...
│ │── settings # Django globaalit asetukset
│ │ ├── base.py
│ │ ├── dev.py
│ │ └── prod.py
│ │── static # Staattiset tiedostot
│ │ ├── fonts
│ │ ├── images
│ │ ├── js
│ │ ├── misc
│ │ └── scss # Bootstrap4 scss, muut scss tiedostot
│ │──templates # Suurin osa html-tiedostoista. Sovelluksilla (app_kulukorvaus jne.)
│ │ │ # on omat templatensa ja staattiset tiedostonsa (js, scss, kuvat)
│ │ └── ...
│ └── ...
├── scripts # Python skriptejä
│ └── ...
├── seminaari # seminaari.prodeko.org
│ └── ...
├── tiedotteet # tiedotteet.prodeko.org
│ │── backend # Tiedotteet django backend
│ │ └── ...
│ │── frontend # Tiedotteet React frontend
│ │ └── ...
├── README.md # README
└── ...
- importtaa gettext_lazy:
from django.utils.translation import gettext_lazy as *
. Käytä koodissa näin: _("First name") python3 manage.py makemessages -l fi -i "node_modules/*" -i "venv/*"
. locale/ kansioon .po tiedostoon muodostuu käännettävä sana, esimerkin tapauksessa "First name".- Käännä suomeksi .po tiedostossa ja aja
python3 manage.py compilemessages -l fi -i "node_modules/*" -i "venv/*"
. - (Valinnainen) Javascript tiedostojen sisältämät käännöset saa muodostettua seuraavalla komennolla:
python3 manage.py makemessages -d djangojs -l fi -i tiedotteet -i "node_modules/*" -i "venv/*"
.po tiedosto näyttää tältä:
#: prodekoorg/app_membership/models.py:37
msgid "First name"
msgstr "Etunimi"
Scss:n pitäisi automaattisesti compilata silloin kun tiedosto tallennetaan ja sen aikaleima muuttuu. Tämä ei aina toimi. Workaround: poista tiedostosta esim. yksi '{', jotta se on epäpätevä -> muodostuu error, jonka jälkeen kääntäminen toimii kun '{' lisätään takaisin.
Windows-käyttäjä: käynnistä docker-kontti WSL:n sisällä.
- Timo Riski
- Santeri Kivinen
- Niko Kinnunen
- Kalle Hiltunen
- Leo Drosdek