def recoverAccount(request): if request.user.is_authenticated(): return HttpResponseRedirect('/my-tournaments/') try: lang = strLang() except: lang = '' # Info about user user_me = request.user if request.method == 'POST': recoverUserForm = RecoverUserForm(request.POST, request=request) # A form bound to the POST data if recoverUserForm.is_valid(): user = User.objects.get(username=request.POST['username'], email=request.POST['email']) rkey = "".join(random.sample(string.letters+string.digits, 16)) recoverUser = RecoverUser(user=user,code=rkey) recoverUser.save() # We show a notification user try: box = setBox('success_recover_account_email_sent') except: box = '' recoverUserForm = RecoverUserForm() notify_user(user, 'recover_user', recoverUser) return render_to_response('recoveruser.html', { 'user_me': user_me, 'recoverUserForm': recoverUserForm, 'box': box, 'lang': lang, }) else: return render_to_response('recoveruser.html', { 'user_me': user_me, 'recoverUserForm': recoverUserForm, 'lang': lang, }) else: # If get request, generate a new form recoverUserForm = RecoverUserForm() # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('recoveruser.html', { 'user_me': user_me, 'recoverUserForm': recoverUserForm, 'lang': lang, 'box': box, })
def myQuestionReviews(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') # Load strings language to template questionreviews.html try: lang = strLang() except: lang = '' if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # SIDEBAR AND MENU INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) user_me = UserProfile.objects.get(user=request.user) pendingQR = myAdminPendingQuestionReviews(request.user) # My personal question reviews myQuestionReviews = Question_review.objects.filter(player = request.user).order_by('-pk') # Admin question reviews myAdminQuestionReviews = [] allMyAdminTournaments = Tournament.objects.filter(admin=user_me.user) if allMyAdminTournaments: # All reviews in my Tournaments for tournament in allMyAdminTournaments: questionReviews = Question_review.objects.filter(game__round__tournament = tournament).order_by('-pk') for qr in questionReviews: myAdminQuestionReviews.append(qr) # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('myquestionreviews.html', { 'user_me': user_me, 'myQuestionReviews': myQuestionReviews, 'myAdminQuestionReviews': myAdminQuestionReviews, 'lang': lang, 'box': box, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'pendingQR': pendingQR, 'admin_user': admin_user, })
def questionReview(request,qrid): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # Check if exists try: questionReview = Question_review.objects.get(pk = qrid) except: questionReview = '' # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) user_me = UserProfile.objects.get(user=request.user) pendingQR = myAdminPendingQuestionReviews(request.user) # Load strings language to template questionreviews.html try: lang = strLang() except: lang = '' # Only for admin reply if request.method == "POST" and request.POST['resolution']: questionReview.resolution = request.POST['resolution'] questionReview.save() notify_user(questionReview.player, 'review_closed', questionReview) return HttpResponseRedirect('/question-review/' + qrid + '?status=success_resolution') else: # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('questionreview.html', { 'user_me': user_me, 'questionReview': questionReview, 'lang': lang, 'box': box, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def recoverAccountNewPassword(request, ruid): try: lang = strLang() except: lang = '' ruid = ruid.replace("#", "") if request.method == 'POST': newPasswordForm = RecoverNewPasswordForm(request.POST, request=request) # A form bound to the POST data if newPasswordForm.is_valid(): try: recoverUser = RecoverUser.objects.get(code=ruid) user = recoverUser.user user.set_password(request.POST['newpassword']) user.save() # Delete all requests from user to change password allRecoverUser = RecoverUser.objects.filter(user=user) for recoverUser in allRecoverUser: recoverUser.delete() except RecoverUser.DoesNotExist: return HttpResponseRedirect('/recover-account/?status=error_unknown_code') return HttpResponseRedirect('/register/?status=success_change_password') else: return render_to_response('recovernewpassword.html', { 'newPasswordForm': newPasswordForm, 'lang': lang, 'ruid': ruid, }) else: # If get request, generate a new form newPasswordForm = RecoverNewPasswordForm() try: recoverUser = RecoverUser.objects.get(code=ruid) except RecoverUser.DoesNotExist: return HttpResponseRedirect('/recover-account/?status=error_unknown_code') # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('recovernewpassword.html', { 'newPasswordForm': newPasswordForm, 'lang': lang, 'ruid': ruid, })
def lostGames(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') # Select all won games lostGames = Game.objects.filter(Q(player1 = request.user) | Q(player2 = request.user), ~Q(winner = request.user)).order_by('-start_time') # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) # Info about user user_me = UserProfile.objects.get(user=request.user) # Load strings language to template mynextgames.html try: lang = strLang() except: lang = '' # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False return render_to_response('lostgames.html', { 'user_me': user_me, 'box': box, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'lostGames': lostGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def LoadQuestions(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/') if not request.user.is_superuser: return HttpResponseRedirect('/') # Load strings language to template loadquestions.html try: lang = strLang() except: lang = '' if request.method == 'POST': print "POST" form = LoadQuestionsForm(request.POST, request.FILES) # Load strings language to template loadquestions.html if form.is_valid(): loadQuestionsFile(request.FILES['questions_file']) return HttpResponseRedirect('/load-questions?status=success_load_questions') else: # return render_to_response('custom/load-questions.html', { # 'user_me': request.user, # 'form': form, # 'lang': lang, # }) return HttpResponse(get_template('custom/load-questions.html').render(RequestContext(request, { 'user_me': request.user, 'form': form, 'lang': lang, }))) else: # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) return HttpResponse(get_template('custom/load-questions.html').render(RequestContext(request, { 'box': box, 'user_me': request.user, 'lang': lang, }))) except: box = '' form = LoadQuestionsForm() #return render_to_response('custom/load-questions.html', { # 'form': form, # 'box': box, # 'user_me': request.user, # 'lang': lang, #}) return HttpResponse(get_template('custom/load-questions.html').render(RequestContext(request, { 'form': form, 'box': box, 'user_me': request.user, 'lang': lang, })))
def myTournaments(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) myFinishedTournaments = myPastTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) # Player hasn't got any Tournament, redirect to Tournaments if len(myAdmnTournaments) == 0 and len(myTournaments) == 0 and len(myFinishedTournaments) == 0 and not request.user.is_superuser: return HttpResponseRedirect('/tournaments?status=info_join_tournaments') elif len(myAdmnTournaments) == 0 and len(myTournaments) == 0 and len(myFinishedTournaments) == 0 and request.user.is_superuser: return HttpResponseRedirect('/admin/new-tournament?status=info_new_tournament') dateNow = datetime.datetime.now() tournamentCategories = [] for t in myTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories tournamentCategories.append(c) adminTournamentCategories = [] for t in myAdmnTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories adminTournamentCategories.append(c) finishedTournamentCategories = [] for t in myFinishedTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories finishedTournamentCategories.append(c) # Load strings language to template mytournaments.html try: lang = strLang() except: lang = '' # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' # Info about user user_me = UserProfile.objects.get(user=request.user) if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False return render_to_response('mytournaments.html', { 'user_me': user_me, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'myFinishedTournaments': myFinishedTournaments, 'tournamentCategories': tournamentCategories, 'adminTournamentCategories': adminTournamentCategories, 'finishedTournamentCategories': finishedTournamentCategories, 'dateNow': dateNow, 'lang': lang, 'box': box, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def tournamentInfo(request, sid): try: tournament = Tournament.objects.get(sid = sid) except: return HttpResponseRedirect('/tournaments?status=error_tournament_no_exists') # Load strings language to template tournamentinfo.html try: lang = strLang() except: lang = '' if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' # SIDEBAR INFO if request.user.is_authenticated(): myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) # Info about user user_me = UserProfile.objects.get(user=request.user) pendingQR = myAdminPendingQuestionReviews(request.user) else: myTournaments = "" myAdmnTournaments = "" todayGames = "" nextGames = "" user_me = "" pendingQR = 0 # Info about Tournaments dateNow = datetime.datetime.now() name = tournament.name startDate = tournament.start_date finishDate = tournament.finish_date numberRounds = tournament.rounds rounds = Round.objects.filter(tournament = tournament).order_by('round_number') # Check if a user can join to this tournament now if startDate >= dateNow.date() and request.user != tournament.admin: for player in tournament.players.all(): if player == request.user: userJoined = True break else: userJoined = False else: userJoined = True # Generate Score Table by this Tournament allscores = Score.objects.filter(tournament = tournament).order_by('-points', '-questions_won', 'questions_lost', 'player') # Extract all info about scores and players in a Tournament scores = [] pos = 0 for userScore in allscores: userProfile = UserProfile.objects.get(user=userScore.player) user = {} user['profile'] = userProfile user['score'] = userScore.points # Create tournament positions if pos == 0: user['pos'] = pos+1 else: if scores[pos-1]['score'] == userScore.points: user['pos'] = scores[pos-1]['pos'] else: user['pos'] = pos+1 # Initializing vars for question stats user['winner_questions'] = userScore.questions_won user['loser_questions'] = userScore.questions_lost user['winner_games'] = 0 user['loser_games'] = 0 # For each user, calculate how many games did he play gamesUser = [] for r in rounds: game = Game.objects.filter(Q(round = r), Q(player1 = userProfile.user) | Q(player2 = userProfile.user)) try: #if game[0] and game[0].log: if game[0]: gamesUser.append(game) # Total points won and lost try: if game[0].winner != userScore.player: user['loser_games'] += 1 else: user['winner_games'] += 1 except: continue except: continue user['reflection_days'] = user['score'] - user['winner_games'] user['total_games'] = len(gamesUser) # Save user stats and increment counter var scores.append(user) pos += 1 # Select all games if you are admin and only user games if you aren't a superuser allGames = [] myGames = [] if tournament.admin == request.user or request.user.is_superuser: for r in rounds: games = Game.objects.filter(round = r, round__tournament = tournament) for game in games: g = {} g['rid'] = r.pk g['game'] = game allGames.append(g) else: if request.user.is_authenticated(): myGames = Game.objects.filter(Q(player1 = request.user) | Q(player2 = request.user)) else: myGames = "" return render_to_response('tournamentinfo.html', { 'user_me': user_me, 'tournament': tournament, 'name': name, 'startDate': startDate, 'finishDate': finishDate, 'dateNow': dateNow, 'numberRounds': numberRounds, 'scores': scores, 'rounds': rounds, 'myGames': myGames, 'allGames': allGames, 'lang': lang, 'box': box, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'userJoined': userJoined, # Boolean variable. Shows if a user is the admin tournament or if he/she has joined to this Tournament 'admin_user': admin_user, 'pendingQR': pendingQR, })
def tournaments(request): # Load strings language to template tournaments.html try: lang = strLang() except: lang = '' # SIDEBAR INFO if request.user.is_authenticated(): myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) user_me = UserProfile.objects.get(user=request.user) pendingQR = myAdminPendingQuestionReviews(request.user) else: myTournaments = '' myAdmnTournaments = '' todayGames = '' nextGames = '' user_me = request.user pendingQR = 0 if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' # Select all next and active Tournaments nextTournaments = Tournament.objects.exclude(start_date__lte = datetime.date.today()) activeTournaments = Tournament.objects.filter(Q(finish_date__gte = datetime.datetime.now())).order_by('-start_date') finishedTournaments = Tournament.objects.filter(Q(finish_date__lte = datetime.datetime.now())).order_by('-start_date')[:10] # Select all categories from Tournaments tournamentCategories = [] for t in nextTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories tournamentCategories.append(c) for t in activeTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories tournamentCategories.append(c) for t in finishedTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories tournamentCategories.append(c) # Select all players from Tournaments tournamentPlayers = [] return render_to_response('tournaments.html', { 'user_me': user_me, 'nextTournaments': nextTournaments, 'activeTournaments': activeTournaments, 'finishedTournaments': finishedTournaments, 'tournamentCategories': tournamentCategories, 'box': box, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def register(request): # Load strings language to template login.html try: lang = strLang() except: lang = '' if request.method == 'POST': registerForm = RegisterForm(request.POST) # A form bound to the POST data loginForm = LoginForm() if registerForm.is_valid(): user = User.objects.create_user(request.POST['username'], request.POST['email'], request.POST['password']) user.is_staff = False user.first_name = request.POST['first_name'] user.last_name = request.POST['last_name'] userProfile = UserProfile(user=user) user.save() userProfile.save() loginForm = LoginForm() registerForm = RegisterForm() # We show a notification user try: box = setBox('success_register_account') except: box = '' return render_to_response('login.html', { 'user_me': request.user, 'registerForm': registerForm, 'loginForm': loginForm, 'box': box, 'lang': lang, }) else: return render_to_response('login.html', { 'user_me': request.user, 'registerForm': registerForm, 'loginForm': loginForm, 'lang': lang, }) else: # If get request, generate a new form registerForm = RegisterForm() # An unbound form loginForm = LoginForm() # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('login.html', { 'user_me': request.user, 'registerForm': registerForm, 'loginForm': loginForm, 'lang': lang, 'box': box, })
def changePassword(request): try: lang = strLang() except: lang = '' # Info about user user_me = UserProfile.objects.get(user=request.user) # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False if request.method == 'POST': changePasswordForm = ChangePasswordForm(request.POST, request=request) # A form bound to the POST data if changePasswordForm.is_valid(): user = user_me.user user.set_password(request.POST['newpassword']) user.save() # We show a notification user try: box = setBox('success_change_password') except: box = '' changePasswordForm = ChangePasswordForm() return render_to_response('changepassword.html', { 'user_me': user_me, 'changePasswordForm': changePasswordForm, 'box': box, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, }) else: return render_to_response('changepassword.html', { 'user_me': user_me, 'changePasswordForm': changePasswordForm, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, }) else: # If get request, generate a new form changePasswordForm = ChangePasswordForm() # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('changepassword.html', { 'user_me': user_me, 'changePasswordForm': changePasswordForm, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def editProfile(request): # Load strings language to template login.html try: lang = strLang() except: lang = '' if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # Info about user user_me = UserProfile.objects.get(user=request.user) # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) if request.method == 'POST': editProfileForm = EditProfileForm(request.POST, request.FILES, request=request) # A form bound to the POST data if editProfileForm.is_valid(): user = user_me.user user.first_name = request.POST['first_name'] user.last_name = request.POST['last_name'] user.email = request.POST['email'] user.save() if 'avatar' in request.FILES: avatar = request.FILES['avatar'] user_me.avatar = avatar user_me.save() # We show a notification user try: box = setBox('success_edit_account') except: box = '' editProfileForm = EditProfileForm(initial={'first_name': user_me.user.first_name, 'last_name': user_me.user.last_name, 'email': user_me.user.email}) return render_to_response('editprofile.html', { 'user_me': user_me, 'editProfileForm': editProfileForm, 'box': box, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, }) else: return render_to_response('editprofile.html', { 'user_me': user_me, 'editProfileForm': editProfileForm, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, }) else: # If get request, generate a new form editProfileForm = EditProfileForm(initial={'first_name': request.user.first_name, 'last_name': request.user.last_name, 'email': request.user.email}) # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('editprofile.html', { 'user_me': user_me, 'editProfileForm': editProfileForm, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def newQuestionReview(request, gid): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) # Info about user user_me = UserProfile.objects.get(user=request.user) # Load strings language to template newquestionreview.html try: lang = strLang() except: lang = '' if request.method == 'POST': # If the form has been submitted... form = QuestionReviewForm(request.POST) # A form bound to the POST data if form.is_valid(): try: question = Question.objects.get(pk = request.POST['question']) game = Game.objects.get(pk = gid) except: return HttpResponseRedirect('/games/' + str(gid) + '?status=error_question_no_exists') qr = Question_review(arguments = request.POST['arguments'],question = question, game = game, player = request.user) qr.save() notify_user(game.round.tournament.admin, 'new_review', qr) return HttpResponseRedirect('/games/' + str(gid) + '?status=success_added_question_review') else: return render_to_response('newquestionreview.html', { 'user_me': user_me, 'form': form, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, }) else: # If get request, generate a new form # Only can do question reviews player1 and player2 try: game = Game.objects.get(pk = gid) except: return HttpResponseRedirect('/games/' + str(gid) + '?status=error_question_no_exists') if user_me.user == game.player1 or user_me.user == game.player2: form = QuestionReviewForm() # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('newquestionreview.html', { 'user_me': user_me, 'form': form, 'lang': lang, 'box': box, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'game': game, 'admin_user': admin_user, 'pendingQR': pendingQR, }) else: return HttpResponseRedirect('/my-tournaments')
def myNextGamesView(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') dateNow = datetime.datetime.now() if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) # Info about user user_me = UserProfile.objects.get(user=request.user) # Games haven't been played and user has joined myFutureGames = Game.objects.filter(Q(log__isnull = False), Q(start_time__gte = dateNow), Q(player1 = request.user) | Q(player2 = request.user)).order_by('-start_time') # Save all dates of my uncommitted games to select date and time to play myUncommittedGamesDate = [] # Contains all options to select in my next games for g in myFutureGames: if not g.start_time_committed and dateNow <= g.start_time: startDate = g.round.start_date finishDate = g.round.finish_date while startDate <= finishDate: # Check to show only valid dates if startDate >= dateNow.date(): d = {} d['gid'] = g.pk d['date'] = startDate myUncommittedGamesDate.append(d) startDate = startDate + timedelta(days = 1) # Extract all dates and times selected by user to show them mySelectedGamesDate = [] # Contains all options selected by user to each game opponentSelectedGamesDate = [] # Contains all options selected by opponent to each game for g in myFutureGames: if not g.start_time_committed and dateNow <= g.start_time: # Select game preferences by user mySelection = Preferred_start_time.objects.filter(Q(player = request.user), Q(game = g)) for selection in mySelection: # Extract all datetimes selected by user to show them myDateTimesSelected = Date_time.objects.filter(Q(preferred_start_time = selection)).order_by('date_time') for dateSelected in myDateTimesSelected: s = {} s['gid'] = g.pk s['date'] = dateSelected mySelectedGamesDate.append(s) # Select game preferences by opponent if g.player1 == request.user: opponent = g.player2 else: opponent = g.player1 opponentSelection = Preferred_start_time.objects.filter(Q(player = opponent), Q(game = g)) for selection in opponentSelection: # Extract all datetimes selected by opponent to show them myDateTimesSelected = Date_time.objects.filter(Q(preferred_start_time = selection)).order_by('date_time') for dateSelected in myDateTimesSelected: s = {} s['gid'] = g.pk s['date'] = dateSelected.date_time opponentSelectedGamesDate.append(s) # Load strings language to template mynextgames.html try: lang = strLang() except: lang = '' # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' return render_to_response('mynextgames.html', { 'user_me': user_me, 'myUncommittedGamesDate': myUncommittedGamesDate, 'mySelectedGamesDate': mySelectedGamesDate, 'opponentSelectedGamesDate': opponentSelectedGamesDate, 'myNextGames': myFutureGames, 'dateNow': dateNow, 'box': box, 'lang': lang, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })
def gameInfo(request, gid): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') if request.user.has_perm('fleq.quizbowl.add_tournament'): admin_user = True else: admin_user = False try: print '0' game = Game.objects.get(id = gid) print '1' tournament = game.round.tournament print '2' r = game.round.round_number print '3' startDate = game.start_time print '4' player1 = game.player1 print '5a' player2 = game.player2 print '6' if game.is_over(): winner = game.winner else: winner = "" print '7' if request.user.is_superuser or request.user == tournament.admin: questionReviews = Question_review.objects.filter(game = game) else: questionReviews = Question_review.objects.filter(game = game, player = request.user) print '8' except: game = '' tournament = '' r = '' startDate = '' player1 = '' player2 = '' winner = '' questionReviews = '' # Load strings language to template mytournaments.html try: lang = strLang() except: lang = '' # SIDEBAR INFO myTournaments = myActiveTournaments(request) myAdmnTournaments = myAdminTournaments(request) todayGames = myTodayGames(request) nextGames = myNextGames(request) pendingQR = myAdminPendingQuestionReviews(request.user) # Info about user user_me = UserProfile.objects.get(user=request.user) # Must we show a notification user? try: if request.GET['status']: box = setBox(request.GET['status']) except: box = '' print "GAME: " + game.player1.username + " " + user_me.user.username return render_to_response('gameinfo.html', { 'user_me': user_me, 'game': game, 'tournament': tournament, 'round': r, 'startDate': startDate, 'player1': player1, 'player2': player2, 'winner': winner, 'questionReviews': questionReviews, 'lang': lang, 'box': box, 'myTournaments': myTournaments, 'myAdminTournaments': myAdmnTournaments, 'todayGames': todayGames, 'nextGames': nextGames, 'admin_user': admin_user, 'pendingQR': pendingQR, })