示例#1
0
def haeAineID(nimi):
    sqlAineIDhaku = ('SELECT AineID FROM Aine '
                        'WHERE Nimi LIKE :nimi')
    rivit = tietokanta.haeKannasta(sqlAineIDhaku,{"nimi" : nimi},"r");
    try:
        return rivit[0]['AineID']
    except:
        return "uusi"    
示例#2
0
def index(req):
    req.content_type = "application/json; charset=UTF-8"
    id = str(req.form.getfirst("id",""))
    hlo = str(req.form.getfirst("Resepti.Henkilomaara",""))
    nimi = str(req.form.getfirst("Resepti.Nimi",""))
    kuvaus = str(req.form.getfirst("Resepti.Kuvaus",""))
    ruokalaji = str(req.form.getfirst("Ruokalaji.Nimi",""))

    ainemaara = str(req.form.getfirst("Liittyy.Maara",""))
    ainelaji = str(req.form.getfirst("Liittyy.Yksikko_Lyhenne",""))
    kaynnissa = True;
    i = 0;
    aineet = {}
    ainenimi = req.form.getlist("Aine.Nimi")
    maarat = req.form.getlist("Liittyy.Maara")
    lajit = req.form.getlist("Liittyy.Yksikko_Lyhenne")



    
    ainePaivityksetDict = {}
    
    aineMaarat = []
    aineLajit = []
    aineNimet = []

    for maara in maarat:
        palat = maara.split(":")
        key = palat[1].split("_")
        AineID = haeAineID(key[0])
        key[0] = str(AineID)
        avain = key[0]+"_"+key[1]+"_"+key[2] + ":"+key[3]
        try:
            ainePaivityksetDict[avain.split(":")[0]]
        except KeyError:
            alustus = {"nimi" : "","laji":"","maara" : "" }
            ainePaivityksetDict[avain.split(":")[0]] = alustus
        ainePaivityksetDict[avain.split(":")[0]]["maara"] = palat[0] 

    for aine in ainenimi:
        palat = aine.split(":")
        key = palat[1].split("_")
        req.write(str(key))
        AineID = haeAineID(key[0])
        uusi_id = str(haeAineID(palat[0]))
        key[0] = str(AineID)
        avain = key[0]+"_"+key[1]+"_"+key[2] + ":"+key[3]
        req.write(avain)
        tmp = {}
        try:
            ainePaivityksetDict[avain.split(":")[0]]
        except KeyError:
            alustus = {"nimi" : "","laji":"","maara" : "" }
            ainePaivityksetDict[avain.split(":")[0]] = alustus

        ainePaivityksetDict[avain.split(":")[0]]['nimi'] = uusi_id


    for laji in lajit:
        palat = laji.split(":")
        key = palat[1].split("_")
        AineID = haeAineID(key[0])
        key[0] = str(AineID)
        avain = key[0]+"_"+key[1]+"_"+key[2] + ":"+key[3]
        try:
            ainePaivityksetDict[avain.split(":")[0]]
        except KeyError:
            alustus = {"nimi" : "","laji": "","maara" : "" }
            ainePaivityksetDict[avain.split(":")[0]] = alustus

        ainePaivityksetDict[avain.split(":")[0]]["laji"] = palat[0]


    kuvausDict = {"id":id,"value" : kuvaus}
    nimiDict = {"id":id,"value" : nimi}
    hloDict = {"id":id,"value" : hlo}
    taulukko = []
    sqlRuokalajiHaku = ('SELECT RuokalajiID FROM Ruokalaji '
                        'WHERE Nimi LIKE :nimi')
    ruokalajiDict = {"nimi":ruokalaji}
    sqlRuok = ('UPDATE RESEPTI '
           'SET RuokalajiID=:value '
           'WHERE ReseptiID=:id ')
    sqllat = []
    if len(ruokalaji) > 0:
        rivit = tietokanta.haeKannasta(sqlRuokalajiHaku,ruokalajiDict,"r");
        req.write(str(rivit[0]['RuokalajiID']))
        ruokalajiID = rivit[0]['RuokalajiID']
        ruokDict = {"id":id,"value" : ruokalajiID}
        taulukko.append(ruokDict)
        sqllat.append(sqlRuok)

    taulukko.append(kuvausDict)
    taulukko.append(nimiDict)
    taulukko.append(hloDict)
    sqlNimi = ('UPDATE RESEPTI '
           'SET Nimi=:value '
           'WHERE ReseptiID=:id ')
    sqlhlo = ('UPDATE RESEPTI '
           'SET Henkilomaara=:value '
           'WHERE ReseptiID=:id ')
    sqlKuvaus = ('UPDATE RESEPTI '
           'SET Kuvaus=:value '
           'WHERE ReseptiID=:id ')
    sqllat.append(sqlKuvaus)
    sqllat.append(sqlNimi)
    sqllat.append(sqlhlo)
    i = 0;
    while i < len(taulukko):
        if taulukko[i]['value'] != None and taulukko[i]['value'] != "":
            tietokanta.haeKannasta(sqllat[i],taulukko[i],"w");
        i = i+1;


    sqlLiittyy = ('INSERT INTO Liittyy (Resepti_ReseptiID,Aine_AineID,Yksikko_Lyhenne,Maara) '
                  'VALUES (:id,:nimi,:laji,:maara) ')
    sqlPoisto = ('DELETE FROM Liittyy '
                 'WHERE Resepti_ReseptiID=:id AND '
                 'Aine_AineID=:nimi AND Yksikko_Lyhenne=:laji AND Maara=:maara ')
    sqlUpdate = ('UPDATE Liittyy '
                 'SET Aine_AineID=:nimi, Yksikko_Lyhenne=:laji, Maara=:maara '
                 'WHERE Aine_AineID=:vanhaNimi AND Yksikko_Lyhenne=:vanhaLaji AND Maara=:vanhaMaara ')
    sqlLoytyyko = ('SELECT * '
                   'FROM Liittyy '
                   'WHERE Resepti_ReseptiID=:id AND '
                   'Aine_AineID=:nimi AND Yksikko_Lyhenne=:laji AND Maara=:maara ')
    #UPDATE table_name
    #SET column1=value1,column2=value2,...
    #WHERE some_column=some_value;
    for paivitys in ainePaivityksetDict:
        paivitys = paivitys.split(":")[0]
        palat = paivitys.split("_")
        maara = ainePaivityksetDict[paivitys]["maara"]
        nimi = ainePaivityksetDict[paivitys]["nimi"]
        laji = ainePaivityksetDict[paivitys]["laji"]
        if laji == "":
            laji = palat[2]
        if maara == "":
            maara = palat[1]
        if nimi == "":
            nimi = palat[0]
        dicti = {"id":id,"laji" : laji,"maara": maara,"nimi" : nimi}
        poistoDict = {"id": id, "laji": palat[2], "maara" : palat[1],"nimi":palat[0]}
        updateDict = {"id":id,"vanhaLaji" : palat[2],
         "vanhaMaara" : palat[1], "vanhaNimi" : palat[0],
         "laji" : laji,"maara": maara,"nimi" : nimi }    
        rivit = tietokanta.haeKannasta(sqlLoytyyko,poistoDict,"r");     
        if(len(rivit) > 0):
            tietokanta.haeKannasta(sqlUpdate,updateDict,"w");    
        else:   
            tietokanta.haeKannasta(sqlLiittyy,dicti,"w");

    vaiheet = str(req.form.getfirst("vaiheet",""))
    i = 0
    vaiheTaulukko =  vaiheet.split("_")
    vaiheSQLupdate = ('UPDATE Ohje '
                'SET ohjeteksti=:ohje '
                'WHERE ReseptiID=:id AND Vaihenro=:vaihe')
    vaiheSQLinsert = ('INSERT INTO Ohje (Vaihenro,ReseptiID,Ohjeteksti) '
                      'VALUES (:vaihe,:id,:ohje)')
    sqlLoytyyko = ('SELECT * '
                   'FROM Ohje '
                   'WHERE ReseptiID=:id AND '
                   'Vaihenro=:vaihe')
    
    while i < len(vaiheTaulukko):
        vaihe = vaiheTaulukko[i]
        ohjeteksti = str(req.form.getfirst(vaihe,""))
        req.write(vaihe)
        req.write(ohjeteksti)
        vaiheDict = {"id":id,"vaihe" : vaihe,"ohje" : ohjeteksti}
        loytyykoDict = {"id":id,"vaihe" : vaihe}
        rivit = tietokanta.haeKannasta(sqlLoytyyko,loytyykoDict,"r");
        if len(rivit) < 1 and vaihe != "" and ohjeteksti != "" and vaihe != None and ohjeteksti != None:
            tietokanta.haeKannasta(vaiheSQLinsert,vaiheDict,"w");
        else:
            if vaihe != "" and ohjeteksti != "" and vaihe != None and ohjeteksti != None:
                tietokanta.haeKannasta(vaiheSQLupdate,vaiheDict,"w");
        i = i+1
    
    aineet = req.form.getlist("aine")
    aineSQLinsert = ('INSERT INTO Liittyy (Maara,Resepti_ReseptiID,Aine_AineID,Yksikko_Lyhenne) '
                      'VALUES (:maara,:id,:nimi,:laji)')
    aineSQLPoisto = ('DELETE FROM Liittyy '
                     'WHERE Resepti_ReseptiID =:id ')
    sqlLoytyykoAine = ('SELECT * '
                   'FROM Liittyy '
                   'WHERE Aine_AineID=:nimi AND Resepti_ReseptiID=:id ')
    aineSQLupdate = ('UPDATE Liittyy '
                     'SET Maara=:maara, Aine_AineID=:nimi,Yksikko_Lyhenne=:laji '
                     'WHERE Resepti_ReseptiID=:id AND '
                     'Maara=:maara AND '
                     'Aine_AineID=:nimi AND '
                     'Yksikko_Lyhenne=:laji')
    virheet = {}
    virheet['samat'] = []
    if(len(aineet) > 0):
        tietokanta.haeKannasta(aineSQLPoisto,{"id":id},"w")
        for aine in aineet:
            ainepalat = aine.split("_")
            aineenNimi = haeAineID(ainepalat[0])
            if ainepalat[2] == "desiä":
                ainepalat[2] = "dl"
            if ainepalat[2] == "teelusikkaa":
                ainepalat[2] = "tl"
            if ainepalat[2] == "grammaa":
                ainepalat[2] = "g"        
            aineKentatDict = {"id" : id, "nimi" : aineenNimi, "maara" : ainepalat[1] , "laji" : ainepalat[2] }
            #rivit = tietokanta.haeKannasta(sqlLoytyykoAine,{"id":id,"nimi":aineenNimi},"r")
            tietokanta.haeKannasta(aineSQLinsert,aineKentatDict,"w")

    poistettavat = req.form.getlist("poistettava")
    ainePoistoSQL = ('DELETE FROM Liittyy '
                     'WHERE Resepti_ReseptiID =:id AND Aine_AineID=:nimi AND '
                     'Yksikko_Lyhenne=:laji')
    vaihePoistoSQL = ('DELETE FROM Ohje WHERE Vaihenro=:vaihe AND ReseptiID=:id')
    for poistettava in poistettavat:
        poistoPalat = poistettava.split("_")
        if len(poistoPalat) > 2:
            aineID = haeAineID(poistoPalat[0])
            req.write(poistoPalat[0])
            tietokanta.haeKannasta(ainePoistoSQL,{"id":id,"nimi":aineID,"laji":poistoPalat[2]},"w")
        else:
            req.write(poistoPalat[1])
            tietokanta.haeKannasta(vaihePoistoSQL,{"id":id,"vaihe":poistoPalat[1]},"w")
    return virheet