Google App Engine ja Datastore - viikkotehtävä 6

Tehdään pienelle tietokannalle käyttöliittymä (vrt. vt4) 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 sovellus, joka käyttää seuraavanlaista rakennetta Googlen Datastoressa. Kts. Property Types

class Kilpailu(ndb.Model):
    def validate_kesto(prop, value):
        if not value > 0:
            raise ValueError(u"Keston on oltava suurempi kuin nolla")
    nimi = ndb.StringProperty(required=True)
    alkuaika = ndb.DateTimeProperty(required=True)
    loppuaika = ndb.DateTimeProperty(required=True)
    kesto = ndb.IntegerProperty(required=True, validator=validate_kesto)
    # ylimääritellään put-metodi. Lisätään tarkistus alku- ja loppuajalle
    def put(self, *args, **kwargs):
        if self.alkuaika > self.loppuaika:
            raise ValueError(u"Alkuajan on oltava pienempi kuin loppuajan")
        return self._put(*args, **kwargs)

class Sarja(ndb.Model):
    def validate_kesto(prop, value):
        if not value > 0:
            raise ValueError(u"Keston on oltava suurempi kuin nolla")

    nimi = ndb.StringProperty(required=True)
    kesto = ndb.IntegerProperty(required=True, validator=validate_kesto)
    kilpailu = ndb.KeyProperty(required=True,kind=Kilpailu) #viittaus kilpailuun
   

Datastoreen on tallennettava valmiiksi 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 kilpailuun (Kintturogaining) ja kukin joukkue oikeaan sarjaan.

kilpailut = [{"nimi":u"Jäärogaining", "loppuaika": "2015-03-17 20:00:00", "alkuaika": "2015-03-15 09:00:00", "kesto": 1}, {"nimi":u"Fillarirogaining", "loppuaika": "2016-03-17 20:00:00", "alkuaika": "2016-03-15 09:00:00", "kesto": 1}, {"nimi":u"Kintturogaining", "loppuaika": "2017-03-18 20:00:00", "alkuaika": "2017-03-18 09:00:00", "kesto": 1}]

sarjat = [{"nimi":u"4 h", "kilpailu": u"Kintturogaining", "kesto": 4}, {"nimi":u"2 h", "kilpailu": u"Kintturogaining", "kesto": 2}, {"nimi":u"8 h", "kilpailu": u"Kintturogaining", "kesto": 8}]

Vinkki tietojen lisäämiseen:

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

Voit tarpeen mukaan parannella tietorakennetta esim. lisäämällä tarkistuksia, mutta yleisrakennetta ei saa muuttaa tai jo annettuja tarkistuksia ja rajoitteita ei saa poistaa.

Sovellus osaa seuraavat asiat:

Taso 3

Laajenna taso 1 -ohjelmaa seuraavilla ominaisuuksilla:

Taso 5

Laajenna taso 3 -ohjelmaa seuraavilla ominaisuuksilla:

Käyttäjien kommentit

Kommentoi Lisää kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
https://appro.mit.jyu.fi/tiea2080/vt/vt6/
© 2021-03-09 09:49:30
Informaatioteknologia - Jyväskylän yliopiston informaatioteknologian tiedekunta