def checkoutGames(): [now,tomorrow]=getTiming() username_before=request.args.get('usr') user=User.query.filter_by(userName=username_before).first() exact=[] winner=[] basedir = os.path.abspath(os.path.dirname(__file__)) homedir = os.path.abspath(os.path.join(basedir, os.pardir)) with open(homedir+'/admin/update/showGamesExact1.json') as f: showGamesExact = json.load(f) with open(homedir+'/admin/update/showGamesWinner1.json') as f: showGamesWinner = json.load(f) usr_games_exact=showGamesExact[user.userName] usr_games_winner=showGamesWinner[user.userName] for item in usr_games_exact: game=Games.query.filter_by(game=item).first() game.date=datetime.datetime.strftime(game.date, "%d %B %Y") game.time=str(game.time)[0:5].replace(':','h') exact.append(game) for item in usr_games_winner: game=Games.query.filter_by(game=item).first() usr_game = Scores.query.filter_by(parent_id=user.user_id)\ .filter_by(game=item).first() game.date=datetime.datetime.strftime(game.date, "%d %B %Y") game.time=str(game.time)[0:5].replace(':','h') winner.append([game,usr_game]) return render_template('checkout.html',exact=exact,winner=winner,user=user)
def graphs(): [now,tomorrow]=getTiming() today= datetime.datetime.strftime(now.date(), "%A-%d %B %Y").split('-') users=User.query.all() users.sort(key=lambda x: x.lastName.lower()) if request.method =='POST': graphType=request.args.get('type') selected_users=[] for item in request.form: if item!="checkAll": user=User.query.filter_by(userName=item).first() selected_users.append(user.userName) session['selected_users']=selected_users session['type']=graphType return redirect(url_for('results.showGraphs')) if request.method =='GET': return render_template('graphs.html',today=today,users=users)
def checkoutQuestions(): [now,tomorrow]=getTiming() username_before=request.args.get('usr') user=User.query.filter_by(userName=username_before).first() questions=[] basedir = os.path.abspath(os.path.dirname(__file__)) with open(basedir+'/checkout/showQuestions.json') as f: showQuestions = json.load(f) usr_questions=showQuestions[user.userName] count=0 count2=0 question5=[] question9=None print usr_questions for item in usr_questions: print item if isinstance(item, int) : question=Questions.query.filter_by(id=item).first() questions.append(question) elif isinstance(item, list) and item !=[]: question5.append("Group "+item[1]) if count==0: count=1 question=Questions.query.filter_by(id=5).first() questions.append(question) elif isinstance(item, unicode) and item !=[]: print "unicooode" question=Questions.query.filter_by(id=int(item.split('-')[0])).first() questions.append(question) question9=item.split('-')[1] question5=[str(x) for x in question5] return render_template('checkQuestions.html',questions=questions,user=user,\ question5=question5,question9=question9)
def plotBarChart(users,last_number): [now,tomorrow]=getTiming() questions={} games_total={} Q1_ranges=[] Q4_ranges=[] Q9_ranges=[] Q11_ranges=[] for username in users: #QUESTIONS user=User.query.filter_by(userName=username).first() all_questions=UserQuestions.query.filter_by(parent_id=user.user_id).all() usr_questions=0 for item in all_questions: question=Questions.query.filter_by(id=item.answer_id).first() if question.id not in [1,4,5,9,11]: if item.answer == question.answer and question.answer!='' and question.answer!=None\ and question.answer != 'empty': usr_questions = usr_questions+10 elif question.id == 5: import ast try: answers=ast.literal_eval(question.answer) usr_answers = ast.literal_eval(item.answer) for ans in answers: count=0 if answers[ans]==usr_answers[ans] and answers[ans]!='' and answers[ans]!=None\ and answers[ans] != 'empty': usr_questions = usr_questions+4 except: "noope" elif question.id in [1,4,9,11]: #check range from actual answer if question.answer!='' and question.answer!=None\ and question.answer != 'empty' and item.answer!='' and item.answer!=None\ and item.answer != 'empty': ans_range=abs(int(item.answer)-int(question.answer)) if question.id==1: Q1_ranges.append((user.userName,ans_range)) if question.id==4: Q4_ranges.append((user.userName,ans_range)) if question.id==9: Q9_ranges.append((user.userName,ans_range)) if question.id==11: Q11_ranges.append((user.userName,ans_range)) questions[user.userName]=usr_questions #SCORES user=User.query.filter_by(userName=username).first() scores=Scores.query.filter_by(parent_id=user.user_id).all() usr_games_winner=0 usr_games_exact=0 for item in scores: game=Games.query.filter_by(game=item.game).first() if item.date <= now.date(): #EXACT SCORE if item.score == game.score and game.score!='-' and game.score!='': usr_games_exact= usr_games_exact+7 else: #WINNERS try: score_left=int(item.score.split('-')[0]) score_right=int(item.score.split('-')[1]) game_score_left=int(game.score.split('-')[0]) game_score_right=int(game.score.split('-')[1]) if game_score_left>game_score_right: game_winner=game.teamHome if game_score_left<game_score_right: game_winner=game.teamAway if game_score_left==game_score_right: game_winner='tie' if score_left>score_right: winner=game.teamHome if score_left<score_right: winner=game.teamAway if score_left==score_right: winner='tie' if winner==game_winner: usr_games_winner= usr_games_winner+3 except: "no integers possible, scores not filled in yet" games_total[user.userName]=usr_games_exact+usr_games_winner try: # min_range_Q1 = min(Q1_ranges, key=lambda x: x[1]) Q1_ranges.sort(key=lambda x: x[1]) questions[Q1_ranges[0][0]]=questions[Q1_ranges[0][0]]+10 for i in range(1,len(Q1_ranges)-1): if Q1_ranges[i][1]==Q1_ranges[i-1][1]: questions[Q1_ranges[i][0]]=questions[Q1_ranges[i][0]]+10 else: break Q4_ranges.sort(key=lambda x: x[1]) questions[Q4_ranges[0][0]]=questions[Q4_ranges[0][0]]+10 for i in range(1,len(Q4_ranges)-1): if Q4_ranges[i][1]==Q4_ranges[i-1][1]: questions[Q4_ranges[i][0]]=questions[Q4_ranges[i][0]]+10 else: break Q9_ranges.sort(key=lambda x: x[1]) questions[Q9_ranges[0][0]]=questions[Q9_ranges[0][0]]+10 if len(Q9_ranges)>=5: end=5 else: end=len(Q9_ranges) count=0 for i in range(1,end): last_score=10 if Q9_ranges[i][1]==Q9_ranges[i-1][1] and count<5: questions[Q9_ranges[i][0]]=questions[Q9_ranges[i][0]]+last_score count=count+1 elif count<5: last_score=last_score-2*i questions[Q9_ranges[i][0]]=questions[Q9_ranges[i][0]]+last_score count=count+1 else: break Q11_ranges.sort(key=lambda x: x[1]) questions[Q11_ranges[0][0]]=questions[Q11_ranges[0][0]]+10 for i in range(1,len(Q11_ranges)-1): if Q11_ranges[i][1]==Q11_ranges[i-1][1]: questions[Q11_ranges[i][0]]=questions[Q11_ranges[i][0]]+10 else: break except: "nothing here yet" basedir = os.path.abspath(os.path.dirname(__file__)) import plotly.plotly as py import plotly.graph_objs as go py.sign_in('Baekel', 'fhhezplvr3') x_quest=[] y_quest=[] for item in questions: x_quest.append(item) y_quest.append(questions[item]) x_games=[] y_games=[] for item in games_total: x_games.append(item) y_games.append(games_total[item]) trace1 = go.Bar( x=x_quest, y=y_quest, name='Bonus points' ) y_games=sorted(y_games,reverse=True) trace2 = go.Bar( x=x_games, y=y_games, name='Game points' ) today= datetime.datetime.strftime(now.date(), "%A %d %B %Y") data = [trace2,trace1] layout = go.Layout( barmode='group', title="Bar Chart ["+str(today)+"] \n (sorted by game points)", yaxis=dict( title='Points', titlefont=dict( size=15, color='#191919' ) ) ) fig = go.Figure(data=data, layout=layout) try: nr=int(last_number) nr=nr+1 filename="bar-"+str(nr)+".png" except: "nooo" py.image.save_as(fig, filename=app.config['UPLOAD_FOLDER']+"/"+filename) return filename
def plotLineGraphTotal(users,last_number): [now,tomorrow]=getTiming() scores={} count_usr=0 dates=[] questions={} games_total={} Q1_ranges=[] Q4_ranges=[] Q9_ranges=[] Q11_ranges=[] endDate=datetime.datetime.strptime('11-07-2016', '%d-%m-%Y') for username in users: count_usr=count_usr+1 startDate=datetime.datetime.strptime('10-06-2016', '%d-%m-%Y') user=User.query.filter_by(userName=username).first() usr_games_winner=[] usr_games_exact=[] usr_games_total=[] count=0 while startDate.date() <= now.date() and startDate.date()<= endDate.date(): if count_usr==1: dates.append(datetime.datetime.strftime(startDate.date(), '%d-%m-%Y')) games=Games.query.filter_by(date=startDate.date()).all() if count==0: usr_games_exact.append(0) usr_games_winner.append(0) usr_games_total.append(0) else: usr_games_exact.append(usr_games_exact[count-1]) usr_games_winner.append(usr_games_winner[count-1]) usr_games_total.append(usr_games_total[count-1]) for game in games: #EXACT SCORE userScore=Scores.query.filter_by(parent_id=user.user_id)\ .filter_by(game=game.game).first() if userScore!=None: if userScore.score == game.score and game.score!='-' and game.score!='': print "eeeela" usr_games_exact[count]= usr_games_exact[count]+7 else: #WINNERS try: score_left=int(userScore.score.split('-')[0]) score_right=int(userScore.score.split('-')[1]) game_score_left=int(game.score.split('-')[0]) game_score_right=int(game.score.split('-')[1]) if game_score_left>game_score_right: game_winner=game.teamHome if game_score_left<game_score_right: game_winner=game.teamAway if game_score_left==game_score_right: game_winner='tie' if score_left>score_right: winner=game.teamHome if score_left<score_right: winner=game.teamAway if score_left==score_right: winner='tie' if winner==game_winner: usr_games_winner[count]= usr_games_winner[count]+3 except: "no integers possible, scores not filled in yet" usr_games_total[count]=usr_games_exact[count]+\ usr_games_winner[count] startDate= startDate + datetime.timedelta(days=1) count=count+1 scores[user.userName]=usr_games_total #QUESTIONS user=User.query.filter_by(userName=username).first() all_questions=UserQuestions.query.filter_by(parent_id=user.user_id).all() usr_questions=0 for item in all_questions: question=Questions.query.filter_by(id=item.answer_id).first() if question.id not in [1,4,5,9,11]: if item.answer == question.answer and question.answer!='' and question.answer!=None\ and question.answer != 'empty': usr_questions = usr_questions+10 elif question.id == 5: import ast try: answers=ast.literal_eval(question.answer) usr_answers = ast.literal_eval(item.answer) for ans in answers: count=0 if answers[ans]==usr_answers[ans] and answers[ans]!='' and answers[ans]!=None\ and answers[ans] != 'empty': usr_questions = usr_questions+4 except: "noope" elif question.id in [1,4,9,11]: #check range from actual answer if question.answer!='' and question.answer!=None\ and question.answer != 'empty' and item.answer!='' and item.answer!=None\ and item.answer != 'empty': ans_range=abs(int(item.answer)-int(question.answer)) if question.id==1: Q1_ranges.append((user.userName,ans_range)) if question.id==4: Q4_ranges.append((user.userName,ans_range)) if question.id==9: Q9_ranges.append((user.userName,ans_range)) if question.id==11: Q11_ranges.append((user.userName,ans_range)) questions[user.userName]=usr_questions try: # min_range_Q1 = min(Q1_ranges, key=lambda x: x[1]) Q1_ranges.sort(key=lambda x: x[1]) questions[Q1_ranges[0][0]]=questions[Q1_ranges[0][0]]+10 for i in range(1,len(Q1_ranges)-1): if Q1_ranges[i][1]==Q1_ranges[i-1][1]: questions[Q1_ranges[i][0]]=questions[Q1_ranges[i][0]]+10 else: break Q4_ranges.sort(key=lambda x: x[1]) questions[Q4_ranges[0][0]]=questions[Q4_ranges[0][0]]+10 for i in range(1,len(Q4_ranges)-1): if Q4_ranges[i][1]==Q4_ranges[i-1][1]: questions[Q4_ranges[i][0]]=questions[Q4_ranges[i][0]]+10 else: break Q9_ranges.sort(key=lambda x: x[1]) questions[Q9_ranges[0][0]]=questions[Q9_ranges[0][0]]+10 if len(Q9_ranges)>=5: end=5 else: end=len(Q9_ranges) count=0 for i in range(1,end): last_score=10 if Q9_ranges[i][1]==Q9_ranges[i-1][1] and count<5: questions[Q9_ranges[i][0]]=questions[Q9_ranges[i][0]]+last_score count=count+1 elif count<5: last_score=last_score-2*i questions[Q9_ranges[i][0]]=questions[Q9_ranges[i][0]]+last_score count=count+1 else: break Q11_ranges.sort(key=lambda x: x[1]) questions[Q11_ranges[0][0]]=questions[Q11_ranges[0][0]]+10 for i in range(1,len(Q11_ranges)-1): if Q11_ranges[i][1]==Q11_ranges[i-1][1]: questions[Q11_ranges[i][0]]=questions[Q11_ranges[i][0]]+10 else: break except: "nothing here yet" basedir = os.path.abspath(os.path.dirname(__file__)) start=datetime.datetime.strptime('10-06-2016', '%d-%m-%Y') if now.date() >= start.date(): for username in users: scores[username]=[x+questions[username] for x in scores[username]] import plotly.plotly as py import plotly.graph_objs as go py.sign_in('Baekel', 'fhhezplvr3') data=[] for item in scores: trace = go.Scatter( x = dates, y = scores[item], name = item ) data.append(trace) # Edit the layout layout = dict(title = 'Line graph of total points (up untill today)', xaxis = dict(title = 'Dates'), yaxis = dict(title = 'Points'), ) try: nr=int(last_number) nr=nr+1 filename="line-"+str(nr)+".png" except: "nooo" fig = dict(data=data, layout=layout) py.image.save_as(fig, filename=app.config['UPLOAD_FOLDER']+"/"+filename) return filename
def rankings(): [now,tomorrow]=getTiming() basedir = os.path.abspath(os.path.dirname(__file__)) homedir = os.path.abspath(os.path.join(basedir, os.pardir)) with open(homedir+'/admin/update/showGamesExact1.json') as f: showGamesExact = json.load(f) with open(homedir+'/admin/update/showGamesWinner1.json') as f: showGamesWinner = json.load(f) with open(homedir+'/admin/update/games_winner1.json') as f: games_winner = json.load(f) with open(homedir+'/admin/update/games_exact1.json') as f: games_exact = json.load(f) with open(homedir+'/admin/update/table1.json') as f: table = json.load(f) with open(homedir+'/admin/update/tableScores1.json') as f: tableScores = json.load(f) with open(homedir+'/admin/update/questions1.json') as f: questions = json.load(f) from operator import itemgetter table=sorted(table, key=itemgetter(1),reverse=True) tableScores=sorted(tableScores, key=itemgetter(1),reverse=True) today= datetime.datetime.strftime(now.date(), "%A-%d %B %Y").split('-') ############################################ scores=Games.query.all() scores.sort(key=lambda x: x.date) scores_MD1=[] scores_MD2=[] scores_MD3=[] scores_MD4=[] scores_MD5=[] scores_MD6=[] scores_MD7=[] count1=0 count2=0 count3=0 count4=0 count5=0 count6=0 count7=0 for i in range(len(scores)): if scores[i].game[0:3] =='MD1': scores_MD1.append(scores[i]) scores_MD1[count1].time=str(scores_MD1[count1].time)[0:5] scores_MD1[count1].date=datetime.datetime.strftime(scores_MD1[count1].date, "%d-%m-%Y") count1=count1+1 if scores[i].game[0:3]=='MD2': scores_MD2.append(scores[i]) scores_MD2[count2].time=str(scores_MD2[count2].time)[0:5] scores_MD2[count2].date=datetime.datetime.strftime(scores_MD2[count2].date, "%d-%m-%Y") count2=count2+1 if scores[i].game[0:3] =='MD3': scores_MD3.append(scores[i]) scores_MD3[count3].time=str(scores_MD3[count3].time)[0:5] scores_MD3[count3].date=datetime.datetime.strftime(scores_MD3[count3].date, "%d-%m-%Y") count3=count3+1 if scores[i].game[0:3] =='MD4': scores_MD4.append(scores[i]) scores_MD4[count4].time=str(scores_MD4[count4].time)[0:5] scores_MD4[count4].date=datetime.datetime.strftime(scores_MD4[count4].date, "%d-%m-%Y") count4=count4+1 if scores[i].game[0:3]=='MD5': scores_MD5.append(scores[i]) scores_MD5[count5].time=str(scores_MD5[count5].time)[0:5] scores_MD5[count5].date=datetime.datetime.strftime(scores_MD5[count5].date, "%d-%m-%Y") count5=count5+1 if scores[i].game[0:3] =='MD6': scores_MD6.append(scores[i]) scores_MD6[count6].time=str(scores_MD6[count6].time)[0:5] scores_MD6[count6].date=datetime.datetime.strftime(scores_MD6[count6].date, "%d-%m-%Y") count6=count6+1 if scores[i].game[0:3] =='MD7': scores_MD7.append(scores[i]) scores_MD7[count7].time=str(scores_MD7[count7].time)[0:5] scores_MD7[count7].date=datetime.datetime.strftime(scores_MD7[count7].date, "%d-%m-%Y") count7=count7+1 return render_template('rankings.html',games_exact=games_exact,games_winner=games_winner,\ today=today,table=table,showGamesExact=showGamesExact,\ showGamesWinner=showGamesWinner, scores_MD1=scores_MD1,\ scores_MD2=scores_MD2, scores_MD3=scores_MD3,\ scores_MD4=scores_MD4, scores_MD5=scores_MD5, \ scores_MD6=scores_MD6, scores_MD7=scores_MD7,tableScores=tableScores)
def questions(): [now,tomorrow]=getTiming() questions={} showQuestions={} question_table=[] answer_range={} Q1_ranges=[] Q4_ranges=[] Q9_ranges=[] Q11_ranges=[] users=User.query.all() for user in users: all_questions=UserQuestions.query.filter_by(parent_id=user.user_id).all() usr_questions=[0,[]] answer_range[user.userName]=[] for item in all_questions: question=Questions.query.filter_by(id=item.answer_id).first() if question.id not in [1,4,5,9,11,10]: if item.answer == question.answer and question.answer!='' and question.answer!=None\ and question.answer != 'empty': usr_questions[0] = usr_questions[0]+10 usr_questions[1].append(item.answer_id) elif question.id == 5: import ast try: answers=ast.literal_eval(question.answer) usr_answers = ast.literal_eval(item.answer) for ans in answers: count=0 if answers[ans]==usr_answers[ans] and answers[ans]!='' and answers[ans]!=None\ and answers[ans] != 'empty': usr_questions[0] = usr_questions[0]+4 if count == 0: usr_questions[1].append([item.answer_id,ans]) else: usr_questions[1][-1].append(ans) count=1 except: "noope" elif question.id==10: if item.answer in ['Switzerland','Poland','Italy']: usr_questions[0] = usr_questions[0]+10 usr_questions[1].append(item.answer_id) elif question.id in [1,4,9,11]: #check range from actual answer if question.answer!='' and question.answer!=None\ and question.answer != 'empty' and item.answer!='' and item.answer!=None\ and item.answer != 'empty': ans_range=abs(int(item.answer)-int(question.answer)) if question.id==1: Q1_ranges.append((user.userName,ans_range)) if question.id==4: Q4_ranges.append((user.userName,ans_range)) if question.id==9: Q9_ranges.append((user.userName,ans_range)) if question.id==11: Q11_ranges.append((user.userName,ans_range)) questions[user.userName]=usr_questions #question_id that a user answered correctly try: # min_range_Q1 = min(Q1_ranges, key=lambda x: x[1]) Q1_ranges.sort(key=lambda x: x[1]) questions[Q1_ranges[0][0]][0]=questions[Q1_ranges[0][0]][0]+10 questions[Q1_ranges[0][0]][1].append(1) for i in range(1,len(Q1_ranges)-1): if Q1_ranges[i][1]==Q1_ranges[i-1][1]: questions[Q1_ranges[i][0]][0]=questions[Q1_ranges[i][0]][0]+10 questions[Q1_ranges[i][0]][1].append(1) else: break Q4_ranges.sort(key=lambda x: x[1]) questions[Q4_ranges[0][0]][0]=questions[Q4_ranges[0][0]][0]+10 questions[Q4_ranges[0][0]][1].append(4) for i in range(1,len(Q4_ranges)-1): if Q4_ranges[i][1]==Q4_ranges[i-1][1]: questions[Q4_ranges[i][0]][0]=questions[Q4_ranges[i][0]][0]+10 questions[Q4_ranges[i][0]][1].append(4) else: break Q9_ranges.sort(key=lambda x: x[1]) questions[Q9_ranges[0][0]][0]=questions[Q9_ranges[0][0]][0]+10 questions[Q9_ranges[0][0]][1].append('9-'+str(10)) if len(Q9_ranges)>=5: end=5 else: end=len(Q9_ranges) count=0 for i in range(1,end): last_score=10 if Q9_ranges[i][1]==Q9_ranges[i-1][1] and count<5: questions[Q9_ranges[i][0]][0]=questions[Q9_ranges[i][0]][0]+last_score questions[Q9_ranges[i][0]][1].append('9-'+str(last_score)) count=count+1 elif count<5: last_score=last_score-2*i questions[Q9_ranges[i][0]][0]=questions[Q9_ranges[i][0]][0]+last_score questions[Q9_ranges[i][0]][1].append('9-'+str(last_score)) count=count+1 else: break Q11_ranges.sort(key=lambda x: x[1]) questions[Q11_ranges[0][0]][0]=questions[Q11_ranges[0][0]][0]+10 questions[Q11_ranges[0][0]][1].append(11) for i in range(1,len(Q11_ranges)-1): if Q11_ranges[i][1]==Q11_ranges[i-1][1]: questions[Q11_ranges[i][0]][0]=questions[Q11_ranges[i][0]][0]+10 questions[Q11_ranges[i][0]][1].append(11) else: break except: "no scores entered yet" for user in users: showQuestions[user.userName]=questions[user.userName][1] question_table.append([user, questions[user.userName][0]]) from operator import itemgetter question_table=sorted(question_table, key=itemgetter(1),reverse=True) basedir = os.path.abspath(os.path.dirname(__file__)) with open(basedir+'/checkout/showQuestions.json', 'w') as fp: json.dump(showQuestions, fp) today= datetime.datetime.strftime(now.date(), "%A-%d %B %Y").split('-') questions_correct=Questions.query.all() questions_correct.sort(key=lambda x: x.id) question5=Questions.query.filter_by(id=5).first() try: import ast quest5=ast.literal_eval(question5.answer) except: quest5={'A': '', 'C': '', 'B': '', 'E': '', 'D': '', 'F': ''} return render_template('questions.html',questions=questions,showQuestions=showQuestions,\ question_table=question_table,today=today,\ questions_correct=questions_correct,quest5=quest5)
def editScoresGF(m): [now,tomorrow]=getTiming() form_MD1 = ScoresFormMD1(request.form) form_MD2= ScoresFormMD2(request.form) form_MD3= ScoresFormMD3(request.form) form=request.form games_MD1=[] games_MD2=[] games_MD3=[] save=[None,m,[]] #later save[2] will be expanded with the games with integer errors #later save[3] is the amount of saved games saved_MD1=0 saved_MD2=0 saved_MD3=0 user=User.query.filter_by(userName=session['userName']).first() user_id=db.session.query(User).filter_by(userName=session['userName']).first().user_id games=db.session.query(Games).filter_by(fase="group stage").all() games.sort(key=lambda x: (x.date,x.time)) thisScores=[] if request.method =='POST': error=None thisScores=[['','']]*len(list(games)) if user.activated==True: for item in request.form: if request.form[item]!='' and request.form[item]!=u'': try: int(request.form[item]) if int(request.form[item])<0: save[0]=False save[2].append(int(item[8:10])) except: save[0]=False save[2].append(int(item[8:10])) if save[0]!=False: save[0]=True save[2].sort() if save[0]==True: # #Update try: getScoresGF(form,user,user_id) except: "no forms" scores=db.session.query(Scores).filter_by(userName=user.userName)\ .filter_by(fase='group stage').all() [thisScores,saved_MD1,saved_MD2,saved_MD3]=updateScoreFormsGS(scores,\ thisScores,saved_MD1,saved_MD2,saved_MD3) else: #IN THIS CASE THERE IS AN ERROR INPUT, A NON-INTEGER (however '' or u'' are not errored) thisScores=[['','']]*len(list(games)) scores=db.session.query(Scores).filter_by(userName=user.userName)\ .filter_by(fase='group stage').all() [saved_MD1,saved_MD2,saved_MD3]=updateScoreFormsWithErrorGS(scores,\ saved_MD1,saved_MD2,saved_MD3) for item in request.form: if str(item)[6]=='1': if item[11] == 'l': thisScores[int(item[8:10])-1]=[request.form[item],thisScores[int(item[8:10])-1][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1]=[thisScores[int(item[8:10])-1][0],request.form[item]] if str(item)[6]=='2': if item[11] == 'l': thisScores[int(item[8:10])-1+12]=[request.form[item],thisScores[int(item[8:10])-1+12][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1+12]=[thisScores[int(item[8:10])-1+12][0],request.form[item]] if str(item)[6]=='3': if item[11] == 'l': thisScores[int(item[8:10])-1+24]=[request.form[item],thisScores[int(item[8:10])-1+24][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1+24]=[thisScores[int(item[8:10])-1+24][0],request.form[item]] else: #NOT YET ACTIVATED error=""" Your account is not yet activated. You can checkout the app, but your input won't be saved since the payment is not yet confirmed. """ for item in games: if item.date <= now.date(): item.deadlinePassed=True else: item.deadlinePassed=False if item.game[0:3]=="MD1": games_MD1.append(item) if item.game[0:3]=="MD2": games_MD2.append(item) if item.game[0:3]=="MD3": games_MD3.append(item) item.date=datetime.datetime.strftime(item.date, "%A-%d %B %Y").split('-') item.time=str(item.time)[0:5].replace(':','h') return render_template('editScoresGF.html', form_MD1=form_MD1,form_MD2=form_MD2,form_MD3=form_MD3,\ save=save,scores=thisScores, saved_MD1=saved_MD1,saved_MD2=saved_MD2,saved_MD3=saved_MD3,\ games_MD1=games_MD1,games_MD2=games_MD2,games_MD3=games_MD3,error=error) if request.method == 'GET': error=None scores=db.session.query(Scores).filter_by(userName=user.userName)\ .filter_by(fase='group stage').all() thisScores=[['','']]*len(list(games)) [thisScores,saved_MD1,saved_MD2,saved_MD3]=updateScoreFormsGS(scores,\ thisScores,saved_MD1,saved_MD2,saved_MD3) for item in games: if item.date <= now.date(): item.deadlinePassed=True else: item.deadlinePassed=False if item.game[0:3]=="MD1": games_MD1.append(item) if item.game[0:3]=="MD2": games_MD2.append(item) if item.game[0:3]=="MD3": games_MD3.append(item) item.date=datetime.datetime.strftime(item.date, "%A-%d %B %Y").split('-') item.time=str(item.time)[0:5].replace(':','h') return render_template('editScoresGF.html', form_MD1=form_MD1,form_MD2=form_MD2,form_MD3=form_MD3,\ save=save,scores=thisScores, saved_MD1=saved_MD1,saved_MD2=saved_MD2,saved_MD3=saved_MD3,\ games_MD1=games_MD1,games_MD2=games_MD2,games_MD3=games_MD3,error=error)
def editScoresKF(m): [now,tomorrow]=getTiming() form_R16 = GamesR16Form(request.form) form_QF= GamesQFForm(request.form) form_SF= GamesSFForm(request.form) form_F= GamesFForm(request.form) form=request.form save=[None,m,[]] #later save[2] will be expanded with the games with integer errors #later save[3] is the amount of saved games saved_MD4=0 saved_MD5=0 saved_MD6=0 saved_MD7=0 user=User.query.filter_by(userName=session['userName']).first() user_id=db.session.query(User).filter_by(userName=session['userName']).first().user_id games=db.session.query(Games).filter_by(groep='N/A').all() if request.method =='POST': error=None thisScores=[['','']]*len(list(games)) if user.activated==True: for item in request.form: if request.form[item]!='' and request.form[item]!=u'': try: int(request.form[item]) if int(request.form[item])<0: save[0]=False save[2].append(int(item[8:10])) except: save[0]=False save[2].append(int(item[8:10])) if save[0]!=False: save[0]=True save[2].sort() if save[0]==True: # #Update try: getScoresKF(form,user,user_id) except: "nooo" scores=db.session.query(Scores).filter_by(userName=user.userName)\ .filter_by(groep='N/A').all() [thisScores,saved_MD4,saved_MD5,saved_MD6,saved_MD7]=updateScoreFormsKP(scores,\ thisScores,saved_MD4,saved_MD5,saved_MD6,saved_MD7) else: #IN THIS CASE THERE IS AN ERROR INPUT, A NON-INTEGER (however '' or u'' are not errored) thisScores=[['','']]*len(list(games)) scores=db.session.query(Scores).filter_by(userName=user.userName)\ .filter_by(groep='N/A').all() [saved_MD4,saved_MD5,saved_MD6,saved_MD7]=updateScoreFormsWithErrorKP(scores,\ saved_MD4,saved_MD5,saved_MD6,saved_MD7) for item in request.form: if str(item)[6]=='4': if item[11] == 'l': thisScores[int(item[8:10])-1]=[request.form[item],thisScores[int(item[8:10])-1][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1]=[thisScores[int(item[8:10])-1][0],request.form[item]] if str(item)[6]=='5': if item[11] == 'l': thisScores[int(item[8:10])-1+8]=[request.form[item],thisScores[int(item[8:10])-1+8][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1+8]=[thisScores[int(item[8:10])-1+8][0],request.form[item]] if str(item)[6]=='6': if item[11] == 'l': thisScores[int(item[8:10])-1+12]=[request.form[item],thisScores[int(item[8:10])-1+12][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1+12]=[thisScores[int(item[8:10])-1+12][0],request.form[item]] if str(item)[6]=='7': if item[11] == 'l': thisScores[int(item[8:10])-1+14]=[request.form[item],thisScores[int(item[8:10])-1+14][1]] elif item[11] == 'r': thisScores[int(item[8:10])-1+14]=[thisScores[int(item[8:10])-1+14][0],request.form[item]] else: #NOT ACTIVATED YET error=""" Your account is not yet activated. You can checkout the app, but your input won't be saved since the payment is not yet confirmed.""" games_R16=db.session.query(Games).filter_by(fase='R16').all() games_R16.sort(key=lambda x: (x.date,x.time)) games_QF=db.session.query(Games).filter_by(fase='QF').all() games_QF.sort(key=lambda x: (x.date,x.time)) games_SF=db.session.query(Games).filter_by(fase='SF').all() games_SF.sort(key=lambda x: (x.date,x.time)) games_F=db.session.query(Games).filter_by(fase='F').all() games_F.sort(key=lambda x: (x.date,x.time)) for item in games: if item.date <= now.date(): item.deadlinePassed=True else: item.deadlinePassed=False item.date=datetime.datetime.strftime(item.date, "%A-%d %B %Y").split('-') item.time=str(item.time)[0:5].replace(':','h') return render_template('editScoresKF.html', form_R16=form_R16,form_QF=form_QF,form_SF=form_SF,\ form_F=form_F,save=save,scores=thisScores,\ saved_MD4=saved_MD4,saved_MD5=saved_MD5,saved_MD6=saved_MD6,saved_MD7=saved_MD7,\ games_R16=games_R16,games_QF=games_QF,games_SF=games_SF,games_F=games_F,error=error) if request.method == 'GET': error=None scores=db.session.query(Scores).filter_by(userName=user.userName)\ .filter_by(groep='N/A').all() thisScores=[['','']]*len(list(games)) [thisScores,saved_MD4,saved_MD5,saved_MD6,saved_MD7]=updateScoreFormsKP(scores,\ thisScores,saved_MD4,saved_MD5,saved_MD6,saved_MD7) games_R16=db.session.query(Games).filter_by(fase='R16').all() games_R16.sort(key=lambda x: (x.date,x.time)) games_QF=db.session.query(Games).filter_by(fase='QF').all() games_QF.sort(key=lambda x: (x.date,x.time)) games_SF=db.session.query(Games).filter_by(fase='SF').all() games_SF.sort(key=lambda x: (x.date,x.time)) games_F=db.session.query(Games).filter_by(fase='F').all() games_F.sort(key=lambda x: (x.date,x.time)) for item in games: if item.date <= now.date(): item.deadlinePassed=True else: item.deadlinePassed=False item.date=datetime.datetime.strftime(item.date, "%A-%d %B %Y").split('-') item.time=str(item.time)[0:5].replace(':','h') return render_template('editScoresKF.html', form_R16=form_R16,form_QF=form_QF,form_SF=form_SF,\ form_F=form_F,save=save,scores=thisScores,\ saved_MD4=saved_MD4,saved_MD5=saved_MD5,saved_MD6=saved_MD6,saved_MD7=saved_MD7,\ games_R16=games_R16,games_QF=games_QF,games_SF=games_SF,games_F=games_F,error=error)
def get_total_points(): [now,tomorrow]=getTiming() games_winner={} games_exact={} table=[] tableScores=[] showGamesExact={} showGamesWinner={} questions={} Q1_ranges=[] Q4_ranges=[] Q9_ranges=[] Q11_ranges=[] users=User.query.all() for user in users: if user.user_id not in [67,26,28,24,27]: scores=Scores.query.filter_by(parent_id=user.user_id).all() usr_games_winner=[0,[]] usr_games_exact=[0,[]] usr_showGamesExact=[] usr_showGamesWinner=[] #SCORES #------------------------------------------------------# for item in scores: game=Games.query.filter_by(game=item.game).first() if item.date <= now.date(): #EXACT SCORE if item.score == game.score and game.score!='-' and game.score!='': usr_games_exact[0]= usr_games_exact[0]+7 usr_games_exact[1].append(item.game) usr_showGamesExact.append(game.game) else: #WINNERS try: score_left=int(item.score.split('-')[0]) score_right=int(item.score.split('-')[1]) game_score_left=int(game.score.split('-')[0]) game_score_right=int(game.score.split('-')[1]) if game_score_left>game_score_right: game_winner=game.teamHome if game_score_left<game_score_right: game_winner=game.teamAway if game_score_left==game_score_right: game_winner='tie' if score_left>score_right: winner=game.teamHome if score_left<score_right: winner=game.teamAway if score_left==score_right: winner='tie' if winner==game_winner: usr_games_winner[0]= usr_games_winner[0]+3 usr_games_winner[1].append(item.game) usr_showGamesWinner.append(game.game) except: "no integers possible, scores not filled in yet" games_exact[user.user_id]=usr_games_exact games_winner[user.user_id]=usr_games_winner showGamesExact[user.userName]=usr_showGamesExact showGamesWinner[user.userName]=usr_showGamesWinner # # table.append([user,usr_games_exact[0]+usr_games_winner[0],usr_games_exact[0],\ # usr_games_winner[0]]) #Questions #------------------------------------------------------# all_questions=UserQuestions.query.filter_by(parent_id=user.user_id).all() usr_questions=0 for item in all_questions: question=Questions.query.filter_by(id=item.answer_id).first() if question.id not in [1,4,5,9,11,10]: if item.answer == question.answer and question.answer!='' and question.answer!=None\ and question.answer != 'empty': usr_questions = usr_questions+10 elif question.id == 5: import ast try: answers=ast.literal_eval(question.answer) usr_answers = ast.literal_eval(item.answer) for ans in answers: count=0 if answers[ans]==usr_answers[ans] and answers[ans]!='' and answers[ans]!=None\ and answers[ans] != 'empty': usr_questions = usr_questions+4 except: "noope" elif question.id==10: if item.answer in ['Switzerland','Poland','Italy']: usr_questions = usr_questions+10 elif question.id in [1,4,9,11]: #check range from actual answer if question.answer!='' and question.answer!=None\ and question.answer != 'empty' and item.answer!='' and item.answer!=None\ and item.answer != 'empty': print item.answer print question.answer ans_range=abs(int(item.answer)-int(question.answer)) if question.id==1: Q1_ranges.append((user.userName,ans_range)) if question.id==4: Q4_ranges.append((user.userName,ans_range)) if question.id==9: Q9_ranges.append((user.userName,ans_range)) if question.id==11: Q11_ranges.append((user.userName,ans_range)) questions[user.userName]=usr_questions #NOW FOR THE CLOSEST RANGE QUESTIONS: try: Q1_ranges.sort(key=lambda x: x[1]) questions[Q1_ranges[0][0]]=questions[Q1_ranges[0][0]]+10 for i in range(1,len(Q1_ranges)-1): if Q1_ranges[i][1]==Q1_ranges[i-1][1]: questions[Q1_ranges[i][0]]=questions[Q1_ranges[i][0]]+10 else: break Q4_ranges.sort(key=lambda x: x[1]) questions[Q4_ranges[0][0]]=questions[Q4_ranges[0][0]]+10 for i in range(1,len(Q4_ranges)-1): if Q4_ranges[i][1]==Q4_ranges[i-1][1]: questions[Q4_ranges[i][0]]=questions[Q4_ranges[i][0]]+10 else: break Q9_ranges.sort(key=lambda x: x[1]) questions[Q9_ranges[0][0]]=questions[Q9_ranges[0][0]]+10 if len(Q9_ranges)>=5: end=5 else: end=len(Q9_ranges) count=0 for i in range(1,end): last_score=10 if Q9_ranges[i][1]==Q9_ranges[i-1][1] and count<5: questions[Q9_ranges[i][0]]=questions[Q9_ranges[i][0]]+last_score count=count+1 elif count<5: last_score=last_score-2*i questions[Q9_ranges[i][0]]=questions[Q9_ranges[i][0]]+last_score count=count+1 else: break Q11_ranges.sort(key=lambda x: x[1]) questions[Q11_ranges[0][0]]=questions[Q11_ranges[0][0]]+10 for i in range(1,len(Q11_ranges)-1): if Q11_ranges[i][1]==Q11_ranges[i-1][1]: questions[Q11_ranges[i][0]]=questions[Q11_ranges[i][0]]+10 else: break except: "nothing here yet" #---------------------------------------------------------------# for user in users: if user.user_id not in [67,26,28,24,27]: table.append([user.firstName+' '+user.lastName,games_exact[user.user_id][0]+games_winner[user.user_id][0]+\ questions[user.userName],games_exact[user.user_id][0],games_winner[user.user_id][0],\ questions[user.userName],user.userName]) tableScores.append([user.firstName+' '+user.lastName,games_exact[user.user_id][0]+games_winner[user.user_id][0],\ games_exact[user.user_id][0],games_winner[user.user_id][0],user.userName]) return [games_winner, games_exact, table, tableScores,\ showGamesExact, showGamesWinner,questions]
def editQuestions(): [now,tomorrow]=getTiming() form = AnswerForm(request.form) rform=request.form user=User.query.filter_by(userName=session['userName']).first() deadlinePassed=False firstGame=Games.query.filter_by(game='MD1-G01').first() startDate=firstGame.date if now.date()>=startDate: deadlinePassed=True saved=0 save=None if request.method =='POST': error=None if user.activated==True: getAnswers(rform,user) questions=UserQuestions.query.filter_by(parent_id=user.user_id).all() # answers_ned=['']*len(questions) # answers_en=['']*len(questions) # postman=[0]*len(questions) for item in questions: if str(item.answer_id) =='5': import ast answer5=ast.literal_eval(item.answer) for item in answer5: if answer5[item]!='empty' and answer5[item]!='' and answer5[item]!=None: saved=saved+1 else: if item.answer !='empty' and item.answer!='' and item.answer!=None: saved=saved+1 save=True else: #user not activated error=""" Your account is not yet activated. You can checkout the app, but your input won't be saved since the payment is not yet confirmed.""" questions=Questions.query.all() questions.sort(key=lambda x: x.id) return render_template('editQuestions.html', form=form,questions=questions,saved=saved,\ save=save,\ deadlinePassed=deadlinePassed,error=error) if request.method == 'GET': error=None questions=UserQuestions.query.filter_by(parent_id=user.user_id).all() # answers_ned=['']*len(questions) # answers_en=['']*len(questions) # postman=[0]*len(questions) for item in questions: if str(item.answer_id) =='5': import ast answer5=ast.literal_eval(item.answer) form["answer5A"].default=answer5['A'] form["answer5B"].default=answer5['B'] form["answer5C"].default=answer5['C'] form["answer5D"].default=answer5['D'] form["answer5E"].default=answer5['E'] form["answer5F"].default=answer5['F'] for item in answer5: if answer5[item]!='empty' and answer5[item]!='' and answer5[item]!=None: saved=saved+1 else: form['answer{0}'.format(item.answer_id)].default=item.answer if item.answer !='empty' and item.answer!='' and item.answer!=None: saved=saved+1 form.process() questions=Questions.query.all() questions.sort(key=lambda x: x.id) return render_template('editQuestions.html', form=form,questions=questions,saved=saved,\ save=save, \ deadlinePassed=deadlinePassed,error=error)
def appHome(): [now, tomorrow] = getTiming() # now=datetime.datetime.now() # tomorrow= now + datetime.timedelta(days=1) # # now= now + datetime.timedelta(days=56) # tomorrow= now + datetime.timedelta(days=1) # now=datetime.datetime.now() # tomorrow= now + datetime.timedelta(days=1) # now=datetime.datetime.strptime('10-06-2016', '%d-%m-%Y') # tomorrow= now + datetime.timedelta(days=1) games = Games.query.all() gamesToday = [] gamesTomorrow = [] countToday = 0 countTomorrow = 0 checkToday = False checkTomorrow = False user = User.query.filter_by(userName=session["userName"]).first() todayEntered = None tomorrowEntered = None for i in range(len(games)): if games[i].date >= now.date() and games[i].date < tomorrow.date(): game = Scores.query.filter_by(parent_id=user.user_id).filter_by(game=games[i].game).first() if game != None and game.score != "" and game.score != "-": gamesToday.append(game) else: gamesToday.append(games[i]) todayEntered = False countToday = countToday + 1 checkToday = True if games[i].date > now.date() and games[i].date <= tomorrow.date(): game = Scores.query.filter_by(parent_id=user.user_id).filter_by(game=games[i].game).first() if game != None and game.score != "" and game.score != "-": gamesTomorrow.append(game) else: gamesTomorrow.append(games[i]) tomorrowEntered = False countTomorrow = countTomorrow + 1 checkTomorrow = True knock = False for item in gamesToday: item.time = str(item.time)[0:5] item.date = datetime.datetime.strftime(item.date, "%d-%m-%Y") for item in gamesTomorrow: if item.date > datetime.datetime.strptime("24-06-2016", "%d-%m-%Y").date(): knock = True item.time = str(item.time)[0:5] item.date = datetime.datetime.strftime(item.date, "%d-%m-%Y") date = datetime.datetime.strftime(now.date(), "%A %d %B %Y") return render_template( "appHome.html", gamesToday=gamesToday, gamesTomorrow=gamesTomorrow, checkToday=checkToday, checkTomorrow=checkTomorrow, date=date, todayEntered=todayEntered, tomorrowEntered=tomorrowEntered, knock=knock, )