Google App Engine ja Datastore - viikkotehtävä 4

Tehdään pienelle tietokannalle käyttöliittymä (vrt. vt3) Googlen App Engine -palveluun.

Tämän tehtävän toteuttaminen edellyttää vähintään seuraavien materiaalien ja tehtävien läpikäyntiä:

Yhteiset vaatimukset:

Taso 1

Toteuta web-sovellus, jossa voi lisätä joukkueita kilpailutietokantaan.

Datastoreen on tallennettava valmiiksi hieman vastaavat tiedot, kuin mitä käytettiin aiemmissa viikkotehtävissä. Tässä sisältö on helposti käsiteltävässä muodossa. Muista varmistaa, että sarjat liittyvät oikeaan kilpailuu ja joukkueet oikeaan sarjaan. Kilpailun id ja sarjan id ovat yhdistäviä tietoja.

kilpailut = [{"id": 1, "kisanimi":"Jäärogaining", "loppuaika": "2019-03-17 20:00:00", "alkuaika": "2019-03-15 09:00:00"}, {"id": 2, "kisanimi":"Fillarirogaining", "loppuaika": "2016-03-17 20:00:00", "alkuaika": "2016-03-15 09:00:00"}, {"id": 3, "kisanimi":"Kintturogaining", "loppuaika": "2017-03-18 20:00:00", "alkuaika": "2017-03-18 09:00:00"},{"id": 99, "kisanimi":"Jäärogaining", "loppuaika": "2023-05-01 20:00:00", "alkuaika": "2023-05-01 12:00:00"}]

sarjat = [{"sarjanimi":"4 h", "kilpailu": 1, "kesto": 4, "id": 1}, {"sarjanimi":"2 h", "kilpailu": 1, "kesto": 2, "id": 2}, {"sarjanimi":"8 h", "kilpailu": 1, "kesto": 8, "id": 3},{"sarjanimi":"Pikkusarja", "kilpailu": 3, "kesto": 4, "id": 4},{"sarjanimi":"8 h", "kilpailu": 3, "kesto": 8, "id": 5}, {"sarjanimi":"Isosarja", "kilpailu": 3, "kesto": 8, "id": 6},{"sarjanimi":"Pääsarja", "kilpailu": 2, "kesto": 4, "id":7},{"sarjanimi":"2 h", "kilpailu": 2, "kesto": 2, "id": 8}]

joukkueet = [{"sarja": 3, "nimi": "Onnenonkijat", "jasenet": ["Antero Paununen", "Pekka Paununen", "Raimo Laine"]}, {"sarja": 3, "nimi": "Mudan Ystävät", "jasenet": ["Kaija Kinnunen", "Teija Kinnunen"]}, {"sarja": 3, "nimi": "Vara 3", "jasenet": ["barbar", "foofoo"]}, {"sarja": 3, "nimi": "Tollot", "jasenet": ["Juju", "Tappi"]}, {"sarja": 3, "nimi": "Kahden joukkue", "jasenet": ["Matti Humppa", "Miikka Talvinen"]}, {"sarja": 3, "nimi": "Siskokset", "jasenet": ["Sanna Haavikko", "Seija Kallio"]}, {"sarja": 3, "nimi": "Dynamic Duo", "jasenet": ["Karhusolan Rentukka", "Kutajoen Tiukunen"]}, {"sarja": 3, "nimi": "Toipilas", "jasenet": ["Leena Annila", "Satu Lehtonen"]}, {"sarja": 3, "nimi": "Sopupeli", "jasenet": ["Antti Haukio", "Janne Hautanen", "Taina Pekkanen", "Venla Kujala"]}, {"sarja": 1, "nimi": "Retkellä v 13", "jasenet": ["Henna Venäläinen", "Katja Vitikka"]}, {"sarja": 1, "nimi": "Pelättimet", "jasenet": ["Kari Vaara", "Katja Vaara"]}, {"sarja": 3, "nimi": "Kaakelin putsaajat", "jasenet": ["Jaana Kaajanen", "Mikko Kaajanen", "Timo Ruonanen"]}, {"sarja": 3, "nimi": "Vara 1", "jasenet": ["barfoo","foobar"]}, {"sarja": 2, "nimi": "Hullut fillaristit", "jasenet": ["Hannele Saari", "Paula Kujala"]}, {"sarja": 2, "nimi": "Kotilot", "jasenet": ["Jaana Meikäläinen", "Kaisa Konttinen", "Maija Meikäläinen", "Niina Salonen"]}, {"sarja": 3, "nimi": "Rennot 1", "jasenet": ["Anja Huttunen", "Siru Kananen"]}, {"sarja": 3, "nimi": "Vara 2", "jasenet": ["bar","foo"]}, {"sarja": 1, "nimi": "Vapaat", "jasenet": ["Juha Vapaa", "Matti Vapaa"]}, {"sarja": 3, "nimi": "Susi jo syntyessään", "jasenet": ["Janne Pannunen", "Riku Aarnio"]}, {"sarja": 3, "nimi": "Vara 4", "jasenet": ["foo","bar"]}, {"sarja": 1, "nimi": "Rennot 2", "jasenet": ["Heikki Häkkinen", "Piia Virtanen", "Sari Maaninka"]}, {"sarja": 1, "nimi": "Tähdenlento", "jasenet": ["Anu", "Virva"]}, {"sarja": 3, "nimi": "RogRog", "jasenet": ["Antti Kaakkuri", "Mikko Meikäläinen", "Pekka Kosonen", "Samuli Paavola"]},{"sarja": 5, "nimi": "Onnenonkijat", "jasenet": ["Antero Paununen", "Pekka Paununen", "Raimo Laine"]}, {"sarja": 5, "nimi": "Mudan Ystävät", "jasenet": ["Kaija Kinnunen", "Teija Kinnunen"]}, {"sarja": 5, "nimi": "Vara 3", "jasenet": ["barbar", "foofoo"]}, {"sarja": 6, "nimi": "Tollot", "jasenet": ["Juju", "Tappi"]}, {"sarja": 6, "nimi": "Kahden joukkue", "jasenet": ["Matti Humppa", "Miikka Talvinen"]}, {"sarja": 8, "nimi": "Siskokset", "jasenet": ["Sanna Haavikko", "Seija Kallio"]}]

