Exemple #1
0
def checkKirjauduForm(kirjauduData):
    data = deepcopy(kirjauduData)
    m.debug(data)

    # Tarkistetaan nimiasiat.

    if len(data['nimi']) == 0:
        data['errorTunnus'] = errorTunnus = u"Nimi ei saa olla tyhjä."
        data['nextState'] = u"kirjaudu"
        return data

    elif data['nimi'] == u"admin":
        pass

    elif db.getJoukkueByNimi(data['nimi']) == None:
        data['errorTunnus'] = u"Joukkuetta ei ole olemassa."
        data['nextState'] = u"kirjaudu"
        return data

    # Tarkistetaan salasanaasiat.

    if len(data['salasana']) == 0:
        data['nextState'] = u"kirjaudu"
        data['errorSalasana'] = u"Salasana ei voi olla tyhjä."
        return data

    elif data['nimi'] == u"admin" and db.checkAdminPasswordVT4(
            data['salasana']):
        session['footerText'] = u"ADMIN"
        data['nextState'] = u"mainPage"
        session['kirjautunut'] = u"admin"
        return data

    elif db.checkPasswordVT5(data['salasana'], data['nimi']):
        data['nextState'] = u"joukkuelistaus"
        session['kirjautunut'] = u"regular"
        session['joukkue'] = db.getJoukkueByNimi(data['nimi'])
        try:
            session['footerText'] = db.getKilpailu(
                session['joukkue']['id'])['nimi']
            m.debug(u"footerText")
            m.debug(session['footerText'])
        except Exception as e:
            m.debug(e)
        return data

    else:
        data['errorSalasana'] = u"Salasana on väärä."
        data['nextState'] = u"kirjaudu"
        return data

    m.debug(u"Tänne ei pitäisi päätyä koskaan")
Exemple #2
0
def muokkaaJoukkue():

    # Sivukohtaisen muuttujat
    kNimi = u""
    joukkueNimi = u""
    sarjat = []
    joukkueNimiError = u""
    jasenError = u""
    poistoError = u""
    rastit = []
    kisaRastit = []
    salasana = u""
    salasanaError = u""

    if session['kirjautunut'] == u"admin":
        try:
            args = request.args.get('jNimi')
            jNimi = m.unQuoteInput(args)
            joukkue = db.getJoukkueByNimi(jNimi)
            if joukkue is None:
                debug("Virhe: joukkuetta ei löyty. Palataan mainPageen.")
                return redirect(url_for(u"mainPage"))
            else:
                session['joukkue'] = joukkue

        except Exception as e:
            debug(e)

    if 'joukkue' not in session:
        debug(u"VIRHE: joukkue pitaisi olla maaritelty jo.")
    if 'kirjautunut' not in session:
        debug(u"VIRHE: kirjautunut pitaisi olla maaritelty jo.")

    # Tahan admin tarkistukset.

    if 'tempJasenet' not in session:
        session['tempJasenet'] = [u"",u"",u"",u"",u""]
    if 'tempSarjaNimi' not in session:
        session['tempSarja'] = u""
    if 'tempJNimi' not in session:
        session['tempJNimi'] = u""
    if 'nykyinenSarja' not in session:
        session['nykyinenSarja'] = u""

    # TODO: admin ei voi ottaa sarjoja footerTextista!
    kisa = db.getKilpailu(session['joukkue']['id'])
    sarjat = db.getSarjatByKisaNimi(kisa['nimi'])

    # Haetaan joukkueen rastileimaukset.
    rastit = db.haeJoukkueenRastileimaukset(session['joukkue']['id'])
    kisaRastit = db.getRastit(session['adminKilpailu']['id'])
    debug(kisaRastit)

    for x in rastit:
        x['href'] = m.buildQuery(url_for(u"muokkaaTupa"),
                {'aika':x['tAika'],'koodi':x['rKoodi'],'jNimi':session['joukkue']['nimi']})
    # Sivun uudelleen piirto funktio.
    def updatePage():
        return render_template(u"muokkaaJoukkue.html",
                               sarjat=sarjat,
                               joukkueNimiError=joukkueNimiError,
                               jasenError=jasenError,
                               poistoError=poistoError,
                               salasanaError=salasanaError,
                               kisaRastit=kisaRastit,
                               rastit=rastit)

    if request.method == u"GET":
        session['tempJNimi'] = session['joukkue']['nimi']
        session['nykyinenSarja'] = db.getSarjaByJoukkueId(session['joukkue']['id'])['nimi']
        session['tempJasenet'] = createJasentenNimet(5,session['joukkue']['jasenet'])

    if request.method == u"POST":

        # Lisataan rasti.

        if request.form.get('lisaaRasti') is not None:
            newRastiUrl = m.buildQuery(url_for(u"muokkaaTupa"),{'aika':u"",'koodi':u"",'jNimi':session['joukkue']['nimi']})
            return redirect(newRastiUrl)

        # Admin tilaa varten.
        poista = None

        # Otetaan talteen lomakkeen tiedot.
        try:
            session['tempJNimi'] = request.form.get(u'joukkueNimi').strip()
            session['nykyinenSarja'] = request.form.get(u'SARJA')
            poista = request.form.get(u'poistaJoukkue')
            if session['kirjautunut'] == u"regular":
                salasana = request.form.get(u"newSalasana")
            jasenet = []
            for x in range(5):
                jasenet.append(request.form.get(u"Jäsen"+ unicode(x+1)).strip())
            session['tempJasenet'] = createJasentenNimet(5,jasenet)
        except Exception as e:
            debug(e)

        # Tarkistetaan lomaketiedot.

        # Tahan joukkueen poisto.
        if session['kirjautunut'] == u"admin" and poista is not None:
            if len(rastit) > 0:
                poistoError = u"Poistoa ei suoriteta: joukkueella leimauksia."
                return updatePage()
            else:
                db.poistaJoukkue(session['joukkue']['nimi'])
                session.pop('tempJNimi',None)
                session.pop('tempSarja',None)
                session.pop('nykyinenSarja',None)
                session.pop('tempJasenet',None)
                return redirect(url_for(u"mainPage"))

        # Onko joukkueen nimi tyhja?
        if len(session['tempJNimi']) == 0:
            joukkueNimiError = u"joukkue nimi ei saa olla tyhjä"
            return updatePage()

        # Onko tuon niminen joukkue jo olemassa?
        j = db.getJoukkueByNimi(session['tempJNimi'])
        if j is not None and j['nimi'] == session['tempJNimi'] and session['joukkue']['id'] != j['id']:
            joukkueNimiError = u"Saman niminen joukkue on jo olemassa."
            return updatePage()

        # Onko jasenia tarpeeksi?
        if len([x for x in session['tempJasenet'] if len(x) > 0]) < 2:
            jasenError = u"Jasenia taytyy olla vahintaan 2."
            return updatePage()

        # Jos salasanakenttaan on annettu jotain, niin luodaan uusi salasana.
        if len(salasana) > 0:
            d = hashlib.sha512()
            d.update(str(session['joukkue']['id']))
            d.update(salasana)
            # Ei ehka pitaisi taalla tehda naita salasanajuttuja. Ehka
            # tietokannassa....
            session['joukkue']['salasana'] = d.hexdigest().decode("UTF-8")

        # Jos tanne asti paastiin, niin tallennetaan. TODO: tarkista viela
        # poista juttu admin tilassa.

        kisa = db.getKilpailu(session['joukkue']['id'])
        newSarja = db.getSarjaByKisaNimi(kisa['nimi'],session['nykyinenSarja'])

        # Jos ei loydy sarjaa, niin huono homma. Palataan
        # jonnekin toiselle sivulle.
        if newSarja is None:
            debug("newSarja == None. Ei hyva.")
            if session['kirjautunut'] == u"admin":
                return redirect(url_for(u'mainPage'))
            elif session['kirjautunut'] == u"regular":
                return redirect(url_for(u'joukkuelistaus'))
        js = [x for x in session['tempJasenet'] if len(x) > 0]
        newJoukkue = {'id': session['joukkue']['id'],'nimi':session['tempJNimi'], 'sarja':newSarja['id'],'jasenet':unicode(json.dumps(js)), 'salasana': session['joukkue']['salasana']}

        if db.paivitaJoukkue(newJoukkue):
            # Hommaudutaan naista eroon. En tieda onko pakko...
            session['joukkue'] = db.getJoukkueById(session['joukkue']['id'])
            session.pop('tempJNimi',None)
            session.pop('nykyinenSarja',None)
            session.pop('tempJasenet',None)
        if session['kirjautunut'] == u'regular':
            return redirect(url_for(u"joukkuelistaus"))
        elif session['kirjautunut'] == u'admin':
            return redirect(m.buildQuery(url_for(u"muokkaaSarja"),{'sNimi':newSarja['nimi'],'kNimi':kisa['nimi']}))

    return updatePage()
Exemple #3
0
def kirjaudu():

    salasana = u""

    # Alustetaan kirjautumisTunnus.
    if u'tempNimi' not in session:
        session['tempNimi'] = u""
    if u"adminKilpailu" not in session:
        session['adminKilpailu'] = None

    # SIvuun liittyvat muuttujat. Nama ovat nyt dictin sisalla, jotta 
    # niita voi muokata jatkossa sisafunktion kautta jos on tarve.
    pageVariables = {'errorTunnus': u"", 'errorSalasana': u"", 'salasana': u""}

    kilpailut = []

    try:
        kilpailut = [x['nimi'] for x in db.getKilpailut()]
    except Exception as e:
        debug(e)


    def updatePage():
        return render_template(u"kirjaudu.html",
                variables=pageVariables,
                kilpailut=kilpailut)

    # Jos tullaan GET-metodilla, niin piirretaan vain.
    if request.method == 'GET':
        return updatePage()

    # Jos tullaan POST:illa....
    elif request.method == 'POST':
        try:
            session['tempNimi'] = request.form['tunnus']
            session['adminKilpailu'] = db.getKilpailuByNimi(request.form.get('alasveto'))
            session['adminKilpailu']['rastitUrl'] = m.buildQuery(url_for(u"rastilistaus"),{'kNimi': session['adminKilpailu']['nimi']})
        except Exception as e:
            debug(e)
            session['tempNimi'] = u""
        try:
            salasana = request.form.get('salasana',u"")
        except Exception as e:
            debug(e)

    # Tehdaan tarkistukset.
    stripattuNimi = session['tempNimi'].strip()
    joukkue = db.getJoukkueByNimi(stripattuNimi)

    if len(stripattuNimi) == 0:
        pageVariables['errorTunnus'] = u"Nimi ei voi koostua tyhjista merkeista."
    elif session['tempNimi'] == u"admin":
        pass
    else:
        if joukkue is None:
            pageVariables['errorTunnus'] = u"Joukkuetta ei loydy."
    if len(pageVariables['errorTunnus']) > 0:
        return updatePage()

    # Ei virheita joukkuen nimen suhteen.
    # Tarkistetaan salasana.
    if stripattuNimi != u'admin' and joukkue is None:
        debug("VIRHE: joukkue ei saa olla tassa vaiheessa None!")
    # Tarkistetaan tavallisen kayttajan salasana.
    # Jos ok, niin mennaan joukkuelistaussivulle. 
    if stripattuNimi != u'admin' and checkPasswordVT4(salasana,joukkue['id'],joukkue['salasana']):
        session['joukkue'] = joukkue
        session['kirjautunut'] = 'regular'
        try:
            kNimi = db.getKilpailu(session['joukkue']['id'])['nimi']
            session['footerText'] = kNimi
        except Exception as e:
            debug(e)
            debug("Bugi: ei loydy kilpailua.")
            session['footerText'] = 'Ei loytynyt kilpailua!'
        session.pop('tempNimi',None)
        return redirect(url_for(u"joukkuelistaus"))

    # Tarkistetaan admin salasana.
    # Jos ok, niin mennaan mainPageen. 
    elif stripattuNimi == u"admin" and checkAdminPasswordVT4(salasana):
        session['kirjautunut'] = u'admin'
        session['footerText'] = 'ADMIN'
        session.pop('tempNimi',None)
        return redirect(url_for(u"mainPage"))
    else:
        pageVariables['errorSalasana'] = u"Salasana on väärä."
    return updatePage()
Exemple #4
0
def muokkaaTupa():
    debug(request.args)
    aika = u""
    koodi = u""
    jNimi = u""
    poista = None
    errorPoista = u""
    errorAika = u""
    alkuperainenJoukkue = u""
    tupaData = {'aika':u"", 'koodi':u"", 'nimi':u""}

    rastit = []
    try:
        rastit = db.getRastit(session['adminKilpailu']['id'])
    except Exception as e:
        debug(e)

    if 'muokkaaTupaAika' not in session:
        session['muokkaaTupaAika'] = u"ksdf"

    if 'muokkaaTupaPoista' not in session:
        session['muokkaaTupaPoista'] = None

    if 'alkuperainenTupa' not in session:
        session['alkuperainenTupa'] = None

    def updatePage():
        return render_template(u"muokkaaTupa.html",
                               rastit=rastit,
                               koodi=koodi,
                               errorAika=errorAika,
                               errorPoista=errorPoista,
                               aika=aika,
                               jNimi=jNimi,
                               alkuperainenJoukkue=alkuperainenJoukkue)
    def returnToPrevious():
        return redirect(m.buildQuery(url_for(u"muokkaaJoukkue"),{'jNimi':session['joukkue']['nimi']}))

    if request.method == u"GET":
        try:
            aika = m.unQuoteInput(request.args.get('aika'))
            koodi = m.unQuoteInput(request.args.get('koodi'))
            jNimi = m.unQuoteInput(request.args.get('jNimi'))
            alkuperainenJoukkue = jNimi
            tupaData = db.getTupaData(aika,koodi,jNimi)
            if tupaData is not None:
                session['alkuperainenTupa'] = {'rId': tupaData['rid'],
                                             'jId': tupaData['jid'],
                                             'aika': tupaData['aika']}
        except Exception as e:
            debug(e)
        return updatePage()

    if request.method == u"POST":
        try:
            debug(request.form)
            aika = request.form.get('aika')
            koodi = request.form.get('sKoodi')
            jNimi = request.form.get('jNimi')
            poista = request.form.get('poistaTupa')
            #uusi = request.form.get('uusiTupa')
            alkuperainenJoukkue = request.form.get('alkuperainenJoukkue')

            #if uusi is not None:
            #    session['alkuperainenTupa'] = None
            #    aika = u""
            #    koodi = u""
            #    updatePage()

            # Poisto...

            if poista is not None:
                if session['alkuperainenTupa'] is None:
                    return returnToPrevious()
                else:
                    db.poistaTupa(session['alkuperainenTupa'])
                    return returnToPrevious()

            # Tarkistukset.
            try:
                datetime.strptime(aika,u"%Y-%m-%d %H:%M:%S")
            except Exception as a:
                errorAika = u"Ajan täytyy olla muodoa yyyy-mm-dd hh:mm:ss"
                return updatePage()

            # Yritetaan tallentaa.


            # Tallenetaan ihan uusi...
            if len(errorAika) == 0 and session['alkuperainenTupa'] is None:
                r = db.getRastiByKilpailuAndKoodi(session['adminKilpailu']['id'],koodi)
                j = db.getJoukkueByNimi(alkuperainenJoukkue)
                db.tallennaTupa(r['id'],j['id'],aika)
                return returnToPrevious()

            # Tallennetaan olemassa oleva rasti.
            elif len(errorAika) == 0 and session['alkuperainenTupa'] is not None:
                r = db.getRastiByKilpailuAndKoodi(session['adminKilpailu']['id'],koodi)
                j = db.getJoukkueByNimi(alkuperainenJoukkue)
                debug(u"muokataan")
                db.muokkaaTupa(session['alkuperainenTupa'],r['id'],j['id'],aika)
                debug(u"muokataan2")
                return returnToPrevious()

        except Exception as e:
            debug(e)
            return returnToPrevious()

        return updatePage()

    return updatePage()
