Skip to content

Commit

Permalink
#55 Python 3 migration
Browse files Browse the repository at this point in the history
  • Loading branch information
ilesoft authored Dec 2, 2024
2 parents 29e1146 + 071211e commit b2a4118
Show file tree
Hide file tree
Showing 30 changed files with 712 additions and 653 deletions.
9 changes: 4 additions & 5 deletions .github/workflows/continuous-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,11 @@ jobs:
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install 'black[python2]==21.12b0'
pip install click==8.0.2 # newer version is incompatible
pip install 'black==24.10.0'
- name: Check formatting
run: |
black -t py27 --check web/
black -t py27 --check web/**/*.py.example
black -t py33 --check .
black -t py33 --check web/**/*.py.example
unit-tests-sqlite:
runs-on: ubuntu-latest
timeout-minutes: 15
Expand All @@ -29,7 +28,7 @@ jobs:
- name: start SUT
run: docker compose up --quiet-pull --detach --build
- name: run django test
run: docker compose run web './manage.py' test --failfast
run: docker compose run web python './manage.py' test --failfast
robot-tests:
runs-on: ubuntu-latest
timeout-minutes: 15
Expand Down
7 changes: 3 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
FROM python:2
FROM python:3.3

WORKDIR /app/web

RUN echo "PYTHONPATH=/usr/local/lib/python2.7/site-packages" | tee -a /etc/profile
ENTRYPOINT ["/app/docker-entrypoint.sh"]
EXPOSE 3000
CMD ["./manage.py", "runserver", "0.0.0.0:3000"]
CMD ["python", "./manage.py", "runserver", "0.0.0.0:3000"]

COPY . /app/
COPY web/settings/docker.py.example /app/web/settings/docker.py
RUN pip install -r /app/requirements.txt
RUN pip install --trusted-host pypi.python.org -r /app/requirements.txt
24 changes: 12 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@ Tämän ohjelman mukana pitäisi tulla kopio GPL-lisenssistä; jos näin ei ole,

### Paikallisen kehitysympäristön pystytys

* Asenna Python2
* Varmista, että sopiva pip on asennettuna: `python2 -m ensurepip [--user] --upgrade`
* `virtualenv -p /path/to/python2 kipa-venv`
* `source ./kipa-venv/bin/activate`
* `pip install -r requirements.txt`
* `cp ./web/settings/local.py.example ./web/settings/local.py`, muokkaa sopiva polku tietokantatiedostolle
* `cd web`
* `python manage.py runserver` käynnistää kehityspalvelimen
* Luo jonnekkin väliaikainen hakemisto tietokannalle: `mkdir /tmp/tietokanta`
* Kopioi kehitystietokanta: `cp docs/initial.db /tmp/tietokanta/kipa.db`
* `cp ./web/settings/local.py.example ./web/settings/local.py`
* Muokkaa edellisessä luotuun asetustiedostoon tietokantatiedostolle polku `/db/kipa.db`
* Rakenna kontti: `docker build -t kipa_dev -f dev.Dockerfile .`
* Käynnistä kontti: `docker run -it --rm --volume ".:/app" --volume "/tmp/tietokanta:/db" -p 8000:8000 kipa_dev bash`
* Kontissa: `cd web`
* Kontissa: `python manage.py runserver 0.0.0.0:8000`

### Yksikkötestien ajaminen

* tarvittaessa `source ./kipa-venv/bin/activate`
* `cd web`
* `python manage.py test`
* tarvittaessa edellä kuvattu kontin rakennus ja käynnistäminen
* Kontissa: `cd web`
* Kontissa: `python manage.py test`

### E2E-testien ajaminen

Expand All @@ -46,4 +46,4 @@ Kipaan suunniteltua kirjautumista.

### Python-koodin formatointi

Koodi noudattaa Black-autoformatterin vesion 21.12.b0 mukaista tyyliä. Formatointi tarkastetaan osana CI-putkea.
Koodi noudattaa Black-autoformatterin vesion 24.10.0 mukaista tyyliä. Blackille annetaan lippu `--target-version py33`. Formatointi tarkastetaan osana CI-putkea.
7 changes: 7 additions & 0 deletions dev.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM python:3.3

WORKDIR /app

COPY ./requirements.txt /requirements.txt

RUN pip install --trusted-host pypi.python.org -r /requirements.txt
1 change: 0 additions & 1 deletion docker-entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#!/bin/bash

export PYTHONPATH="/usr/local/lib/python2.7/site-packages"
if [ ! -f "/app/db/secret.txt" ]; then
tr -dc A-Za-z0-9 < /dev/urandom | head -c 40 > /app/db/secret.txt
fi
Expand Down
2 changes: 1 addition & 1 deletion docs/manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ Vieraile tupa2.sf.net Imagen linkkiä varten.
### Muut käyttöjärjestelmät / itse muokattava asennus

Kipan laskenta perustuu Pythonin-ohjelmointikielellä kirjoitettuun koodiin.
Python 2.7 on testattu.
Tällä hetkellä kehitysversiossa on käytössä Python 3.3.