Suunnittele tarjolla olevia tietoja varten sopiva tallennushierarkia Datastoreen. Tallenna valmiina annetut tiedot datastoreen.

Vinkki tietojen lisäämiseen:

from datetime import datetime
alkuaika = datetime.strptime("2010-06-04 21:08:12", "%Y-%m-%d %H:%M:%S")

Sovellukseen on kirjauduttava google-tunnuksella. Kirjautumatta ei saa päästä millekään sovelluksen sivulle. Kirjautumista EI SAA rajata vain student.jyu.fi-tunnuksille tai muulle rajatulle joukolle. Millä tahansa google-tunnuksella täytyy päästä käyttämään sovellusta.

Kirjautumisen jälkeen sovelluksen ylälaidassa on vaakasuuntainen navigointipalkki (vrt. viikkotehtävä 3), josta löytyvät seuraavat kohdat:

Sovellus siirtyy kirjautumisen jälkeen suoraan Omat joukkueet-sivulle, jossa listataan kaikki kilpailut sekä kaikki joukkueet, joita kirjautunut henkilö on ilmoittanyt eri kilpailuihin. Jos kirjautunut ei ole ilmoittautunut johonkin kilpailuun, on listauksessa näkyvissä vain kilpailun nimi. Listauksessa näkyy aina ensimmäisenä tapahtuman alkamisaika, tapahtuman nimi ja lopuksi tapahtumaan ilmoitetun joukkueen nimi. Uusin tapahtuma esitetään listauksessa ensimmäisenä ja vanhin viimeisenä.

Joukkueesi

Kukin listauksen kilpailurivi on myös linkki, jota klikkaamalla pääsee lisäämään kyseiseen kilpailuun joukkueen.

Päästään www-lomakkeelle , jolla voi lisätä joukkueen edellä valittuun kilpailuun. Samaan kilpailuun voi lisätä useita joukkueita. Joukkueelta on kysyttävä joukkueen nimi, jäsenten nimet ja sarja. Sarja on valittava kyseiseen kilpailuun kuuluvista sarjoista.

Joukkueita koskevat seuraavat syöttörajoitteet:

Virheellisistä tai puutteellisista syötteistä on ilmoitettava virheilmoituksella kunkin virheellisen kentän oikealla puolella. Virheellinen syöte täytyy olla kentässä valmiina odottamassa korjausta.

Sovellus listaa Kilpailut-sivulla kolmitasoisena listana kaikki Datastoreen tallennetut kilpailut, sarjat ja joukkueet. Kilpailut listataan käänteisesessä aikajärjestyksessä eli uusin kilpailu (alkuajan mukaan) ensimmäisenä ja vanhin viimeisenä. Joukkueet listataan kilpailuttain ja sarjoittain aakkosjärjestyksessä ja sarjan sisällä joukkueen nimen mukaan aakkosjärjestyksessä. Listaa myös joukkueen jäsenet aakkosjärjestyksessä. Listauksessa on esitettävä myös ne kilpailut, joissa ei ole sarjoja tai joukkueita. Joukkuelistaussivuun (Kilpailut) on linkki kaikkien sivujen ylälaidassa.

Ylänavigoinnin logout-linkistä voi korjautua ulos järjestelmästä.

Taso 3

Laajenna taso 1 -ohjelmaa seuraavilla ominaisuuksilla:

Taso 5

Laajenna taso 3 -ohjelmaa seuraavilla ominaisuuksilla:

Käyttäjien kommentit

Kommentoi Lisää kommentti
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta