diff --git a/README.md b/README.md index 8c25d1f..ad06a95 100644 --- a/README.md +++ b/README.md @@ -1,51 +1,52 @@ # Kipa -Kipa-ohjelmisto, jota käytetään partiotaitokilpailujen tuloslaskentaan. +Kipa eli Kisapalvelu on partiotaitokilpailujen tuloslaskentaan tehty +selainpohjainen ohjelmisto. Kipalla voi laskea myös tehtävät joihin Tupa, +Excel tai taskulaskin ei taivu. Kipa soveltuu myös sinulle, joka tarvitset +vaihtelevia interpolointikertoimia, syötät tuloksia muillakin kuin +Windows-koneilla, tai haluat helpottaa tarkistuslaskentaa. -Asennusohjeet löytyvät [wikistä](https://github.com/partio-scout/kipa/wiki). +Kipaa saa käyttää, kehittää ja levittää vapaasti. Kipaa jaellaan GNU GPLv3 +-lisenssin ehtojen mukaisesti. Lue lisää tiedostosta +[COPYING](COPYING). -## Lisenssi +Ohjeita Kipan käyttöön ja tarkempaa tietoa ohjelmistosta löytyy +[käyttöohjeesta](docs/manual.md). -Tämä ohjelma on vapaa; tätä ohjelmaa on sallittu levittää edelleen ja muuttaa GNU yleisen lisenssin (GPL-lisenssin) ehtojen mukaan sellaisina kuin Free Software Foundation on ne julkaissut Lisenssin version 3 mukaisesti. +Asennusohjeet löytyvät [asennusohjeesta](docs/installation.md). -Tätä ohjelmaa levitetään siinä toivossa, että se olisi hyödyllinen, mutta ilman mitään takuuta; ilman edes hiljaista takuuta kaupallisesti hyväksyttävästä laadusta tai soveltuvuudesta tiettyyn tarkoitukseen. Katso GPL-lisenssistä lisää yksityiskohtia. +## Kehitys -Tämän ohjelman mukana pitäisi tulla kopio GPL-lisenssistä; jos näin ei ole, kirjoita osoitteeseen Free Software Foundation Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +Apu Kipan kehittämiseen on tervetullutta. Lisätietoa kehitysprosessista ja +siihen osallistumisesta löytyy +[prosessiohjeesta](docs/CONTRIBUTING.md). Yleistä tietoa kehittämisestä +löytyy [kehittäjäohjeesta](docs/development.md). +## Tekijänoikeudet -## Kehittäminen +Tämän ohjelmiston tekijänoikeudet kuuluvat ainakin vuosilta 2008 - 2012 +Espoon Partiotuki ry.:lle (ept@partio.fi) ja sen jälkeen muille Kipan +kehitykseen osallistuneille henkilöille. -### Paikallisen kehitysympäristön pystytys +Alkuperäiseen projektiryhmään ovat kuuluneet: +* Joonas "Jones" Hirn +* Visa "Viski" Jokelainen +* Frans "Ransu" Korhonen +* Samu Wikstedt +* Markus "Mara" Vuorinen -* Luo Kipalle virtuaaliympäristö jonnekkin: `python -m venv /tmp/venv` -* Ota virtuaaliympäristö käyttöön: `source /tmp/venv/bin/activate` -* Asenna riippuvuudet: `pip install -r requirements.txt` -* 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 migrate --fake-initial --noinput` -* `python manage.py runserver` +Muuta projektiryhmää, joka on ollut enemmän tai vähemmän projektin +vaiheissa mukana: Janne "Peltsi" Peltola, Teemu Penttilä, Martti "Mara" +Suontausta. -### Yksikkötestien ajaminen +Kipaa on ollut jatkokehittämässä tekijöitä alkuperäisen projektiryhmän +ulkopuolelta. -* `cd web` -* `python manage.py test` +## Kehitysprojekti -### E2E-testien ajaminen - -* Käynnistä Kipan kehityspalvelin -* `python3 -m venv ./robot-venv` -* `source ./robot-venv/bin/activate` -* `pip install robotframework robotframework-seleniumlibrary` -* `robot --outputdir /tmp/test-report --variable BROWSER:headlessfirefox --exitonfailure ./web/robot/perustoiminnot.robot` - -Hakemistosta `./web/roobt` löytyy myös toinen robot-tiedosto nimeltään -`autentikointi.txt`, mutta sen ajaminen ei taida onnistua, ellei ensin toteuta -Kipaan suunniteltua kirjautumista. - -### Python-koodin formatointi - -Koodi noudattaa Black-autoformatterin vesion 24.10.0 mukaista tyyliä. Blackille annetaan lippu `--target-version py312`. Formatointi tarkastetaan osana CI-putkea. +Kipa on alunperin kehitetty espoolaisten partiolaisten voimin korvaamaan +Sakari "Sacu" Koutin koodaama Tupa ja vastaamaan ajan haasteisiin. +Kehitystyö alkoi lokakuussa 2008 ja ensimmäinen valmis versio valmistui +Keväällä 2011. Espoon Partiotuki ry. oli taustayhteisönä ja tuki +taloudellisesti projektia sen kehitysaikana. diff --git a/CONTRIBUTING.md b/docs/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to docs/CONTRIBUTING.md diff --git a/docs/development.md b/docs/development.md new file mode 100644 index 0000000..d2e9db0 --- /dev/null +++ b/docs/development.md @@ -0,0 +1,126 @@ +# Kehittäjäohje + +## Arkkitehtuuri + +Kisapalvelu, Kipa, on puhdas web-applikaatio. Laskenta on toteutettu +Pythonilla. Web näkymät on rakennettu Django-ohjelmistokehyksen päälle, +joka on toteuttu pythonilla. Kaikki syötteet tallennetaan sqlite-kantaan, +jonka yhteydet hoitaa Django. SQLite-toiminnalisuus tulee Pythonin mukana. +Web-palvelimena on käytetty Apachea sekä djangon kehitysserveriä, mutta ei +pitäisi olla esteitä toteuttaa toiminnallisuutta millä tahansa +web-palvelimella joka tukee Pythonin suorittamista. Django tukee myös +MySQL- sekä PostegreSQL-kantoja, pienellä muutoksella settings.py +tiedostoon. Mikäli haluat rakentaa julkisen verkkopalvelun jossa voluumi +voi olla kovempi kannattaa tämä pitää mielessä. + +## Suorituskyky ja skaalautuvuus + +Normaalikäytössä ei Kipa nosta mainittavasti koneen CPU-kuormaa. Yhdellä +kannettavalla voidaan hyvin ajaa kisatoimiston palveluja. Piikkittäisiä +kuormituksia syntyy ainoastaan tulosten laskemisesta, isohkoissa +kilpailussa, jossa on tuhansia syötteitä, vie kaavojen parsiminen ja +laskenta isoille sarjoille joissain tapauksissa joitain sekunteja. Testien +mukaan kuorma kuitenkin säikeistyy käytössä olevien threadien määrän +mukaan - kuitenkin vain yksi per istunto. + +Alkuperäisessä Kehitysvaiheessa on testejä ajettu pitkään (muinaisella) +850Mhz Pentiumilla jossa 128Mt muistia - tälläiselläkään koneella ei +suorituskykyongelmia tule muuta kuin hetkellisesti laskennassa. + +Testimielessä Kipan kantaan on ajettu yhtäaikaa parikymmentä kilpailua +kokonaisuudessaan, jolloin syötteiden määrä on noussut tuhansiin, tällä ei +kuitenkaan ole nähty olevan vaikutusta suorituskykyyn. + +## Paikallisen kehitysympäristön pystytys + +* Luo Kipalle virtuaaliympäristö jonnekkin: `python -m venv /tmp/venv` +* Ota virtuaaliympäristö käyttöön: `source /tmp/venv/bin/activate` +* Asenna riippuvuudet: `pip install -r requirements.txt` +* 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 migrate --fake-initial --noinput` +* `python manage.py runserver` + +## Yksikkötestien ajaminen + +* `cd web` +* `python manage.py test` + +Kipaa voi myös käyttää testipalvelimen kanssa, joka on muuten samanlainen +kuin runserver, paitsi että se käyttää virtuaalista tietokantaa muistissa. +Ei tee mitään muutoksia tiedostoihin. Turvallinen erilaisiin kokeiluihin. +Voidaan täyttää halutulla tietokantapohjalla (fixture). esim. + +``` +python manage.py testserver fixtures/tests/katuu.xml +``` + +## Päästä päähän -testien ajaminen + +* Käynnistä Kipan kehityspalvelin +* `python -m venv ./robot-venv` +* `source ./robot-venv/bin/activate` +* `pip install robotframework robotframework-seleniumlibrary` +* `robot --outputdir /tmp/test-report --variable BROWSER:headlessfirefox \ + --exitonfailure ./web/robot/perustoiminnot.robot` + +Hakemistosta `./web/roobt` löytyy myös toinen robot-tiedosto nimeltään +`autentikointi.txt`, mutta sen ajaminen ei taida onnistua, ellei ensin +toteuta Kipaan suunniteltua kirjautumista. + +## Python-koodin formatointi + +Koodi noudattaa Black-autoformatterin vesion 24.10.0 mukaista tyyliä. +Blackille annetaan lippu `--target-version py312`. Formatointi tarkastetaan +osana CI-putkea. + +## Selityksiä lähdekooditiedostoista + +* `web/tupa/` + - `admin.py` + * Djangon luoman admin sivun määritely. + - `AritmeettinenLaskin.py` + * Laskin joka laskee matemaattisia lauekeita merkkijonosta jossa on + merkejä +-/\*() sekä numeroita. + - `duplicate.py` + * Tiedon monistaminen. Tehtävien kopiointi, XML-tietokantatiedoston + luonti. + - `formit.py` + * Perus formien määritys. Formeja käytetään näkymissä (views.py) + - `logger.py` + * Kirjaus, ja nauhoitus. Kirjaa laskimen välivaiheita. Nauhoittaa post + dataa. + - `models.py` + * Django datamalli. Koko systeemin ydin. + * Datamalliin pohjatuu sekä tietokanta että näkymät. + * Myös laskin käyttää datamallia tiedon haussa. + - `TehatavanMaaritys.py` + * Tehtävän määrityksen formit. + - `tests.py` + * Yksikkötestit, Testaa järjestelmää erilaisilla testeillä. + - Aritmeettisen laskimen perustoimitukset. + - Sarjakohtaisten tulosten testaus. + - Kaikkien näkymien avautuminen testidatalla. + - Tiedon tallentuminen näkymillä. + - `Tuloslaskin.py` + * Laskee tulokset tietokannan tietojen pohjalta. + - `urls.py` + * Näkymien hakemistopolut. + - `views.py` + * Näkymät, jokaisen sivun aivot. +* `web/tupa/templates/` + - `404.html` + - `500.html` + - `base.html` +* `web/tupa/templates/tupa/` + - Näkymien templaatit +* `web/tupa/templates/tupa/forms/` + - lomakekohtaiset templaatit +* `web/media/` + - kuvat + - css + - yms. tiedostot diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 0000000..a950aab --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,110 @@ +# Asennusohjeet + +## Kipan verkkoasennus + +### Lähiverkko + +Kaikkien tietokoneiden pitää olla samassa verkossa niin että niillä on +verkkoyhteys palvelimelle johon Kipa on asennettu. Yhteyden toimivuutta voi +kokeilla vaikka ping \ komennolla. Palvelimelle tarvitaan +portti 80 auki http-liikennöintiä varten. Jos kisatoimistosta ei ole pääsy +Internettiin kannattaa harkita palomuurin sammuttamisesta palvelimelta. + +### Internet + +On myös mahdollista asentaa Kipa julkisesti Internettiin jolloin kaikki +kisat ovat verkossa näkyvillä kaikille, tällöin kannattaa miettiä onko +turvallisuusriskinä, että kuka tahansa, jolla on osoite, voi mennä +muokkamaan kisan määrittelyitä ja tehtäviä. Lisäturvana kannattaa harkita +käyttäjäautentikoitia osoitteeseen jossa Kipa pyörii. Samoin rajoituksia +voi tulla syrjäseuduilla toimiville kisatoimistoille, joihin ei saada +riittävän hyvää verkkoyhteyttä. + +## Docker-asennus + +1. Luo itsellesi GitHubin personal access + token [täältä](https://github.com/settings/tokens) jakirjaudu + Docker-clientillä sisään GitHubin pakettivarantoon esimerkiksi + komennolla `docker login ghcr.io` +2. Aja komento `docker run -d -p 3000:3000 -v kipa_db:/app/db --name kipa -d ghcr.io/partio-scout/kipa:latest` + * Halutessasi voit myös käyttää kehitysversiota vaihtamalla `latest`-tagin sijaan `develop`in. +3. Mene selaimella osoitteeseen http://localhost:3000/kipa/ – voilá! + +Yllä opastettu ajotapa käyttää kipa_db-nimisessä Docker-volumessa olevaa +SQLite-kantaa. Sen sijaan voit käyttää esimerkiksi MySQL-kantaa +mounttaamalla erillisen local.py-tiedoston tähän tapaan: +`-v /home/user/kipa/local.py:/app/web/settings/local.py`. Voit myös yliajaa +muita settings/__init__.py:ssä olevia määrityksiä em. tavalla, esimerkiksi +ottaa käyttöön välimuistituksen. + +## macOS-asennus + +Toimivaksi todettu macOS Montereylla (12.0), luultavasti toimii myös +uudemmilla käyttöjärjestelmillä. Huom! Tämä ohje asentaa Kipan +kehityspalvelimen (development server). + +macOS sisältää valmiiksi kaiken muun, paitsi itse Djangon. Sen asennus on +hyvin yksinkertainen ja onnistuu keneltä tahansa pääkäyttäjän oikeuksilla. + +1. Avaa Terminal klikkaamalla oikeasta yläkulmasta suurennuslasia ja + kirjoittamalla hakukenttään Terminal +2. Asenna Django kirjoittamalla terminaaliin + `sudo easy_install django==1.3.1` + Anna salasanasi, jos terminaali sitä kysyy. Tämä asentaa Djangon + uusimman saatavilla olevan version. +3. Hae Kipa GitHubista kirjoittamalla + `git clone https://github.com/partio-scout/kipa.git` + Jos et ole aiemmin käyttänyt Gittiä, tulee näytölle varmistus Command + Line Developer Toolsin asentamisesta. Hyväksy asennus ja aja käsky + uudelleen. +4. Hyväksy terminaalin mahdollinen kysymys palvelimen sertifikaatista. +5. Siirry Kipan web-hakemistoon kirjoittamalla `cd kipa/web` +6. Käynnistä Django ja Kipa `sudo python manage.py runserver` +7. Jos saat ilmoitukseksi “Development server is running at...”, voit avata + selaimen (esim. Safari) ja kirjoittaa osoitteeksi 127.0.0.1:8000/kipa/ + +Kun lopetat Kipan käytön, siirry terminaaliin ja paina Ctrl+C, joka +pysäyttää Djangon. + +## Linux-asennus + +Pohjalle tarvitaan moderni Linux-käyttöjärjestelmä, testattu Ubuntu +20.04:lla + +Huom! Ohjeessa {{kipa_asennus}} viittaa kansioon, johon Kipa on asennettu +(eli 2. Kohdassa .zip tiedosto purettu). + +1. Lataa Kipa + lähdekoodi [GitHubista](https://github.com/partio-scout/kipa/archive/refs/heads/master.zip) +2. Pura .zip tiedosto kansioon, johon haluat asentaa Kipa +3. Asenna tarvittavat paketit komennolla + `sudo apt install apache2 python libapache2-mod-python mysql-server libmysqlclient-dev python-dev build-essential` + +* Pythonin asennuksen jälkeen asenna pip, katso esim. + ohjeet: https://stackoverflow.com/a/66719099 +* Pip:n asennuksen jälkeen asenna vaadittava versio Djangosta ajamalla + kipa-kansiossa komento pip install -r requirements.txt + +4. Lisää /etc/apache2/apache2.conf tiedoston loppuun seuraavat rivit + + + SetHandler python-program + PythonHandler django.core.handlers.modpython + SetEnv DJANGO_SETTINGS_MODULE web.settings + PythonDebug On + PythonPath "['{{kipa_asennus}}/kipa', '{{kipa_asennus}}/kipa/web'] + sys.path" + + +5. Aja seuraavat komennot + + chown www-data {{kipa_asennus}}/kipa/web + chown www-data {{kipa_asennus}}/kipa/web/tupa.db + ln -s {{kipa_asennus}}/kipa/web/media /var/www/html/kipamedia + +6. Käynnistä apache2 uudestaan komennolla `sudo systemctl restart apache2` +7. Kipa pitäisi toimia nyt osoitteessa localhost://kipa/ + +## Windows-asennus + +Lataa [asennustiedosto](https://github.com/partio-scout/kipa/releases/tag/1.6.2) +ja aja se. Testattu toimivaksi Windows 10 ja Windows XP. \ No newline at end of file diff --git a/docs/manual.md b/docs/manual.md index 6e05f25..0cad522 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -1,6 +1,6 @@ ![](images/title.png) -# Kisapalvelu KIPA -- Käyttöohje +# Kisapalvelu KIPA - Käyttöohje ## Näin pääset alkuun @@ -9,11 +9,11 @@ tuloslaskentaohjelmistoon. Mikäli olet uusi Kipalle kokonaisuudessan suosittelemme lukemaan vähintään kohdat asennus sekä tehtävien määritys. Monet toiminnallisuudet ovat intuitiivisia ja ne on helppo päätellä, -toisaalta monessa paikassa voi olla apua lukea tämä ohje kattavasti -läpi, erityisesti tehtävien määritys menee jouhevammin, mikäli malttaa -tutustua dokumentaatioon ensin. Kipa tarjoaa monipuolisen tavan -toteuttaa laskentaa ja moni asia voidaan laskea helpommin koneellisesti, -mitä aiemmin on laskettu käsin. +toisaalta monessa paikassa voi olla apua lukea tämä ohje kattavasti läpi, +erityisesti tehtävien määritys menee jouhevammin, mikäli malttaa tutustua +dokumentaatioon ensin. Kipa tarjoaa monipuolisen tavan toteuttaa laskentaa +ja moni asia voidaan laskea helpommin koneellisesti, mitä aiemmin on +laskettu käsin. Riemukkaita laskentahetkiä! @@ -21,27 +21,44 @@ Riemukkaita laskentahetkiä! ### Yleistä -Kipa eli Kisapalvelu on partiokilpailujen tuloslaskentaa helpottamaan -tehty ohjelmisto. Kipa on helppokäyttäinen ja se on vapaasti -levitettävissä sekä muokattavissa. Ohjelmisto kehittyy edelleen joten -tarkista aina uusimman version saatavuus. +Kipa eli Kisapalvelu on partiokilpailujen tuloslaskentaa helpottamaan tehty +ohjelmisto. Kipa on helppokäyttöinen ja se on vapaasti levitettävissä sekä +muokattavissa. Ohjelmisto kehittyy edelleen joten tarkista aina uusimman +version saatavuus. ### Ominaisuudet -* **Selainkäyttö**: Kisatoimistossa koneet joilta tuloksia syötetään ei vaadi ohjelmien asentamista, Kipaa voi käyttää Internet-selaimella. -* **Monen käyttäjän tuki**: Kisatoimistossa voi syöttää usealla koneilla esimerkiksi eri sarjoja tai eri tehtäviä. -* **Tuomarineuvostofunktio**: Lasketun tuloksen voi korvata "kovalla arvolla" jos laskettu tulos ei jostain syystä kelpaa. -* **Tulokset Exceliin**: Tulokset saa ulos CSV-tiedostona joka helpottaa printtien yms. tekemistä. -* **Monta yhtäaikaista kilpailua**: Yhdelle palvelimille voidaan asentaa käytännössä ääretön määrä kilpailuja joita voivat muut koneet käyttää. -* **Tulosten syöttö kahteen kertaan**: Erityisesti SM-kilpailuita varten toteutettu ominaisuus jolla voidaan eliminoida kirjoitusvirheiden vaikutus. -* **Tuloslaskennen tilannenäkymä**: Graafinen näkymä helpottaa tuloslaskennan ja tarkastuksen etenemisen hahmottamista. -* **Ilmainen ja vapaasti kehitettävä**: Kipaa saa vapaasti levittää ja muokata kunhan edelleen kehitetyt versiot ovat vapaasti saatavilla myös muille. -* **Vapaa kaava**: Tehtävän kaava voidaan määrittää matemaattisesti lähes millaiseksi tahansa. -* **Valmiit tehtävämallit**: Yleisimpiä tehtäviä kuten suorasumma, interpolointi tai aikaväli varten on valmiit pohjat jotka nopeuttavat käyttöä. -* **Tehtävien kopiointi**: Sarjasta toiseen tai sarjan sisällä tehtävien kopiointi. -* **Windows- ja Linux-tuki**: Palvelin voidaan asentaa sekä Windows- & Linux-koneille, myös pilotoitu OS X -koneille. -* **Varmuuskopiointi**: Kilpailun tulokset voidaan tuoda XML-varmuuskopiona tai siirtää toiselle koneelle. -* **Tupan ominaisuudet**: Perinteikkään Tupan ominaisuudet on pyritty tuomaan mahdollisimman pitkälti myös Kipaan. +* **Selainkäyttö**: Kisatoimistossa koneet joilta tuloksia syötetään ei + vaadi ohjelmien asentamista, Kipaa voi käyttää Internet-selaimella. +* **Monen käyttäjän tuki**: Kisatoimistossa voi syöttää usealla koneilla + esimerkiksi eri sarjoja tai eri tehtäviä. +* **Tuomarineuvostofunktio**: Lasketun tuloksen voi korvata "kovalla + arvolla" jos laskettu tulos ei jostain syystä kelpaa. +* **Tulokset Exceliin**: Tulokset saa ulos CSV-tiedostona joka helpottaa + printtien yms. tekemistä. +* **Monta yhtäaikaista kilpailua**: Yhdelle palvelimille voidaan asentaa + käytännössä ääretön määrä kilpailuja joita voivat muut koneet käyttää. +* **Tulosten syöttö kahteen kertaan**: Erityisesti SM-kilpailuita varten + toteutettu ominaisuus jolla voidaan eliminoida kirjoitusvirheiden + vaikutus. +* **Tuloslaskennen tilannenäkymä**: Graafinen näkymä helpottaa + tuloslaskennan ja tarkastuksen etenemisen hahmottamista. +* **Ilmainen ja vapaasti kehitettävä**: Kipaa saa vapaasti levittää ja + muokata kunhan edelleen kehitetyt versiot ovat vapaasti saatavilla myös + muille. +* **Vapaa kaava**: Tehtävän kaava voidaan määrittää matemaattisesti lähes + millaiseksi tahansa. +* **Valmiit tehtävämallit**: Yleisimpiä tehtäviä kuten suorasumma, + interpolointi tai aikaväli varten on valmiit pohjat jotka nopeuttavat + käyttöä. +* **Tehtävien kopiointi**: Sarjasta toiseen tai sarjan sisällä tehtävien + kopiointi. +* **Windows- ja Linux-tuki**: Palvelin voidaan asentaa sekä Windows- & + Linux-koneille, myös pilotoitu OS X -koneille. +* **Varmuuskopiointi**: Kilpailun tulokset voidaan tuoda XML-varmuuskopiona + tai siirtää toiselle koneelle. +* **Tupan ominaisuudet**: Perinteikkään Tupan ominaisuudet on pyritty + tuomaan mahdollisimman pitkälti myös Kipaan. ## Referenssit @@ -54,117 +71,30 @@ Esimerkkejä kisoista, joita on laskettu Kipalla: * Punkku 2010 * Järvi-Suomen piirin Syyskisat 2011 -## Asennusohje sekä poisto-ohje - -### Miten Kipa toimii +## Miten Kipa toimii Kipa asennetaan yhdelle tietokoneelle, jolta käsin voidaan syöttää kilpailun tiedot ja tulokset. Kipan hienoutena on kuitenkin että samaa kisaa voidaan verkon yli käyttää myös muilta päätteiltä, jotka voivat -periaatteessa olla mitä tahansa laitteitta, joissa on Internet-selain. Kone, -jolle Kipa on asennettu toimii palvelimena. Kaikki kisan tiedot pidetään -tallessa keskitetysti palvelinkoneella, jonka pitää luonnollisesti olla -päällä jotta muut koneet voivat olla siihen yhteydessä. +periaatteessa olla mitä tahansa laitteitta, joissa on Internet-selain. +Kone, jolle Kipa on asennettu toimii palvelimena. Kaikki kisan tiedot +pidetään tallessa keskitetysti palvelinkoneella, jonka pitää luonnollisesti +olla päällä jotta muut koneet voivat olla siihen yhteydessä. ![](images/01.png) Tyypillisesti Kipa asentuu Apache-ohjelmiston päälle, joka käynnistyy samalla kun tietokone käynnistetään. -### Windows - -Lataa Suomen Partiolaisten sivuilta Kipan asennuspaketti ja käynnistä se -koneelta, jolle Kipa asennetaan ja joka toimii kisan palvelimena. - -Suorita Windows-asennuspaketti ja vastaa joka kohtaan jossa kysytään -jatkoa OK, Next, Yes, Finish yms. Älä muuta arvoja ellet ole täysin -varma siitä, mitä teet. - -Windows installeri (Windows Vista, Windows 7 testattu). Testattu sekä 32 -että 64-bittisillä järjestelmillä. - -Tämän jälkeen koneellesi on asennettu Apache ja Python (osittain), sekä Kipa. - -Osoitteesta -[http://localhost/kipa/](http://localhost/kipa/) -pitäisi tämän jälkeen löytyä Kipa. Ohjelmaa ei tarvitse erikseen käynnistää. - -Katso lisätietoja-kohdasta verkkokäyttö mikäli tarvitset useamman -käyttäjän yhtäaikaisen mahdollisuuden. - -Jos et tarvitse ohjelmaa enää, katso kohta poistaminen. - -### Linux - -Kipa on testattu useissa Red Hat -, Ubuntu- sekä Debian-koneissa. Tarjolla -on sekä asennuspaketti DEB-muodossa että manuaalinen vaihtoehto ja jos -kirjastojen kanssa tulee ongelmia voi kehittäjädokumentaatiosta löytää -tiedon tarvittavista muutoksista. - -Ohjelmassa ei ole mitään käännettävää, kunhan riippuvuudet ja konfiguraatiot -on kehitysdokumentaation mukaisesti on Kipa helppo asentaa. - -### Apple, OS X - -OS X:n päällä ainoa testattu tapa on käyttää Djangon omaa -kehityspalvelinta, josta kehitysdokumentaatiossa enemmän. Myös Apache -lienee mahdollinen, mutta ei testattu. Vakavahenkistä kisaa varten -kannattaa toimivuutta testata lisää ennen kilpailua. - -### Vmware image - -Vmware tarjoaa mahdollisuuden ajaa toista käyttöjärjestelmää -virtualisoituna oman käyttöjärjestelmän sisällä. Tämän option -käyttämiseen tarvitaan Vmware-player, Vmware-server (molemmat ilmaisia) -tms. tuote joka osaa tämän tehdä. - -Image voi olla hyödyllinen esimerkiksi kun Kipan käyttämät Python ja -Django versiot eivät löydy helpolla, käyttää ei suoraan tuettua -käyttöjärjestelmää tai Windows asennus yskii. - -Image on ladattavissa verkosta ja siihen on tunnus kipa / salakala - -1. Asenna sopiva Vmware tuote -2. Lataa image -3. Pura image ja käynnistä se Vmwarella -4. Päivitä Kipan data tiedostot ajantasalle. - -Verkko asetuksen tulisi olla sillattu, jotta voidaan käyttää montaa -käyttäjää yhtä aikaa. - -Vieraile tupa2.sf.net Imagen linkkiä varten. - -### Muut käyttöjärjestelmät / itse muokattava asennus - -Kipan laskenta perustuu Pythonin-ohjelmointikielellä kirjoitettuun koodiin. -Tällä hetkellä kehitysversiossa on käytössä Python 3.12. - -Djangon versio 5.1 on testattu kehityspalvelimen kanssa toimivaksi. - -Apache-asennus ei toimi kehitysversiossa. - -### Asennuksen poistaminen - -#### Windows - -1. Poista Apache (lisää-poista sovelluksia kautta) -2. Poista C:\\Kipa - -#### Linux + muut - -1. Poista Apache -2. poista hakemisto /data - ## Kipan käyttö Kipa on kokonaisuudessaan web-applikaatio joten sen käytössä kannattaa huomioida joitain yleisiä käyttöä helpottavia tekijöitä. -* Kun teet muutoksia Kipan tehtäviin, syötteisiin vartioihin yms. - muista painaa aina lopuksi "Tallenna" sillä muuten menetät - tekemäsi muutokset. -* Navigoidessa suosittelemme käyttämään mieluummin Kipan valikoita - kuin selaimen takaisin tai eteenpäin nappuloita. +* Kun teet muutoksia Kipan tehtäviin, syötteisiin vartioihin yms. muista + painaa aina lopuksi "Tallenna" sillä muuten menetät tekemäsi muutokset. +* Navigoidessa suosittelemme käyttämään mieluummin Kipan valikoita kuin + selaimen takaisin tai eteenpäin nappuloita. ### Kisan luominen @@ -186,12 +116,13 @@ Syötä vartion tiedot: * **Nro**: Vartion numero * **Nimi**: Vartion nimi -* **Keskeyttänyt**: Jos vartio keskeyttää, kirjataan ensimmäisen - tekemättä jätetyn tehtävän tehtävänumero. -* **Ulkopuolella**: Jos vartio siirtyy kisan ulkopuolelle, kirjataan ensimmäisen - kisan ulkopuolella suoritetun tehtävän numero. Kirjataan "1", mikäli - vartio kisaa kisan ulkopuolella kisan alusta asti. -* **Poista**: Pistä ruksi jos haluat poistaa vartion (ei tarvitse tehdä tyhjille) +* **Keskeyttänyt**: Jos vartio keskeyttää, kirjataan ensimmäisen tekemättä + jätetyn tehtävän tehtävänumero. +* **Ulkopuolella**: Jos vartio siirtyy kisan ulkopuolelle, kirjataan + ensimmäisen kisan ulkopuolella suoritetun tehtävän numero. Kirjataan "1", + mikäli vartio kisaa kisan ulkopuolella kisan alusta asti. +* **Poista**: Pistä ruksi jos haluat poistaa vartion (ei tarvitse tehdä + tyhjille) Paina lopuksi "Tallenna" @@ -200,63 +131,61 @@ ulkopuolelta muista palata tänne määrittelemään tämä tieto. ### Tulosten syöttö -Tulosten syötössä syötetään jokaiseen tehtävään sen osatehtävien -syötteet. Kipa syöttää itse tiedon, mikäli vartio on kilpailun -ulkopuolella tai keskeyttänyt ja tällöin ei vartion syötteitä tarvitse -tässä huomioida. Muista merkitä vartiot ulkopuolelle / keskeyttäneeksi. +Tulosten syötössä syötetään jokaiseen tehtävään sen osatehtävien syötteet. +Kipa syöttää itse tiedon, mikäli vartio on kilpailun ulkopuolella tai +keskeyttänyt ja tällöin ei vartion syötteitä tarvitse tässä huomioida. +Muista merkitä vartiot ulkopuolelle / keskeyttäneeksi. ![](images/02.png) -Yllä olevassa kuvassa näkyy tehtävän, osatehtävien syötekentät. -Vasemmalla on ensimmäisen osatehtävän syötekentät, joihin -syötetään raakapisteitä ja oikealle puolelle jos vartio on -ylittänyt ajan (-1 piste). Yllä on "tarkistettu"-ruutu. Kun tämä ruutu on -ruksittu ja tiedot tallennettu näkyy laskennan tilanne alla että nämä -tulokset on tarkistettu. Tätä voidaan hyödyntää kisatoimistoissa, jossa -käytetään kaksia silmiä tarkistamaan syötteiden oikeellisuus. +Yllä olevassa kuvassa näkyy tehtävän, osatehtävien syötekentät. Vasemmalla +on ensimmäisen osatehtävän syötekentät, joihin syötetään raakapisteitä ja +oikealle puolelle jos vartio on ylittänyt ajan (-1 piste). Yllä on " +tarkistettu"-ruutu. Kun tämä ruutu on ruksittu ja tiedot tallennettu näkyy +laskennan tilanne alla että nämä tulokset on tarkistettu. Tätä voidaan +hyödyntää kisatoimistoissa, jossa käytetään kaksia silmiä tarkistamaan +syötteiden oikeellisuus. ![](images/03.png) -Mikäli vartion suoritus on hylätty syötetään h-kirjain vartion -tulokseksi. Ajan syötössä käyteään syötemuotoa HH:MM:SS kuten yllä -näkyy. +Mikäli vartion suoritus on hylätty syötetään h-kirjain vartion tulokseksi. +Ajan syötössä käyteään syötemuotoa HH:MM:SS kuten yllä näkyy. ### Tuplasyöte -Etusivun valikosta löytyy toiminto tuplasyöte. Tälle toiminnallisuudella -on käyttöä kilpailuissa joissa tulosten oikeellisuus pitää varmistaa +Etusivun valikosta löytyy toiminto tuplasyöte. Tälle toiminnallisuudella on +käyttöä kilpailuissa joissa tulosten oikeellisuus pitää varmistaa syöttämällä luvut kahteen kertaan kirjoitusvirheiden varalta. -Ensin syötetään tulokset normaalisti. Kun tehtävän tulokset -on syötetty kertaalleen voidaan tuloksia alkaa syöttämään toiseen -kertaan. Painetaan "Tallenna" kun syöttäminen on valmis. +Ensin syötetään tulokset normaalisti. Kun tehtävän tulokset on syötetty +kertaalleen voidaan tuloksia alkaa syöttämään toiseen kertaan. Painetaan " +Tallenna" kun syöttäminen on valmis. ![](images/04.png) -Järjestelmä näyttää punaisella solut, joiden syöte ei täsmää -ensimmäisellä kerralla syötettyyn. +Järjestelmä näyttää punaisella solut, joiden syöte ei täsmää ensimmäisellä +kerralla syötettyyn. ### Tuomarineuvostyökalu Työkalulla voi syöttää tuloksia vartioille joiden tulosta ei syystä tai -toisesta voida laskea normaalisti vaan se pitää syöttää "kovana -arvona". Jos tuloksissa näkyy yllättäviä arvoja, kannattaa tarkistaa, -ettei tuomarineuvostotyökaluun ole epähuomiossa syötetty arvoja. +toisesta voida laskea normaalisti vaan se pitää syöttää "kovana arvona". +Jos tuloksissa näkyy yllättäviä arvoja, kannattaa tarkistaa, ettei +tuomarineuvostotyökaluun ole epähuomiossa syötetty arvoja. ![](images/05.png) ### Varmuuskopiointi / Vieminen / Palauttaminen -Kisan tiedot on mahdollista viedä talteen yhtenä XML-dumppina. -Tälle voi olla tarvetta, mikäli haluaa esimerkiksi tehdä jotain -testailuja olemassa olevaan konfiguraatioon, ottaa varmuuskopion tai -viedä jollekkin toiselle koneelle kilpailun kaikki tiedot. +Kisan tiedot on mahdollista viedä talteen yhtenä XML-dumppina. Tälle voi +olla tarvetta, mikäli haluaa esimerkiksi tehdä jotain testailuja olemassa +olevaan konfiguraatioon, ottaa varmuuskopion tai viedä jollekkin toiselle +koneelle kilpailun kaikki tiedot. ![](images/06.png) -Tallenna kisa -toiminnolla saa XML-tiedoston, jonka voi tallentaa -koneelle. Palauta kisa -toiminnolla taas voidaan XML-tiedostosta -palauttaa kisa. +Tallenna kisa -toiminnolla saa XML-tiedoston, jonka voi tallentaa koneelle. +Palauta kisa -toiminnolla taas voidaan XML-tiedostosta palauttaa kisa. ### Laskennan tilanne @@ -270,11 +199,11 @@ sarjasta, miten pitkällä tehtävien syöttö on. ### Tulosten vienti CSV-tiedostoon -Jos tuloksia on tarvetta muokata, suodattaa tai tulostusnäkymää -jalostaa on helpointa viedä tulokset CSV-muotoon jolloin niitä voidaan -muokata esimerkiksi Excel-ohjelmalla. Tulosnäkymä sivulta löytyy -jokaisen sarjan tuloksille "Tulokset CSV tiedostoon"-painike, josta painettaessa -ohjelma antaa sarjan tulokset ulos yhtenä tiedostona. +Jos tuloksia on tarvetta muokata, suodattaa tai tulostusnäkymää jalostaa on +helpointa viedä tulokset CSV-muotoon jolloin niitä voidaan muokata +esimerkiksi Excel-ohjelmalla. Tulosnäkymä sivulta löytyy jokaisen sarjan +tuloksille "Tulokset CSV tiedostoon"-painike, josta painettaessa ohjelma +antaa sarjan tulokset ulos yhtenä tiedostona. ![](images/09.png) @@ -285,63 +214,65 @@ miten Kipa laskee tuloksia. Kipassa on jokaisessa sarjassa erilliset tehtävät, tehtävät tulee numeroida. Tehtävien numeroinnin tulee vastata järjestystä jossa sarjan -vartiot suorittavat tehtäviä. Jokainen tehtävä koostuu osatehtävistä, -jotka on nimetty a -- z. Viittaukset osatehtävien nimiin syntyvät -automaattisesti. Tehtävän kaava on koostuu osatehtävien viittauksista. -Jokainen osatehtävä koostuu syötteistä joille tulee syöttää kuvaus -tehtävän määrittelyvaiheessa (esim. juoksuaika). +vartiot suorittavat tehtäviä. Jokainen tehtävä koostuu osatehtävistä, jotka +on nimetty a - z. Viittaukset osatehtävien nimiin syntyvät automaattisesti. +Tehtävän kaava on koostuu osatehtävien viittauksista. Jokainen osatehtävä +koostuu syötteistä joille tulee syöttää kuvaus tehtävän +määrittelyvaiheessa (esim. juoksuaika). Kun selaa tehtäviä näkyvät tehtävänumerot ja numerot. Kun katsoo tehtävän -"ylätason" tietoja nähdään vastaavasti osatehtävien nimet ja niiden -kaava. Osatehtävillä on taas omat syötteensä ja kaavansa +"ylätason" tietoja nähdään vastaavasti osatehtävien nimet ja niiden kaava. +Osatehtävillä on taas omat syötteensä ja kaavansa ![](images/10.png) ### Määritä tehtävät, yleisnäkymä -Jokaisella sarjalla on omat tehtävät. Saman nimisiä tehtäviä voi olla -eri sarjoissa ja kisoissa, mutta ne ovat laskennassa täysin irrallisia -toisistaan. Tulosten laskennassa esimerkiksi interpoloinnit menee -sarjojen sisällä. +Jokaisella sarjalla on omat tehtävät. Saman nimisiä tehtäviä voi olla eri +sarjoissa ja kisoissa, mutta ne ovat laskennassa täysin irrallisia +toisistaan. Tulosten laskennassa esimerkiksi interpoloinnit menee sarjojen +sisällä. -Tehtäviä (nimi+määrittelyt) voi kopioida toisesta sarjasta. Kannattaa -ensin tehdä tehtävät yhteen sarjaan ja sen jälkeen kopioida ne muihin -sarjoihin. Yleisesti kannattaa tehdä ensin yksi sarja jossa on eniten -tehtäviä ja sen jälkeen duplikoida sarjan tehtävät myös muihin sarjoihin -ja muuttaa sopivilta osin mikäli tarvetta. +Tehtäviä (nimi+määrittelyt) voi kopioida toisesta sarjasta. Kannattaa ensin +tehdä tehtävät yhteen sarjaan ja sen jälkeen kopioida ne muihin sarjoihin. +Yleisesti kannattaa tehdä ensin yksi sarja jossa on eniten tehtäviä ja sen +jälkeen duplikoida sarjan tehtävät myös muihin sarjoihin ja muuttaa +sopivilta osin mikäli tarvetta. Valitse "Lisää tehtävä", kun olet tekemässä uutta tehtävää. -Kun haluat kopioida sarjan toisesta sarjasta, valitset ensin sarjan -mihin haluat kopioida, sen jälkeen valitse kopioi tehtävä ja sitten voit -valita mitkä tehtävät haluat kopioida sarjaasi. +Kun haluat kopioida sarjan toisesta sarjasta, valitset ensin sarjan mihin +haluat kopioida, sen jälkeen valitse kopioi tehtävä ja sitten voit valita +mitkä tehtävät haluat kopioida sarjaasi. ![](images/11.png) ### Tehtävän kaavan määrittely Syötä Nimi-kenttään vartion nimi ja Järjestysnumero-kenttään tehtävän -järjestysnumero, on tärkeää laittaa tehtävät oikeaan järjestykseen -- -muuten kisan ulkopuolelle siirtyvät / keskeyttäneet vartiot ovat väärin -mukana tehtävien järjestyksessä. Järjestysnumeron pitää kuvata sitä -järjestystä, jossa vartiot kiertävät rataa. +järjestysnumero, on tärkeää laittaa tehtävät oikeaan järjestykseen - muuten +kisan ulkopuolelle siirtyvät / keskeyttäneet vartiot ovat väärin mukana +tehtävien järjestyksessä. Järjestysnumeron pitää kuvata sitä järjestystä, +jossa vartiot kiertävät rataa. ![](images/12.png) -Tehtävän kaava on oletuksena ss (suorasumma) ja osatehtävien määrä on -yksi. Jos tehtävässä on yksi osatehtävä on silloin on ensimmäinen -osatehtävän nimi a. Kun osatehtävien määrä kasvaa aakkosjärjestyksessä -osatehtävien nimen viittaus tapahtuu kirjaimilla a -- z. Osatehtävät tulee -näkyviin allekkain a -- z. +Tehtävän kaava on oletuksena ss (suorasumma) ja osatehtävien määrä on yksi. +Jos tehtävässä on yksi osatehtävä on silloin on ensimmäinen osatehtävän +nimi a. Kun osatehtävien määrä kasvaa aakkosjärjestyksessä osatehtävien +nimen viittaus tapahtuu kirjaimilla a -- z. Osatehtävät tulee näkyviin +allekkain a -- z. Suurin osa tehtävistä lasketaan kaavalla ss - tällöin esimerkiksi ajasta sekä kätevyydestä saadut pisteet lasketaan yhteen. -Kehittyneempiä kaava esimerkkejä: +Esimerkkejä kehittyneemmistä kaavoista: -* `a-b` -- Lasketaan esimerkiksi ajan pisteet, josta vähennetään sakkopisteet. Määritellään kaksi osatehtävää. -* `(a+b)/c` -- Lasketaan yhteen kaksi kätevyyttä ja niiden summa jaetaan aikasakolla. Määritellään kolme osatehtävää. -* `b*2+a/c` -- tehtävän pisteet\*2 + aika/sakolla +* `a-b` - Lasketaan esimerkiksi ajan pisteet, josta vähennetään + sakkopisteet. Määritellään kaksi osatehtävää. +* `(a+b)/c` - Lasketaan yhteen kaksi kätevyyttä ja niiden summa jaetaan + aikasakolla. Määritellään kolme osatehtävää. +* `b*2+a/c` - tehtävän pisteet\*2 + aika/sakolla ![](images/13.png) @@ -375,7 +306,7 @@ Kisan ulkopuolella olevia vartiota ei huomioida interpoloinnissa. Jossain tehtävätyypeissä on käytössä lisäksi arviointi. Tätä käytetään silloin, kun vartioiden tehtävä on arvioida esimerkiksi puun -korkeutta aikaa tms. Arviointia käytettäessä laitetaan ruksi +korkeutta, aikaa tms. Arviointia käytettäessä laitetaan ruksi Arviointi-kenttään ja syötetään oikea vastaus. ![](images/15.png) @@ -502,111 +433,71 @@ Nollasuoritus, kaava = `0` ### Yleistä Kaikki ohjelmistot sisältävät virheitä ja emme suinkaan loukkaannu jos -ilmoitat löytäneesi bugin KiPasta -päinvastoin: koska KiPa projektin -resurssit ovat rajalliset, otamme erittäin mielellämme vastaan -bugiraportteja kuin myös kehitysideoita. Muistathan vain sen, että -kyseessä on vapaaehtoisprojekti, jonka tekijät tekevät projektille työtä +ilmoitat löytäneesi bugin Kipasta -päinvastoin: koska projektin resurssit +ovat rajalliset, otamme erittäin mielellämme vastaan virheraportteja kuin +myös kehitysideoita. Muistathan vain sen, että kyseessä on +vapaaehtoisprojekti, jonka tekijät tekevät projektille työtä vapaaehtoisesti ja omalla vapaa-ajallaan. +Virheraportitteja ja kehitysideoita voi toimittaa kehittäjille GitHubin +"issue"-toiminnon avulla. Issuen tekemiseen tarvitset toimivat +GitHub-tunnukset. Issueen on hyvä kirjoittaa kattava kuvaus ongelmasta tai +ideasta ja jakaa mahdollisimman paljon taustatietoa. Jos GitHubin käyttö ei +onnistu, voi kehittäjiin ottaa yhteyttä myös jollain muulla tavalla. + Virheet voidaan karkeasti jakaa laskimen ja käyttöliittymän kesken, alla ohjeet kumpaakin tapausta varten: ### Virhe laskimessa -Tarkoittaen esimerkiksi sitä että huomaat KiPan laskevan tuloksia -väärin. +Tarkoittaen esimerkiksi sitä että huomaat Kipan laskevan tuloksia väärin. -1. Tee lyhyt kisa jossa esiintyy nimenomainen laskentaongelma. Nimeä -kisa kuvaavasti, esimerkiksi: hylätty suoritus suunistuksessa -2. Käytä KiPan toimintoa "Määrittele testituloksia", jonka löydät -pääsivulta kohdasta "Kisan Määritykset". Kirjaa ylös oikeat -laskentatulosket tehtävään. -3. Tallenna kisa XML-tiedostoksi toiminnolla "Tallenna kisa", jonka -löydät pääsivulta, kohdasta "Ylläpito". -4. Toimita tallentamasi XML-tiedosto kehittäjille, lisäämme kyseisen -tiedoston testitapaukseksi automaattisiin yksikkötesteihin. +1. Tee lyhyt kisa jossa esiintyy nimenomainen laskentaongelma. Nimeä kisa + kuvaavasti. +2. Käytä Kipan toimintoa "Määrittele testituloksia", jonka löydät + pääsivulta kohdasta "Kisan Määritykset". Kirjaa ylös oikeat + laskentatulosket tehtävään. +3. Tallenna kisa XML-tiedostoksi toiminnolla "Tallenna kisa", jonka löydät + pääsivulta, kohdasta "Ylläpito". +4. Toimita tallentamasi XML-tiedosto GitHub-issuen liitteenä, lisäämme + kyseisen tiedoston testitapaukseksi automaattisiin yksikkötesteihin. ### Virhe käyttöliittymässä -1. Mieti hetki mitä olit tekemässä kun virhe tapahtui, yritä toistaa kyseinen tilanne. -2. Jos pystyt ja osaat, ota ruutukaappaus tilanteesta 3. Tallenna kisa XML-tiedostoksi kohdassa "Virhe laskimessa" annetuilla ohjeilla -4. Ota yhteyttä kehittäjiin ja yritä kuvailla mitä olit tekemässä ja mitä tapahtui, kerro ainakin seuraavat asiat: - - Käyttämäsi käyttöjärjestelmä (Windows, Macintosh, Linux) - - Käyttämäsi Internet-selain (Firefox, Internet Explorer, Chrome) +1. Mieti hetki mitä olit tekemässä kun virhe tapahtui, yritä toistaa + kyseinen tilanne. +2. Jos pystyt ja osaat, ota ruutukaappaus tilanteesta +3. Tallenna kisa XML-tiedostoksi kohdassa "Virhe laskimessa" annetuilla + ohjeilla. +4. Tee GitHub-issue ja yritä kuvailla mitä olit tekemässä ja mitä tapahtui, + kerro ainakin seuraavat asiat: + - Käyttämäsi käyttöjärjestelmä (Windows, macOS, Linux...) + - Käyttämäsi Internet-selain (Firefox, Chrome, Safari...) - ohjeet miten kyseisen vikatilanteen saa toistettua - kisatiedosto -Esimerkki hyvästä viestistä: - -*Hei, olin määrittelemässä kisaa joka on xml tiedostoliitteenä tämän -sähköpostin mukana. Muutin Hapsenkakkiaiset-vartion nimen -Hapsenkakkiaisiksi ja merkitsin sen keskeyttäneeksi tehtävästä 3 -eteenpäin. Tämän jälkeen katsoin punaisen sarjan tuloksia ja kävin -muuttamassa mainitun vartion tuloksen tehtävästä 2, siten että pisteiksi -tuli 1.* - -*Tämän jälkeen tuloksia katsoessa ko. vartion tuloksiksi ilmoitetaan -\'none\' ja vasen pikakuvakepalkki on kadonnut (ruutukaappaus myös -tiedostoliitteenä). Internetselaimena käytin Internet explorer 8:aa, -mutta kokeilin toistaa tilanteen myös Firefox 3  :lla, jolla -pikakuvakepalkki näkyi, mutta tuloksissa lukee edelleen \'none\'. -Käyttöjärjestelmä on Windows XP.\'* - -Esimerkki äärettömän huonosta viestistä: - -*V\_\_u ku toi softa on p\_\_\_a, koitin käyttää ja se laski väärin ja -näytti rumalta. hypätkää kaivoo.* - -* Markus.vuorinen@gmail.com -* Frans.korhonen@gmail.com -* Joonas.hirn@gmail.com - ## Verkkokäyttö -### Yleistä - Kisapalvelu on suunniteltu tukemaan tuloslaskentatoimistoja, joissa on -useita henkilöitä syöttämässä ja tarkastamassa syötteitä -samanaikaisesti. Tällöin Kipa asennetaan vain yhdelle koneelle ja muut -koneet käyttävät selaimella yhdellä koneella pyörivää Kipaa verkon yli. - -Huom! Kipan asennus on täysin samanlainen tietokoneelle käytetään sitä -verkossa palvelimena tai ei. +useita henkilöitä syöttämässä ja tarkastamassa syötteitä samanaikaisesti. +Tällöin Kipa asennetaan vain yhdelle koneelle ja muut koneet käyttävät +selaimella yhdellä koneella pyörivää Kipaa verkon yli. ### Edut -* Samaa sarjaa voi syöttää vaikka kymmenen henkeä yhtäaikaa -* Ohjelma asennetaan vain yhdelle koneelle -* Clientit voivat olla mitä vain koneita, joissa on Internet-selain ja verkkoyhteys +* Samaa sarjaa voi syöttää vaikka kymmenen henkeä yhtäaikaa. +* Ohjelma asennetaan vain yhdelle koneelle. +* Clientit voivat olla mitä vain koneita, joissa on Internet-selain ja + verkkoyhteys. * Mahdollisuus näyttää joltain koneelta tuloksia sitä mukaan kun niitä syötetään muilta koneilta. ### Vaatimukset -* Lähiverkko, jossa tietokoneet ovat kiinni -* Yksi tietokone johon on asennettu Kipa (palvelin). Palomuurin tulee sallia http-liikenne porttiin 80. -* n+1 kappaletta tietokoneita, joissa on Internet-selain (client) - -### Yleistä lähiverkon / verkon käytöstä - -#### Lähiverkko - -Kaikkien tietokoneiden pitää olla samassa verkossa niin että niillä on -verkkoyhteys palvelimelle johon Kipa on asennettu. Yhteyden toimivuutta -voi kokeilla vaikka ping \ komennolla. Palvelimelle -tarvitaan portti 80 auki http-liikennöintiä varten. Jos kisatoimistosta -ei ole pääsy Internettiin kannattaa harkita palomuurin sammuttamisesta -palvelimelta. - -#### Internet - -On myös mahdollista asentaa Kipa julkisesti Internettiin jolloin kaikki -kisat ovat verkossa näkyvillä kaikille, tällöin kannattaa miettiä onko -turvallisuusriskinä, että kuka tahansa, jolla on osoite, voi mennä -muokkamaan kisan määrittelyitä ja tehtäviä. Lisäturvana kannattaa -harkita käyttäjäautentikoitia osoitteeseen jossa Kipa pyörii. Samoin -rajoituksia voi tulla syrjäseuduilla toimiville kisatoimistoille, joihin -ei saada riittävän hyvää verkkoyhteyttä. +* Lähiverkko, jossa tietokoneet ovat kiinni. +* Yksi tietokone johon on asennettu Kipa (palvelin). Palomuurin tulee + sallia http-liikenne porttiin 80. +* n+1 kappaletta tietokoneita, joissa on Internet-selain (client). ### Tunnettuja ongelmia @@ -616,116 +507,13 @@ ei saada riittävän hyvää verkkoyhteyttä. * Tietokoneilla on esimerkiksi mokkula- ja WLAN-yhteys päällä yhtäaikaa ja siksi tietokone hakee palvelint väärää yhteyttä käyttäen. -## Teknologia - -### Käytetyt teknologiat - -Kipa on kokonaisuudessaan rakennettu avoimen lähdekoodin päälle. -Komponentit joita on käytetty ympäristön rakentamiseen ovat kaikki -avointa lähdekoodia, Django, Python, SQLite sekä Apache. - -### Arkkitehtuuri - -Kisapalvelu, Kipa, on puhdas web-applikaatio. Laskenta on toteutettu -Pythonilla. Web näkymät on rakennettu Django-ohjelmistokehyksen päälle, -joka on toteuttu pythonilla. Kaikki syötteet tallennetaan sqlite-kantaan, -jonka yhteydet hoitaa Django. SQLite-toiminnalisuus tulee Pythonin mukana. -Web-palvelimena on käytetty Apachea sekä djangon kehitysserveriä, mutta -ei pitäisi olla esteitä toteuttaa toiminnallisuutta millä tahansa -web-palvelimella joka tukee Pythonin suorittamista, dokumentaation -mukaan ainakin lighthttpd tulisi olla tuettu samoin kuin mikä tahansa -käyttöjärjestelmä tai laite jolle nämä ovat saatavilla. Django tukee -myös MySQL sekä PostegreSQL kantoja, pienellä muutoksella settings.py -tiedostoon. Mikäli haluat rakentaa julkisen verkkopalvelun jossa voluumi -voi olla kovempi kannattaa tämä pitää mielessä. - -### Suorituskyky ja skaalautuvuus - -Normaalikäytössä ei Kipa nosta mainittavasti koneen CPU kuormaa. -Yhdellä kannettavalla voidaan hyvin ajaa kisatoimiston palveluja. -Piikkittäisiä kuormituksia syntyy ainoastaan tulosten laskemisesta, -isohkoissa kilpailussa, jossa on tuhansia syötteitä, vie kaavojen -parsiminen ja laskenta isoille sarjoille joissain tapauksissa joitain -sekunteja. Testien mukaan kuorma kuitenkin säikeistyy käytössä olevien -threadien määrän mukaan - kuitenkin vain yksi per istunto. - -Kehitysvaiheessa on testejä ajettu pitkään (muinaisella) 850Mhz -Pentiumilla jossa 128Mt muistia - tälläiselläkään koneella ei -suorituskykyongelmia tule muuta kuin hetkellisesti laskennassa. - -Testimielessä Kipan kantaan on ajettu yhtäaikaa parikymmentä kilpailua -kokonaisuudessaan, jolloin syötteiden määrä on noussut tuhansiin, tällä -ei kuitenkaan ole nähty olevan vaikutusta suorituskykyyn. - -### Testattuja käyttöjärjestelmiä ja komponentteja - -Kehitysversiota ei ole testattu kattavasti millään käyttöjärjestelmällä. ## Lisenssi -Kipa on kokonaisuudessaan julkaistu GPL v3 lisenssin alla. Tämä -tarkoittaa, että kuka tahansa saa käyttää ilmaiseksi Kipaa niin -ilmaisessa kuin kaupallisessakin tarkoituksessa. Mikäli haluaa kuitenkin -kehittää järjestelmää eteenpäin vaadimme kunnioittamaan GPL v3 -lisenssiä. - -Sourceforge sivustolla projektiin kehittämiseen liittyvää tietoa, -lähdekoodeja yms. Web-osoite viittaa projektin alkuperäiseen työnimeen -Tupa2. - -http://tupa2.sourceforge.net/ - -http://sourceforge.net/projects/tupa2/ - -## Kehitystyö ja tekijät - -### Kehitysprojekti - -Kipaa on kehitetty Espoolaisten partiolaisten voimin korvaamaan Sakari -"Sacu" Koutin koodaamaa Tupa ohjelmaa ja vastaamaan ajan haasteisiin. -Kehitystyö alkoi syksyllä 2008 Lokakuussa ja ensimmäinen valmis versio -valmistui Keväällä 2011. Espoon Partiotuki ry. on ollut taustayhteisönä -ja tukenut taloudellisesti projektia sen kehitysaikana. - -### Versio 2.0 - -Kipa projektin venyessä on tullut ilmeiseksi että kaikkia haluttuja -ominaisuuksia ei saatu tähän versioon mukaan. Suunniteltuja versioita, -joita emme ehditty toteuttaa - -* PDF Export -* Mobiili GUI -* Käyttäjäautentikointi (Alfa versio valmis) -* Tuki Emit tietojen sisäänottoon -* Mac OS X installer - -### Tekijät - -* Joonas "Jones" Hirn -* Visa "Viski" Jokelainen -* Frans "Ransu" Korhonen -* Samu Wikstedt -* Markus "Mara" Vuorinen - -Muuta projektiryhmää joka on ollut enemmän tai vähemmän projektin -vaiheissa mukana, Janne "Peltsi" Peltola, Teemu Penttilä, Martti -"Mara" Suontausta - -### Yhteydenotot - -Mikäli sinulla on kiinnostusta tietää enemmän hankkeesta, jatkaa -kehitystyötä tausta järjestön kanssa tms. suosittelemme ottamaan -yhteyttä . - -Projektiryhmän jäsenet ovat tätä kirjoittaessa vielä varmasti -kiinnostuneita auttamaan eteenpäin mikäli kiinnostuneita -jatkokehityksestä löytyy. - -## Apachen konfigurointi - -Kipaa on käytetty Apachen kanssa moduulilla mod-python. Djangon tuki -mod-pythonille on kuitenkin loppunut jo versiossa 1.5. Kehitysversion -käyttö Apachen kanssa ei ole siis tällä hetkellä ole tuettu. +Kipa on kokonaisuudessaan julkaistu GNU GPLv3 -lisenssin alla. Tämä +tarkoittaa, että kuka tahansa saa käyttää ilmaiseksi Kipaa niin ilmaisessa +kuin kaupallisessakin tarkoituksessa. Mikäli haluaa kuitenkin kehittää +järjestelmää eteenpäin vaadimme kunnioittamaan GNU GPLv3 -lisenssiä. ## Kaavat @@ -753,7 +541,7 @@ x = suoritus ### Osatehtävän kaavapohja -Jokaisen osatehtävän (poislukien kisapiste jonka kaava on \_a\_) +Jokaisen osatehtävän (poislukien kisapiste jonka kaava on `a`) määritys pohjautuu samaan kaavapohjaan jonka parametrit vain vaihtelevat: ``` @@ -765,16 +553,15 @@ interpoloi(arvio(vartion_kaava-oikea), ### Kaavan syntaksi -Kaavoissa voi käyttää matematiikan perusoperaattoreita +-\*/, sulkuja -sekä Kipaan määritettyjä funktioita. Laskujärjestyksessä noudatetaan -matematiikan sääntöjä. Osatehtävän syötteisiin viitataan -niiden nimillä (a -- z), jolloin ne tarkoittavat laskennassa kulloinkin -olevan vartion kyseistä syötettä. Hierarkiassa voi liikkua ylöspäin -lisäämällä muuttujan eteen pisteen. Esim. \_.a\_ tarkoittaa kaikkien -saman sarjan vartioiden kyseisen suorituksen lukujoukkoa. Hierarkiassa -voi liikkua mihin tahansa tehtävään saman sarjan sisällä. -Interpoloinneissa voidaan käyttää \_muk\_ lukujoukkoa suodatettamaan -ulkopuoliset vartiot pois. (esim \_.a\*muk\_) +Kaavoissa voi käyttää matematiikan perusoperaattoreita +-\*/, sulkuja sekä +Kipaan määritettyjä funktioita. Laskujärjestyksessä noudatetaan +matematiikan sääntöjä. Osatehtävän syötteisiin viitataan niiden nimillä +(a - z), jolloin ne tarkoittavat laskennassa kulloinkin olevan vartion +kyseistä syötettä. Hierarkiassa voi liikkua ylöspäin lisäämällä muuttujan +eteen pisteen. Esim. `.a` tarkoittaa kaikkien saman sarjan vartioiden +kyseisen suorituksen lukujoukkoa. Hierarkiassa voi liikkua mihin tahansa +tehtävään saman sarjan sisällä. Interpoloinneissa voidaan käyttää `muk` +lukujoukkoa suodatettamaan ulkopuoliset vartiot pois. (esim `.a*muk`) Esimerkkejä: ``` @@ -801,294 +588,43 @@ max(...pidempi:piipeli.a) ### Parametrit -Parametrit ovat yksittäisiä palikoita, joiden avulla on helppo muokata käyttöliittymästä haluttuja kaavan osia. -Jokainen parametri on merkkijono, jonka nimeä vastaava kohta kaavassa korvataan. -Kaikki parametrit tulee määrittää, joten käyttämättömät parametrit määritetään -tyhjiksi. Seuraavassa peruskaavan parametrit ja niiden arvovaihtoehdot. +Parametrit ovat yksittäisiä palikoita, joiden avulla on helppo muokata +käyttöliittymästä haluttuja kaavan osia. Jokainen parametri on merkkijono, +jonka nimeä vastaava kohta kaavassa korvataan. Kaikki parametrit tulee +määrittää, joten käyttämättömät parametrit määritetään tyhjiksi. +Seuraavassa peruskaavan parametrit ja niiden arvovaihtoehdot. -- **arvio** -- Arvionti käytössä: +- **arvio** - Arvionti käytössä: * `abs` (kaikki paitsi aikaväli) * "" eli tyhjä merkkijono (ei käytössä) -- **oikea** -- Arviontitehtävän oikea vastaus +- **oikea** - Arviontitehtävän oikea vastaus * Desimaaliluku * `()` (ei käytössä) -- **vartions_kaava** -- Vartion suorituksen laskentakaava +- **vartions_kaava** - Vartion suorituksen laskentakaava * `a` (raakapiste, kokonaisaika) * `aikavali(a,b)` (alku- ja loppuaika) * Vapaamuotoinen kaava (vapaa kaava) -- **parhaan_haku** -- Hakufunktio jos haetaan parasta suoritusta +- **parhaan_haku** - Hakufunktio jos haetaan parasta suoritusta * `min` lukujoukon pienin (kaikki) * `max` lukujoukon suurin (kaikki) -- **parhaan_kaava** -- Parhaan suorituksen kaava - * `suor\*muk` (kaikki) Kaikkien sarjassa mukana olevien vartioiden suoritusten lukujoukko. +- **parhaan_kaava** - Parhaan suorituksen kaava + * `suor*muk` (kaikki) Kaikkien sarjassa mukana olevien vartioiden + suoritusten lukujoukko. * vapaamuotoinen kaava (vapaa kaava) -- **jaettavat** -- Tehtävässä jaettavat pisteet. +- **jaettavat** - Tehtävässä jaettavat pisteet. * desimaaliluku (kaikki) -- **nollan_kerroin** -- Kerroin interpoloinnin nollasuoritukselle +- **nollan_kerroin** - Kerroin interpoloinnin nollasuoritukselle * desimaaliluku (kaikki) * `1` (ei käytössä) -- **tapa** -- keskimmäinen suorituksen laskutapa nollasuoritukselle. +- **tapa** - keskimmäinen suorituksen laskutapa nollasuoritukselle. * `med` lukujoukon mediaani (kaikki) * `avg` lukujoukon keskiarvo (kaikki) * "" eli tyhjä merkkijono (ei käytössä) -- **nollan_kaava** -- Nollasuorituksen kaava - * `suor\*muk` (kaikk) Kaikkien sarjassa mukana olevien vartioiden suoritusten **vartion_kaava**-parametrillä laskettu lukujoukko. +- **nollan_kaava** - Nollasuorituksen kaava + * `suor\*muk` (kaikk) Kaikkien sarjassa mukana olevien vartioiden + suoritusten **vartion_kaava**-parametrillä laskettu lukujoukko. * vapaamuotoinen kaava (vapaa kaava) -`suor` = kaavalla lasketut kaikkien vartioiden suoritukset - - -## Kehittäjille - -### Kipan kehitykseen hyödyllistä informaatiota - -Vähimmäiset toimintavaatimukset kehitysympäristölle: - -* Python + tietokanta esim. sqlite3 -* Django - -Hyöylliset henkilökohtaiset tekniset tiedot & taidot. - -* Windows / Linux -* Apache -* Tietokannat - * sql - * mysql - * sqlite -* Python -* Luokat, olio-ohjelmointi -* Merkkijonot: (string,unicode) -* Taulukot (table,tuple) -* Decimal (luokka) -* xml.dom.minidom XML-parseri -* Unittest -- testausluokat -* RE - Regular expressions -* Merkkijonohaut -* käyttöjärjestelmän tiedot. -* Django - * Kokoonpano (apache) - * Datamalli - * Formit - * Templatet - * Middleware - * Testaus - * Unicode - * Authentication - * Admin-sivu -* HTML - * taulukot - * formit - * css - * javascript - -### Järjestelmän Hallinta - manage.py - -``` -python manage.py runserver -``` - -Käynnistää kehitypalvelimen paikalliselle koneelle porttiin 8000 - -Jonka jälkeen kipan pitäisi löytyä selaimella osoitteesta: -[127.0.0.1:8000/tupa](http://127.0.0.1:8000/tupa) - -Järjestelmä käyttää juuresta löytyvää tupa.db tiedostoa. - -``` -python manage.py testserver [tietokantapohja.xml] -``` - -Käynnistää testipalvelimen. Muuten samanlainen kuin runserver, -paitsi että käyttää virtuaalista tietokantaa muistissa. Ei tee mitään -muutoksia tiedostoihin. Turvallinen erilaisiin kokeiluihin. -Voidaan täyttää halutulla tietokantapohjalla (fixture). esim. - -``` -python manage.py testserver fixtures/tests/katuu.xml -``` - -``` -python manage.py test -``` - -Ajaa järjestelmän yksikkötestit. Testaa erinäisiä asioita järjestelmässä -testidatan pohjalta: - -* Laskee oikeita tuloksia -* kaatuuko datan tilanteissa -* Tallentaa tietoa oikein. - -Käyttää testidatana kaikkia fixtures/tests/ löytyviä XML-päätteisiä -tietokantapohjia. - -``` -python manage.py makemigrations -python manage.py migrate -``` -Ovat komentoja, joilla saadaan päivitettyä tietokannan rakennetta, jos models.py on muuttunut. -Djangon dokumentaatio opastaa niiden käytössä. - -``` -python manage.py flush -``` - -Tyhjentää kaikki tietokantataulut. - -### Järjestelmän Asetukset - settings.py +`suor` = kaavalla lasketut kaikkien vartioiden suoritukset -Kaikki palvelun järjestelmäkohtaiset asetukset. Djangon dokumentaatio -kattaa tämän aika hyvin. Tässä käsitellään lähinnä Kipaan liittyvät -poikkeamat. - -``` -Hakemisto=os.path.normpath(os.path.dirname(\_\_file\_\_)) -``` - -Hakee käyttöjärjestelmältä settings.py hakemiston ja käyttää kipan -hakemistona. - -Ongelmatilanteissa voi koittaa määrittämällä merkkijonon manuaalisesti. - -``` -DEBUG = True -TEMPLATE_DEBUG = DEBUG -``` - -Debug moodit. Systeemi näyttää djangon virhesivuja kaatumistilanteissa. -(Vain kehityskäyttöön.) - -``` -LOGGING=False -``` - -Kipan loki. Kirjaa laskennan välivaiheita laskenta.log tiedostoon. (Vain -kehityskäyttöön) - -``` -RECORDING=True -``` - -Nauhoittaa jokaisen serverillä tapahtuvan sivutallennuksen. Juuresta -löytyvään record.xml-tiedostoon, mikäli se on olemassa. Tarkoitettu -tiedontallennukseen testien luontia varten. - -### Alkuperäinen skripti - -``` -#!/bin/bash* - -# Tama skripti yrittaa asentaa kokonaisuudessaan tulospalvelun -# Ubuntuserverille Ei takuuta toiminnasta, mutta kannattaa tutkia -# jos ja kun haluaa joskus korjailla... - -# Tehdaan kansio johon tulee Django + Python + Tietokanta -mkdir /data/ - -# Tehdaan kansio johon tulee media tiedostot -mkdir /var/www - -# Kopioidaan muut kuin media tiedostot -cp -r web /data - -# Linkataan media tiedostot yhteen -ln -s /data/web/media /var/www/kipamedia - -# Asennetaan komponentit -apt-get install -y python apache2 python-django \ -python-reportlab libapache2-mod-python - -# Kopioidaan Apache konfiguroinnit "yli" -cp ./httpd.conf /etc/apache2/ - -#Kopidaan redirect -cp ./index.html /var/www/ - -# Korjataan ACL oikeudet -chown -R www-data /data/web/ - -# Restartti apachelle -/etc/init.d/apache2 restart - -# Ja menoks -firefox localhost -``` -## Selitykset lähdekooditiedostoista ja hakemistoista - -* `web/` - - `urls.py & tupa/urls.py` - * Pää osoitemäärittelyt. Määrittelee millä hakemistopoluilla näkymät aukeavat. - * Ensimmäinen serveri tason toinen kipaan liittyen. - - `manage.py` - * Hallinta - - `settings.py` - * Asetukset -* `web/tupa/` - - `admin.py` - * Djangon luoman admin sivun määritely. - * Riippuvuudet: Python,Django,models.formit.py - - `AritmeettinenLaskin.py` - * Laskin joka laskee matemaattisia lauekeita merkkijonosta jossa on merkejä +-/\*() sekä numeroita. - * Rippuvuus: Python - - `duplicate.py` - * Tiedon monistaminen. Tehtävien kopiointi, XML tietokantatiedoston luonti. - * Riippuvuudet: Python,Django,models.py - - `formit.py` - * Perus formien määritys. Formeja käytetään näkymissä (views.py) - * Riippuvuudet: Python,Django,models.py - - `logger.py` - * Kirjaus, ja nauhoitus. Kirjaa laskimen välivaiheita. Nauhoittaa post dataa. - * Riippuvuudet: Python,settings.py,duplicate.py - - `models.py` - * Django datamalli. Koko systeemin ydin. - * Datamalliin pohjatuu sekä tietokanta että näkymät. - * Myös laskin käyttää datamallia tiedon haussa. - * Riippuvuudet: Python,Django - - `TehatavanMaaritys.py` - * Tehtävän määrityksen formit. - * Riippuvuudet: models.py,formit.py - - `tests.py` - * Unit testit. Testaa järjestelmää erilaisilla testeillä. - - Aritmeettisen laskimen perustoimitukset. - - Sarjakohtaisten tulosten testaus. - - Kaikkien näkymien avautuminen testidatalla. - - Tiedon tallentuminen näkymillä. - * Riippuvuudet: - - Python - - Django - - models.py - - views.pymAritmeettinenLaskin.py - - TulosLaskin.py - - `Tuloslaskin.py` - * Laskee tulokset tietokannan tietojen pohjalta - * Riippuvuudet: - - Python - - Django - - models.py - - logger.py - - AritmeettinenLaskin.py - - `urls.py` - * Näkymien hakemistopolut. - * Riippuvuudet: Python,Django,models.py - - `views.py` - * Näkymät, jokaisen sivun aivot. - * Riippuvuudet: - - Python - - Django - - models.py - - formit.py - - TehtavanMaaritys.py - - logger.py - - duplicate.py -* `web/tupa/templates/` - - `404.html` - - `500.html` - - `base.html` -* `web/tupa/templates/tupa/` - - Näkymien Fixtuurit -* `web/tupa/templates/tupa/forms/` - - Formikohtaiset fixtuurit -* `web/media/` - - kuvat - - css - - yms. tiedostot diff --git a/web/tupa/TehtavanMaaritys.py b/web/tupa/TehtavanMaaritys.py index cc28ffc..2d3e8f5 100644 --- a/web/tupa/TehtavanMaaritys.py +++ b/web/tupa/TehtavanMaaritys.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from django.template.loader import render_to_string import re diff --git a/web/tupa/TulosLaskin.py b/web/tupa/TulosLaskin.py index 7832a86..cc10f8e 100644 --- a/web/tupa/TulosLaskin.py +++ b/web/tupa/TulosLaskin.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import import re diff --git a/web/tupa/admin.py b/web/tupa/admin.py index 8f9ffc3..296370e 100644 --- a/web/tupa/admin.py +++ b/web/tupa/admin.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from django.contrib import admin from .formit import KisaForm diff --git a/web/tupa/duplicate.py b/web/tupa/duplicate.py index a48b43b..473a41b 100644 --- a/web/tupa/duplicate.py +++ b/web/tupa/duplicate.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from django.core import serializers diff --git a/web/tupa/formit.py b/web/tupa/formit.py index ae8ad1a..f88fb61 100644 --- a/web/tupa/formit.py +++ b/web/tupa/formit.py @@ -1,7 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - - from __future__ import absolute_import from django.forms.models import modelformset_factory from django import forms diff --git a/web/tupa/funktiot.py b/web/tupa/funktiot.py index 2756937..1d796e7 100644 --- a/web/tupa/funktiot.py +++ b/web/tupa/funktiot.py @@ -1,8 +1,7 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi """ Tässä tiedostossa on määritelty kaikki funktiot joita voi käyttää laskennan kaavoissa. """ + from __future__ import absolute_import from decimal import ROUND_FLOOR, ROUND_CEILING, getcontext diff --git a/web/tupa/laskentatyypit.py b/web/tupa/laskentatyypit.py index 5959b32..f2a8894 100644 --- a/web/tupa/laskentatyypit.py +++ b/web/tupa/laskentatyypit.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from decimal import Decimal, ROUND_HALF_UP diff --git a/web/tupa/logger.py b/web/tupa/logger.py index 3695b6b..45202ed 100644 --- a/web/tupa/logger.py +++ b/web/tupa/logger.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from __future__ import print_function from xml.dom.minidom import getDOMImplementation diff --git a/web/tupa/models.py b/web/tupa/models.py index c1f3e62..ffa3de8 100644 --- a/web/tupa/models.py +++ b/web/tupa/models.py @@ -1,7 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajarjestelma partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - - from __future__ import absolute_import from django.core.cache import cache from django.db import models diff --git a/web/tupa/taulukkolaskin.py b/web/tupa/taulukkolaskin.py index d26d17f..2b1ae4b 100644 --- a/web/tupa/taulukkolaskin.py +++ b/web/tupa/taulukkolaskin.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from __future__ import division import re diff --git a/web/tupa/tests.py b/web/tupa/tests.py index db3a89f..01233d4 100644 --- a/web/tupa/tests.py +++ b/web/tupa/tests.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentaj�rjestelm� partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from __future__ import print_function from decimal import Decimal diff --git a/web/tupa/urls.py b/web/tupa/urls.py index 4cd9a09..d5327cd 100644 --- a/web/tupa/urls.py +++ b/web/tupa/urls.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2010 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from functools import partial from django.conf import settings diff --git a/web/tupa/views.py b/web/tupa/views.py index c3cd440..9a921b0 100644 --- a/web/tupa/views.py +++ b/web/tupa/views.py @@ -1,6 +1,3 @@ -# KiPa(KisaPalvelu), tuloslaskentajärjestelmä partiotaitokilpailuihin -# Copyright (C) 2011 Espoon Partiotuki ry. ept@partio.fi - from __future__ import absolute_import from django import forms