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")
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()
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()
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()
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()