Exemple #5
0
def muokkaaSarja():

    joukkueet = []
    sarja = None
    kNimi = u""
    sNimi = u""
    jNimi = u""
    error = u""

    def refreshPage():
        return render_template(u"muokkaaSarja.html",
                               joukkueet=joukkueet,
                               sarja=sarja,
                               kNimi=kNimi,
                               sNimi=sNimi,
                               jNimi=jNimi,
                               error=error)

    if 'adminKilpailu' not in session:
        debug("Virhe: adminKilpailun taytyy olla maaritelty tassa vaiheessa.")
    if 'tempJoukkueNimi' not in session:
        session['tempJoukkueNimi'] = u""

    if request.method == u"GET":
        kilpailu = None
        try:
            kNimi = request.args.get('kNimi')
            sNimi = request.args.get('sNimi')

            kNimi = m.unQuoteInput(kNimi)
            sNimi = m.unQuoteInput(sNimi)

            # Periaatteessa pitaisi luottaa sessio-muuttuujaan, 
            # mutta otetaan nyt querysta kilpailun nimi.
            kilpailu = db.getKilpailuByNimi(kNimi)
            if kilpailu is None:
                debug(u"Kilpailua ei loytynyt. Palataan mainPageen.")
                return redirect(url_for(u"mainPage"))

            # Yritetaan hakea sarjaa kisan nimella.
            sarja = db.getSarjaByKisaNimi(kNimi,sNimi)
            if sarja is None:
                debug(u"Sarjaa ei loytynyt. Palataan mainPageen.")
                return redirect(url_for(u"mainPage"))

            joukkueet = db.getJoukkueetBySarjaId(sarja['id'])

            # Muodostetaan linkit joukkueita varten.
            for x in joukkueet:
                x['url'] = m.buildQuery(url_for(u"muokkaaJoukkue"),{'jNimi':x['nimi']})
        except Exception as e:
            debug(e)

    if request.method == u"POST":
        try:
            kNimi = request.form.get('kilpailuNimi')
            sNimi = request.form.get('sarjaNimi')
            jNimi = request.form.get('joukkueenNimi').strip()

            kilpailu = db.getKilpailuByNimi(kNimi)
            if kilpailu is None:
                debug(u"Kilpailua ei loytynyt. Palataan mainPageen.")
                return redirect(url_for(u"mainPage"))

            # Yritetaan hakea sarjaa kisan nimella.
            sarja = db.getSarjaByKisaNimi(kNimi,sNimi)
            if sarja is None:
                debug(u"Sarjaa ei loytynyt. Palataan mainPageen.")
                return redirect(url_for(u"mainPage"))

            j = db.getJoukkueByNimi(jNimi)

            joukkueet = db.getJoukkueetBySarjaId(sarja['id'])

            # Muodostetaan linkit joukkueita varten.
            for x in joukkueet:
                x['url'] = m.buildQuery(url_for(u"muokkaaJoukkue"),{'jNimi':x['nimi']})

            # Tarkistukset.

            if len(jNimi) == 0:
                error = u"Joukkueen nimi ei saa olla tyhjä."
                return refreshPage()

            if j is not None:
                error = u"Saman niminen joukkue on jo olemassa."
                return refeshPage()

            db.tallennaJoukkue({'nimi':jNimi,'sarja':sarja['id'],'jasenet':u'[]'})
            jNimi = u""
            joukkueet = db.getJoukkueetBySarjaId(sarja['id'])

        except Exception as e:
            debug(e)
    return refreshPage()