Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrades #64

Closed
wants to merge 51 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
e4e275b
Use print function from __future__
ilesoft Oct 18, 2024
6b4c434
Remove python shebangs
ilesoft Oct 22, 2024
4a58b3c
Use only linefeeds in codebase
ilesoft Oct 22, 2024
1fa0df0
Use absolute import from __future__
ilesoft Oct 24, 2024
0dd4701
Use division from __future__ where needed
ilesoft Oct 25, 2024
c62ecbf
Dict views to lists explicitly when needed
ilesoft Oct 25, 2024
2d8822c
Python version 3
ilesoft Oct 25, 2024
8b308cd
Remove string literal prefix 'u'
ilesoft Oct 28, 2024
2ee0ac8
Use python3 compatible formatting with black 24.10.0
ilesoft Oct 28, 2024
0a0a884
Do not redeclare default file encoding
ilesoft Oct 28, 2024
450318e
Document development flow with Python 3.3
ilesoft Nov 19, 2024
8c2d787
Different types are not orderable in Python 3
ilesoft Nov 19, 2024
033d91c
Explicitly mark used fields in FormSet
ilesoft Nov 19, 2024
64f45e8
Use XHTML style boolean attribute to silence deprecation warning
ilesoft Nov 20, 2024
18f4ad1
Upgrade Django to 1.7
ilesoft Nov 20, 2024
cf88f04
Document that manage.py syncdb is no longer in use
ilesoft Nov 22, 2024
6de2a26
Upgrade Python to version 3.4
ilesoft Nov 21, 2024
88d00b8
Upgrade Django to 1.8
ilesoft Nov 21, 2024
ea18aed
Add django.contrib.auth.middleware.SessionAuthenticationMiddleware
ilesoft Nov 21, 2024
10999fa
Pass callable views to url() and declare urlpatterns as list
ilesoft Nov 21, 2024
c05fa56
Use new TEMPLATES setting to define where templates are
ilesoft Nov 21, 2024
9586b6d
Replace render_to_response with render
ilesoft Nov 21, 2024
ed35216
Upgrade Django to 1.9
ilesoft Nov 21, 2024
e92cdce
Explicit cascade deletion behavior
ilesoft Nov 21, 2024
25abf6e
include() not needed in admin site url conf
ilesoft Nov 21, 2024
dff518a
Upgrade Django to 1.10
ilesoft Nov 22, 2024
dffeb85
Use new MIDDLEWARE setting
ilesoft Nov 22, 2024
05491c7
Upgrade Django to 1.11
ilesoft Nov 22, 2024
ccd72f5
Renderer argument is required on Django 2.1
ilesoft Nov 23, 2024
48e525f
Upgrade Django to 2.0
ilesoft Nov 23, 2024
2f2b0d5
Remove unnecessary databas dump endpoint
ilesoft Nov 23, 2024
579de96
Use simplified URL routing syntax
ilesoft Nov 23, 2024
da0ae4f
Upgrade Python to 3.7
ilesoft Nov 23, 2024
05dc3dc
Fix regex warnings
ilesoft Nov 24, 2024
c0ec4ba
Upgrade Django to 2.1
ilesoft Nov 24, 2024
1be9195
Upgrade Django to 2.2
ilesoft Nov 25, 2024
29acda5
Upgrade Django to 3.0
ilesoft Nov 25, 2024
0a0e7a8
Upgrade Django 3.1
ilesoft Nov 25, 2024
188d42f
Replace depracated ifequal tag with if tag
ilesoft Nov 25, 2024
b8c69a1
Upgrade Django to 3.2
ilesoft Nov 25, 2024
86a5057
Upgrade Python to 3.10
ilesoft Nov 25, 2024
0120de9
Upgrade Django to 4.0
ilesoft Nov 25, 2024
0f36c23
Do not use time zone support
ilesoft Nov 25, 2024
a7bae80
Upgrade Django to 4.1
ilesoft Nov 25, 2024
d670d00
Use new recommended style to render forms
ilesoft Nov 26, 2024
431cbba
Upgrade Django to 4.2
ilesoft Nov 26, 2024
1fe44cf
Upgrade Python to 3.12
ilesoft Nov 26, 2024
abe4011
Upgrade Django to 5.0
ilesoft Nov 26, 2024
29055dc
Include referred tooltip.js sricpt to "new competition" page
ilesoft Nov 26, 2024
acc2df9
Remove transitional form renderer as divFormRenderer is default now
ilesoft Nov 26, 2024
ca31cfc
Upgrade Django to 5.1
ilesoft Nov 26, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 py312 --check .
black -t py312 --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
5 changes: 2 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
FROM python:2
FROM python:3.12

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
Expand Down
16 changes: 7 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,16 @@ 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
* 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 `/tmp/tietokanta/kipa.db`
* `cd web`
* `python manage.py runserver` käynnistää kehityspalvelimen
* `python manage.py migrate --fake-initial --noinput`
* `python manage.py runserver`

### Yksikkötestien ajaminen

* tarvittaessa `source ./kipa-venv/bin/activate`
* `cd web`
* `python manage.py test`

Expand All @@ -46,4 +44,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 py312`. Formatointi tarkastetaan osana CI-putkea.
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
16 changes: 6 additions & 10 deletions docs/manual.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,9 @@ 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.12.

Djangon versio 1.6 on testattu kehityspalvelimen kanssa toimivaksi.
Djangon versio 5.1 on testattu kehityspalvelimen kanssa toimivaksi.

Apache-asennus ei toimi kehitysversiossa.

Expand Down Expand Up @@ -922,15 +922,11 @@ Käyttää testidatana kaikkia fixtures/tests/ löytyviä XML-päätteisiä
tietokantapohjia.

```
python manage.py syncdb
python manage.py makemigrations
python manage.py migrate
```

päivittää tietokantatiedoston "tupa.db" "models.py" päivitetyn määrittelyn perustella.

VAROITUS: Mikäli tietokannan rakenne olennaisesti muuttuu, on
mahdollista ettei se enään ole yhteensopiva jo olemassa olevan tietokannan kanssa.
Näin tietokantaa voi olla vaikea enään muokata päivityksen jälkeen.
On suositeltavaa varmuuskopioida ja nollata tietokanta aina ennen päivittämistä.
Ovat komentoja, joilla saadaan päivitettyä tietokannan rakennetta, jos models.py on muuttunut.
Djangon dokumentaatio opastaa niiden käytössä.

```
python manage.py flush
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()
5 changes: 2 additions & 3 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
django==1.6
south
django==5.1
#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
3 changes: 3 additions & 0 deletions web/media/kipa.css
Original file line number Diff line number Diff line change
Expand Up @@ -498,3 +498,6 @@ td.th_erotin {

.capitalize {text-transform:capitalize;}

.oneRowInlineForm {
display: flex;
}
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"
Loading