Example #1
0
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,	
		})
Example #2
0
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,	
	})
Example #3
0
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,	
		})
Example #4
0
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,
		})
Example #5
0
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,
	})
Example #6
0
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,
		})))
Example #7
0
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,
	})
Example #8
0
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,
	})
Example #9
0
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,
	})
Example #10
0
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,
		})
Example #11
0
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,
		})
Example #12
0
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,
		})
Example #13
0
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')
Example #14
0
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,
	})
Example #15
0
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,		
	})