Djangon versio 1.6 on testattu kehityspalvelimen kanssa toimivaksi.

Expand Down
62 changes: 40 additions & 22 deletions generate_passwords.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,53 @@
import string, random, crypt
import MySQLdb


def find_check_ids_by_name(checks, cursor):
# execute SQL query using execute() method.
cursor.execute("SELECT id FROM kipa_tehtava WHERE sarja_id IN (26, 27, 28, 29, 30) AND nimi IN ('%s')" % "', '".join(checks))
data = cursor.fetchall()
# execute SQL query using execute() method.
cursor.execute(
"SELECT id FROM kipa_tehtava WHERE sarja_id IN (26, 27, 28, 29, 30) AND nimi IN ('%s')"
% "', '".join(checks)
)
data = cursor.fetchall()

res = []
for row in data:
for val in row:
res.append(str(val))

res = []
for row in data:
for val in row:
res.append(str(val))
return res

return res

prefix = 'llhk19-'
baseurl = '/kipa/Leon_lenkki_ja_Hilkan_kilpa_2019/'
prefix = "llhk19-"
baseurl = "/kipa/Leon_lenkki_ja_Hilkan_kilpa_2019/"
accounts = {
"hamk": ["Tyoesuhdealias", "RistiNollaKorolla"],
"liikennepuisto": ["RushHour"],
"vanaja": ["HPK"],
"actionfactory": ["Action_Factory"],
"yo": ["Larry", "Hexed", "Escape_room", "Commodore_64", "Ruokaralli", "Kanaset", "Kummitusmetsae"],
"yo": [
"Larry",
"Hexed",
"Escape_room",
"Commodore_64",
"Ruokaralli",
"Kanaset",
"Kummitusmetsae",
],
"tekoaltaat": ["Scrabble"],
"kankaantausta": ["Super_Mario_suunnistusmaassa"],
"hameensanomat": ["Rubikin_kuutio"],
"jaahalli": ["Deja_vu"],
"linna": ["Risk", "Arvaa_kuka"],
"ahvenisto": ["Afrikan_taehti"],
"hakovuori": ["Laulava_muistipeli"],
"verkatehdas": ["Roskaviesti"]
"verkatehdas": ["Roskaviesti"],
}
templatefile = '/srv/django/kipa/passwords-llhk19'
path = '/srv/django/kipa/auth_files/llhk19/'
templatefile = "/srv/django/kipa/passwords-llhk19"
path = "/srv/django/kipa/auth_files/llhk19/"
letters = string.ascii_letters

access_config = ''
access_config = ""

db = MySQLdb.connect(user="kipa", passwd="PWD", host="localhost", db="kipa")
cursor = db.cursor()
Expand All @@ -44,26 +57,31 @@ def find_check_ids_by_name(checks, cursor):
for name, checks in accounts.items():
username = prefix + name
pwdfile = path + name
password = ''.join(random.choice(letters) for i in range(10))
password = "".join(random.choice(letters) for i in range(10))
pwhash = crypt.crypt(password)
copyfile(templatefile, pwdfile)
f = open(pwdfile, 'a')
print(username + ':' + pwhash, file=f)
print(username + ';' + password)
f = open(pwdfile, "a")
print(username + ":" + pwhash, file=f)
print(username + ";" + password)

ids = find_check_ids_by_name(checks, cursor)
for id in ids:
access_config = access_config + """
access_config = (
access_config
+ """
location {baseurl}syota/tehtava/{id} {{
auth_basic "Vain {name}-rastin tulosten syottajille";
auth_basic_user_file "{pwdfile}";
include uwsgi_params;
uwsgi_pass unix:/run/uwsgi/kipa.sock;
}}
""".format(baseurl=baseurl, name=name.capitalize(), id=id, pwdfile=pwdfile)
""".format(
baseurl=baseurl, name=name.capitalize(), id=id, pwdfile=pwdfile
)
)

c = open(path + 'access.conf', 'w')
c = open(path + "access.conf", "w")
print(access_config, file=c)

db.close()
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
django==1.6
south
#mysql-python
git+https://github.com/PyMySQL/[email protected]#egg=MySQLdb
# git+https://github.com/PyMySQL/[email protected]#egg=MySQLdb
2 changes: 0 additions & 2 deletions web/manage.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#!/usr/bin/python2

import os
import sys

Expand Down
57 changes: 28 additions & 29 deletions web/robot/kipa_sivuosoitteet_ja_otsikot.py
Original file line number Diff line number Diff line change
@@ -1,67 +1,66 @@
"""Kisan alasivujen URLit ja sivujen otsikot"""
# -*- coding: utf-8 -*-

# Testikisan nimimääritys, oletusarvona: testikisa
TESTIKISA = u"testikisa"
TESTIKISA = "testikisa"

# Kipa pääsivu

KIPA_OTSIKKO = u"Kipa - kaikki kisat"
KIPA_URL = u"http://127.0.0.1:8000/kipa"
KIPA_OTSIKKO = "Kipa - kaikki kisat"
KIPA_URL = "http://127.0.0.1:8000/kipa"

