Viikkotehtävä 5
Tehdään pienelle reseptitietokannalle käyttöliittymä.
Yhteiset vaatimukset:
- Tietojen tallentamiseen on käytettävä users.jyu.fi:ssä toimivaa SQLite-tietokantaa.
- Ongelmatilanteissa kts. myös SQLite-ohjeet.
- Tietokantakyselyt on tehtävä käyttäen sqlite-rajapintaa.
- Huomioikaa, että kaikkien sivujen tulee pysyä mallien mukaisina ja valideina, vaikka käyttäjä syöttäisi HTML-koodia joihinkin syötekenttiin.
- Käytetään mod_pythonia.
- Kirjoitetaan oma käsittelijä tai käytetään publisher-käsittelijää.
- Kaikkien sivujen on oltava validia XHTML 1.0 Strictiä.
- Valmiin sovelluksen pitää toimia users.jyu.fi:ssä.
Vinkki: lukekaa vuonna 2008 tehdyt huomiot vastaavasta viikkotehtävästä.
Taso 1
- Mallikuvat:
- Toteuta mallia vastaava reseptitietokannan käyttöliittymä, jossa voi lisätä uusia reseptejä:
- Yhteen reseptiin voi sisältyä yksi tai useampia ohjerivejä. Useampaa kuin kymmentä ohjeriviä ei tarvi huomioida. Vähintään yksi ohjerivi pitää olla!
- Resepti voi olla vain yhtä ruokalajityyppiä.
- Reseptiin liittyviä ruoka-aineita ei tarvitse lisätä
- Listataan tulossivulla taulukkona aakkosjärjestyksessä reseptit ja niiden ruokalajityypit
- Virhetilanteissa eli jos reseptin nimi puuttuu, kuvaus puuttuu, henkilömäärä puuttuu tai ohjerivi puuttuu niin ohjelma palaa syöttösivulle ja ilmoittaa vapaamuotoisella tavalla virheestä/puutteesta. Virhetilanteessa ei saa tehdä tietokantaan mitään lisäyksiä.
- Tietokannan mahdollisesti antamia virheilmoituksia ei saa näyttää käyttäjälle
- Uusien ruokalajien lisäämistä ei tarvitse toteuttaa, mutta sivulla näkyvät ruokalajit pitää hakea tietokannasta.
- Käytä valmiiksi määriteltyä tietokantaa, jonka luontilauseet löytyvät resepti.sql-tiedostosta. Tietokannan rakennetta ei saa muuttaa.
Taso 3
Toteuta taso 1 -mukainen reseptitietokanta seuraavilla muutoksilla ja lisäyksillä:
- Mallikuvat:
- Uusia ruokalajeja voi keksiä syöttämällä kenttään uuden ruokalajin nimen. Kahta samannimistä ruokalajia ei saa olla.
- Lomakkeelle syötetyt tiedot pitää tarkistaa ja virheistä pitää ilmoittaa virheellisen kentän vieressä
- Aineen määrän ja reseptin henkilömäärän pitää olla positiivinen kokonaisluku
- Aineelle pitää olla valittuna yksikkö ja aine
- Tietoja syötetään tietokantaan vasta kaikkien kenttien ollessa oikein täytettyjä
- Reseptien listaus tulossivulla tehdään kaksitasoisena sisäkkäisenä listana ruokalajeittan ryhmiteltynä.
- Käytä 1. tasolla annettua tietokantaa. Tietokannan rakennetta ei saa muuttaa.
Taso 5
Toteuta taso 3 -mukainen reseptitietokanta seuraavilla muutoksilla ja lisäyksillä:
- Lisää ohjelmaan mahdollisuus lisätä uusia yksiköitä, ruoka-aineita ja ohjerivejä. Kahta samannimistä yksikköä tai ruoka-ainetta ei saa lisätä. Toteutustapa on vapaa.
- Lisää lisäyssivun loppuun linkkilistaus resepteistä (samantapainen kuin taso 3 tulossivulla). Linkistä pääsee muokkaamaan (sama lomake kuin lisätessä) kyseistä reseptiä ja tallentamaan muutetun reseptin entisen päälle. Muista huomioida kunnolla aineisiin ja ohjeriveihin tehdyt lisäykset, muutokset ja poistot!
- Linkkilistauksessa on jokaisen reseptin vieressä poista-painike jolla voi poistaa kyseisen reseptin.
- Voit halutessasi muokata tietokannan rakennetta paremmin vaatimuksia vastaavaksi.

Käyttäjien kommentit
Saisiko vähän apuja listamerkki-mysteerin ratkaisemiseksi? Siis tuo mallikuvan listan musta vinoneliö. Ei ole määritetävissä css:llä muttei myöskään merkistöstä taida löytyä? Ei nimittäin ole ainakaan ♦ eikä ◊. Onko se kuva joka on listamerkkinä?
"Mysteeri" on se, että screenshot on otettu sellaisella selaimella, joka sattuu näyttämään oletuslistamerkin (normaalisti pyöreä) tuollaisena enemmän salmiakin muotoisena. :-) Eli tässä tehtävässä listamerkki voi olla ihan selaimen oletus, eikä sitä tarvitse alkaa itse muuttamaan.