コード例 #1
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'])

    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': u""
        }

        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()
コード例 #2
0
def muokkaaTupa():
    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:
            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... TOEO: ei toimi
            if len(errorAika) == 0 and session['alkuperainenTupa'] is None:
                r = db.getRastiByKilpailuAndKoodi(
                    session['adminKilpailu']['id'], koodi)
                debug(u"r = {0}.".format(r))
                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)
                db.muokkaaTupa(session['alkuperainenTupa'], r['id'], j['id'],
                               aika)
                return returnToPrevious()

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

        return updatePage()

    return updatePage()
コード例 #3
0
def muokkaaKisa():
    errorSarja = u""
    kilpailunNimi = u""
    sarjat = []

    if 'muokkaaSarjaSyote' not in session:
        session['muokkaaSarjaSyote'] = u""

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

    def updatePage():
        return render_template(u"muokkaaKisa.html",
                               sarjat=sarjat,
                               errorSarja=errorSarja)

    # Kerataan urlista tiedot.

    if request.method == u"GET":
        try:
            kilpailu = None
            args = request.args.get('kNimi')
            kilpailunNimi = m.unQuoteInput(args)
            kilpailu = db.getKilpailuByNimi(kilpailunNimi)
            if kilpailu is not None:
                session['adminKilpailu'] = kilpailu
                session['adminKilpailu']['rastitUrl'] = m.buildQuery(
                    url_for(u"rastilistaus"), {'kNimi': kilpailu['nimi']})
            else:
                debug(u"Virhe: kilpailua ei löydy")
                return redirect(url_for(u"mainPage"))
            sarjat = db.getSarjatByKisaNimi(session['adminKilpailu']['nimi'])

            # Muodostetaan linkit sarjojen muokkausta varten.
            for x in sarjat:
                x['url'] = m.buildQuery(
                    url_for(u"muokkaaSarja"), {
                        'sNimi': x['nimi'],
                        'kNimi': session['adminKilpailu']['nimi']
                    })
        except Exception as e:
            debug(e)

    # Painetaan Tallenna.
    if request.method == u"POST":

        sarjat = db.getSarjatByKisaNimi(session['adminKilpailu']['nimi'])
        snimi = u""
        poistaRuksi = None

        try:
            snimi = request.form.get(u"sarjanNimi").strip()
            poistaRuksi = request.form.get(u"poistaSarja")
            session['muokkaaSarjaSyote'] = snimi
            session['muokkaaSarjaPoista'] = poistaRuksi
        except Exception as e:
            debug(e)

        sarjat = db.getSarjatByKisaNimi(session['adminKilpailu']['nimi'])
        for x in sarjat:
            x['url'] = m.buildQuery(url_for(u"muokkaaSarja"), {
                'sNimi': x['nimi'],
                'kNimi': session['adminKilpailu']['nimi']
            })

        # Tarkistetaan syotteet.
        if len(snimi) == 0:
            errorSarja = u"Et voi antaa tyhjää nimeä."
            return updatePage()

        kohdeSarja = None

        for x in sarjat:
            if x['nimi'] == snimi:
                kohdeSarja = x
                break

        if kohdeSarja is not None and poistaRuksi is None:
            errorSarja = u"Et voi lisätä sarjaa. Kilpailussa on jo samanniminen sarja."
            return updatePage()

        if kohdeSarja is not None and poistaRuksi is not None:
            j = db.getJoukkueetBySarjaId(x['id'])
            if len(j) > 0:
                errorSarja = u"Et voi poistaa sarjaa. Sarjalla on joukkueita."
                return updatePage()

        if kohdeSarja is None and poistaRuksi is not None:
            errorSarja = u"Et voi poistaa sarjaa, sillä sitä ei ole olemassa."
            return updatePage()

        # Ei virheita! Joko tallennetaan tai poistetaan.

        # Poistetaan sarja.
        if kohdeSarja is not None and poistaRuksi is not None:
            db.poistaSarja(kohdeSarja)

        else:
            tallennettavaSarja = {}
            tallennettavaSarja['nimi'] = snimi
            tallennettavaSarja['kilpailu'] = session['adminKilpailu']['id']
            tallennettavaSarja['matka'] = u"-"
            tallennettavaSarja['kesto'] = 1
            tallennettavaSarja['alkuaika'] = None
            tallennettavaSarja['loppuaika'] = None
            tallennettavaSarja['joukkueet'] = []
            db.lisaaSarja(tallennettavaSarja)
        session['muokkaaSarjaSyote'] = u""
        session['muokkaaSarjaPoista'] = None
        sarjat = db.getSarjatByKisaNimi(session['adminKilpailu']['nimi'])
        for x in sarjat:
            x['url'] = m.buildQuery(url_for(u"muokkaaSarja"), {
                'sNimi': x['nimi'],
                'kNimi': session['adminKilpailu']['nimi']
            })
        return updatePage()

    return updatePage()
コード例 #4
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()
コード例 #5
0
def muokkaaTupa():
    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:
        m.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():
        # TODO:: tee loppuun....
        resp = make_response(
            render_template(u"muokkaaTupa.xml",
                            rastit=rastit,
                            koodi=koodi,
                            errorAika=errorAika,
                            errorPoista=errorPoista,
                            aika=aika,
                            jNimi=jNimi,
                            alkuperainenJoukkue=alkuperainenJoukkue))
        resp.charset = "UTF-8"
        resp.headers.extend({'nextState': u"muokkaaTupa"})
        resp.headers.extend({'updateFooter': session['updateFooter']})
        resp.mimetype = "text/xml"
        return resp

    def returnToPrevious():
        #        return redirect(url_for(u"muokkaaJoukkue"))
        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:
            m.debug(e)
        return updatePage()

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

            # 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)
                db.muokkaaTupa(session['alkuperainenTupa'], r['id'], j['id'],
                               aika)
                return returnToPrevious()

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

        return updatePage()

    return updatePage()