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)
def mainPage(): kilpailut = db.getKilpailut() # Jos ei jostain syysta adminKilpailu ole sessiossa, niin tehdaan sen ny. # Ny se on ensimmainen tietokannasta haettu kilpailu. if 'adminKilpailu' not in session: if len(kilpailut) > 0: session['adminKilpailu'] = kilpailut[0] else: debug(u"Virhe: adminKilpailua ei ole luotu eikä sitä voi luoda!") return redirect(url_for(u"kirjaudu")) # Haetaan kaikki kilpailut ja muodostetaan niista query-ulril. for x in kilpailut: x['url'] = m.buildQuery(url_for(u"muokkaaKisa"), {'kNimi': x['nimi']}) return render_template(u"mainPage.html", kilpailut=kilpailut)
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
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()
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 checkPasswordVT3(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 checkAdminPasswordVT3(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()
def returnToPrevious(): return redirect( m.buildQuery(url_for(u"muokkaaJoukkue"), {'jNimi': session['joukkue']['nimi']}))
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()
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()