Ejemplo n.º 1
0
    def updatePage():
        session['rastit'] = db.getRastit(session['adminKilpailu']['id'])
        for x in range(len(session['rastit'])):
            session['rastit'][x]['query'] = m.buildQuery(url_for(u"rastilistaus"),{'index':unicode(x),'kNimi':session['adminKilpailu']['nimi']})+u"#footer"

        return render_template(u"rastilistaus.html",
                               tempLon=tempLon,
                               tempLat=tempLat,
                               tempKoodi=tempKoodi,
                               lanLabelError=lanLabelError,
                               lonLabelError=lonLabelError,
                               koodiLabelError=koodiLabelError,
                               poistaError=poistaError)
Ejemplo n.º 2
0
    def updatePage():
        session['rastit'] = db.getRastit(session['adminKilpailu']['id'])

        for x in range(len(session['rastit'])):
            session['rastit'][x]['query'] = m.buildQuery(
                url_for(u"rastilistaus"), {
                    'index': unicode(x),
                    'kNimi': session['adminKilpailu']['nimi']
                }) + u"#footer"

        resp = make_response(
            render_template(u"rastilistaus.xml",
                            tempLon=tempLon,
                            tempLat=tempLat,
                            tempKoodi=tempKoodi,
                            lanLabelError=lanLabelError,
                            lonLabelError=lonLabelError,
                            koodiLabelError=koodiLabelError,
                            poistaError=poistaError))
        resp.charset = "UTF-8"
        resp.headers.extend({'nextState': u"rastilistaus"})
        resp.headers.extend({'updateFooter': session['updateFooter']})
        resp.mimetype = "text/xml"
        return resp
Ejemplo n.º 3
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()
Ejemplo n.º 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()
Ejemplo n.º 5
0
def rastilistaus():

    tempLon = u""
    tempLat = u""
    tempKoodi = u""
    tempPoista = None
    koodiLabelError = u""
    lanLabelError = u""
    lonLabelError = u""
    poistaError = u""
    kisaNimi = u""
    if 'rastiNow' not in session:
        session['rastiNow'] = None

    def updatePage():
        session['rastit'] = db.getRastit(session['adminKilpailu']['id'])
        for x in range(len(session['rastit'])):
            session['rastit'][x]['query'] = m.buildQuery(url_for(u"rastilistaus"),{'index':unicode(x),'kNimi':session['adminKilpailu']['nimi']})+u"#footer"

        return render_template(u"rastilistaus.html",
                               tempLon=tempLon,
                               tempLat=tempLat,
                               tempKoodi=tempKoodi,
                               lanLabelError=lanLabelError,
                               lonLabelError=lonLabelError,
                               koodiLabelError=koodiLabelError,
                               poistaError=poistaError)

    if request.method == u"GET":
        try:
            debug(request.args)
            kisaNimi = request.args.get('kNimi')
            session['rastit'] = db.getRastit(session['adminKilpailu']['id'])
            try:
                rastiIndex = request.args.get('index')
                debug(rastiIndex)
                session['rastiNow'] = session['rastit'][int(rastiIndex)]
            except Excpetion as e:
                debug(e)
            tempLon = session['rastiNow']['lon']
            tempLat = session['rastiNow']['lat']
            tempKoodi = session['rastiNow']['koodi']
            return updatePage()
        except Exception as e:
            debug(e)

    if request.method == u"POST":
        try:
            tempLon = request.form.get('lonLabel').strip()
            tempLat = request.form.get('lanLabel').strip()
            tempKoodi = request.form.get('koodiLabel').strip()
            tempPoista = request.form.get('poistaRasti')

            debug(request.form)

            # Tarkistukset.

            lat = None 
            lon = None 

            if tempPoista is not None:
                if session['rastiNow'] is not None:
                    if session['rastiNow']['lkm'] > 0:
                        poistaError = u"Rastia ei voi poistaa: rastilla on leimauksia."
                        return updatePage()
                    db.poistaRasti(session['rastiNow']['id'])
                    session['rastiNow'] = None
                    tempLon = u""
                    tempLat = u""
                    tempKoodi =  u""
                    tempPoista = u""
                    return updatePage()

            debug(u"yeah")

            try:
                lat = float(tempLat)
            except:
                lanLabelError = u"Anna liukuluku"

            try:
                lon = float(tempLon)
            except:
                lonLabelError = u"Anna liukuluku"

            if len(tempKoodi) == 0:
                koodiLabelError = u"Et voi antaa koodiksi pelkkää tyhjää."

            if len(lanLabelError) > 0 or len(lonLabelError) > 0 or len(koodiLabelError) > 0:
                return updatePage()

            # Tallennetaan rasti.

            # Muokataan olemassa olevaa rastia.
            if session['rastiNow'] is not None:
                db.paivitaRasti({'id': session['rastiNow']['id'],'lat': lat, 'lon': lon, 'koodi': tempKoodi, 'kilpailu': session['adminKilpailu']['id']})
            # Tallennetaan ihan uusi rasti.
            else:
                debug(u"yeah4")
                db.tallennaRasti({'lat': lat, 'lon': lon, 'koodi': tempKoodi,'kilpailu': session['adminKilpailu']['id']})

        except Exception as e:
            debug(e)
            return redirect(url_for(u"mainPage"))

    session['rastiNow'] = None
    tempLon = u""
    tempLat = u""
    tempKoodi =  u""
    tempPoista = u""

    return updatePage()