# Suoritusten syöttö

TULOSTEN_SYOTTO_OTSIKKO = u"Kipa - Syötä tuloksia"
TULOSTEN_SYOTTO_URL = u"syota"
TULOSTEN_SYOTTO_OTSIKKO = "Kipa - Syötä tuloksia"
TULOSTEN_SYOTTO_URL = "syota"

TULOSTEN_SYOTTO_TARKISTUS_OTSIKKO = u"Kipa - Syötä\
TULOSTEN_SYOTTO_TARKISTUS_OTSIKKO = "Kipa - Syötä\
tuloksia - tarkistussyötteet"
TULOSTEN_SYOTTO_TARKISTUS_URL = u"syota/tarkistus"
TULOSTEN_SYOTTO_TARKISTUS_URL = "syota/tarkistus"

# Tulokset

TULOSTEN_TARKISTUS_OTSIKKO = u"Kipa - Tulokset sarjoittain"
TULOSTEN_TARKISTUS_URL = u"tulosta/normaali"
TULOSTEN_TARKISTUS_OTSIKKO = "Kipa - Tulokset sarjoittain"
TULOSTEN_TARKISTUS_URL = "tulosta/normaali"

TUOMARINEUVOSTO_OTSIKKO = u"Kipa - Tuomarineuvoston antamien\
TUOMARINEUVOSTO_OTSIKKO = "Kipa - Tuomarineuvoston antamien\
tulosten määritys"
TUOMARINEUVOSTO_URL = u"maarita/tuomarineuvos"
TUOMARINEUVOSTO_URL = "maarita/tuomarineuvos"

LASKENNAN_TILANNE_OTSIKKO = u"Kipa - Tulokset sarjoittain"
LASKENNAN_TILANNE_URL = u"tulosta/tilanne"
LASKENNAN_TILANNE_OTSIKKO = "Kipa - Tulokset sarjoittain"
LASKENNAN_TILANNE_URL = "tulosta/tilanne"


# Kisan Määritykset

KISAN_MAARITYS_OTSIKKO = u"Kipa - Määritä kisa"
KISAN_MAARITYS_URL = u"maarita"
KISAN_MAARITYS_OTSIKKO = "Kipa - Määritä kisa"
KISAN_MAARITYS_URL = "maarita"

VARTIOIDEN_MAARITYS_OTSIKKO = u"Kipa - Määritä vartiot"
VARTIOIDEN_MAARITYS_URL = u"maarita/vartiot"
VARTIOIDEN_MAARITYS_OTSIKKO = "Kipa - Määritä vartiot"
VARTIOIDEN_MAARITYS_URL = "maarita/vartiot"

TEHTAVAN_MAARITYS_OTSIKKO = u"Kipa - Muokkaa tehtävää"
TEHTAVAN_MAARITYS_URL = u"maarita/tehtava"
TEHTAVAN_MAARITYS_OTSIKKO = "Kipa - Muokkaa tehtävää"
TEHTAVAN_MAARITYS_URL = "maarita/tehtava"

TESTITULOKSIEN_MAARITYS_OTSIKKO = u"Kipa - Testituloksien määritys"
TESTITULOKSIEN_MAARITYS_URL = u"maarita/testitulos"
TESTITULOKSIEN_MAARITYS_OTSIKKO = "Kipa - Testituloksien määritys"
TESTITULOKSIEN_MAARITYS_URL = "maarita/testitulos"

# Ylläpito

# huom Listaa kaikki kisat linkki vie pääsivulle
KAIKKI_KISAT_OTSIKKO = u"Kipa - kaikki kisat"
KAIKKI_KISAT_OTSIKKO = "Kipa - kaikki kisat"
KAIKKI_KISAT_URL = KIPA_OTSIKKO

# Tallenna kisa, ei vielä osaamista filen vastaanottoon, TBD
# "http://127.0.0.1:8000/kipa/testi_kisa/tallenna/

# Kisan tuonti tiedostosta, tod.näk helppoa käyttämällä fixtuuria.TBD
KISAN_TUONTI_URL = u"korvaa"
KISAN_TUONTI_OTSIKKO = u"Kipa - Korvaa kisa tiedostosta"
KISAN_TUONTI_URL = "korvaa"
KISAN_TUONTI_OTSIKKO = "Kipa - Korvaa kisa tiedostosta"

# Poista Kisa
KISAN_POISTO_OTSIKKO = u"Kipa - Poista kisa"
KISAN_POISTO_URL = u"poista"
KISAN_POISTO_OTSIKKO = "Kipa - Poista kisa"
KISAN_POISTO_URL = "poista"

# Autentikointi
admin_tunnus = u"admin"
admin_salasana = u"admin"
admin_tunnus = "admin"
admin_salasana = "admin"
7 changes: 7 additions & 0 deletions web/settings/docker.py.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
with open("/app/db/secret.txt", "r") as f:
SECRET_KEY = f.readline()

DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": "/app/db/kipa.db",
}
}

# Should we serve the media files through Python?
SERVE_MEDIA = True
Loading

0 comments on commit b2a4118

Please sign in to comment.