def clean(self): cleaned_data = super(RegisterForm, self).clean() password = self.cleaned_data.get('password') password2 = self.cleaned_data.get('password2') if password != password2: self._errors["password"] = self.error_class( [strLang()['error_register_passwords_differents']]) self._errors["password2"] = self.error_class( [strLang()['error_register_passwords_differents']]) return cleaned_data
def clean(self): cleaned_data = super(LoginForm, self).clean() username = self.cleaned_data.get('username') password = self.cleaned_data.get('password') user = authenticate(username=username, password=password) if user is not None: if not user.is_active: raise forms.ValidationError(strLang()['error_login_failed']) else: raise forms.ValidationError(strLang()['error_login_failed']) return cleaned_data
def ActiveTournaments(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/') activeTournaments = Tournament.objects.filter( start_date__lte=datetime.date.today(), finish_date__gte=datetime.date.today()).order_by('-start_date') tournamentCategories = [] for t in activeTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories tournamentCategories.append(c) # Load strings language to template mytournaments.html try: lang = strLang() except: lang = '' template = 'pc/active-tournaments.html' if request.mobile: template = 'mobile/active-tournaments.html' return render_to_response( template, { 'user_me': request.user, 'activeTournaments': activeTournaments, 'tournamentCategories': tournamentCategories, 'lang': lang, })
def clean_email(self): email = self.cleaned_data.get('email') try: email = User.objects.get(email=email) except User.DoesNotExist: return email raise forms.ValidationError(strLang()['error_register_email_exists'])
def NextGames(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/') myFutureGames = Game.objects.filter(Q(log = False), Q(player1 = request.user) | Q(player2 = request.user)).order_by('start_time') dates = [] for game in myFutureGames: if not game.start_time_committed and (datetime.datetime.now() + datetime.timedelta(minutes=120)) > game.start_time: game.start_time_committed = True game.save() if not game.start_time.date() in dates: dates.append(game.start_time.date()) # Load strings language to template mynextgames.html try: lang = strLang() except: lang = '' template = 'pc/next-games.html' if request.mobile: template = 'mobile/next-games.html' return render_to_response(template, { 'user_me': request.user, 'myNextGames': myFutureGames, 'dates': dates, 'lang': lang, })
def GameRoom(request, gid): if not request.user.is_authenticated(): return HttpResponseRedirect('/') game = Game.objects.get(id = gid) if request.user != game.player1 and request.user != game.player2 and request.user.username != "FLEQBOT": return HttpResponseRedirect('/') tournament = game.round.tournament r = game.round.round_number startDate = game.start_time player1 = game.player1 player2 = game.player2 template = 'pc/game-room.html' dico = [] if game.is_over(): if request.mobile: return HttpResponseRedirect("/") lines = "" print os.getcwd() logfile = open(os.getcwd() + '/logs/' + str(game.id), 'r') lines = logfile.readlines() for line in lines: linesplit = {} line = line.split(";", 2) linesplit['timestamp'] = line[0].split(".")[0] linesplit['user'] = line[1] linesplit['message'] = line[2].replace('&','&').replace('<','<').replace('>','>').replace('"','"').replace(''',"'").split(";")[0] dico.append(linesplit) else: if request.mobile: template = 'mobile/game-room.html' # Load strings language to template mytournaments.html try: lang = strLang() except: lang = '' return render_to_response(template, { 'user_me': request.user, 'game': game, 'dico': dico, 'tournament': tournament, 'round': r, 'player1': player1, 'player2': player2, 'lang': lang, })
def clean_username(self): username = self.cleaned_data.get('username') try: user = User.objects.get(username=username) except User.DoesNotExist: return username raise forms.ValidationError( strLang()['error_register_username_exists'])
def clean_name(self): name = self.cleaned_data.get('name') try: tournament = Tournament.objects.get(name=name) except Tournament.DoesNotExist: return name raise forms.ValidationError( strLang()['error_new_tournament_name_exists'])
def Signin(request): try: lang = strLang() except: lang = '' if request.method == 'POST': registerForm = RegisterForm(request.POST) 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() user = authenticate(username=request.POST['username'], password=request.POST['password']) login(request, user) if request.mobile: return render_to_response('mobile/welcome.html', {}) return render_to_response('pc/welcome.html', {'user': request.user}) else: template = 'pc/signin.html' if request.mobile: template = 'mobile/signin.html' return render_to_response( template, { 'user_me': request.user, 'registerForm': registerForm, 'lang': lang, }) else: registerForm = RegisterForm() template = 'pc/signin.html' if request.mobile: template = 'mobile/signin.html' return render_to_response(template, { 'user_me': request.user, 'registerForm': registerForm, 'lang': lang, })
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('pc/load-questions.html', { '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 render_to_response('pc/load-questions.html', { 'box': box, 'user_me': request.user, 'lang': lang, }) except: box = '' form = LoadQuestionsForm() return render_to_response('pc/load-questions.html', { 'form': form, 'box': box, 'user_me': request.user, 'lang': lang, })
class RegisterForm(forms.Form): username = forms.CharField(max_length=100) first_name = forms.CharField(max_length=100) last_name = forms.CharField(max_length=100) password = forms.CharField(widget=forms.PasswordInput(), max_length=100) password2 = forms.CharField(widget=forms.PasswordInput(), max_length=100, label=(strLang()['label_password2'])) email = forms.EmailField(max_length=100) def clean_username(self): username = self.cleaned_data.get('username') try: user = User.objects.get(username=username) except User.DoesNotExist: return username raise forms.ValidationError( strLang()['error_register_username_exists']) def clean_email(self): email = self.cleaned_data.get('email') try: email = User.objects.get(email=email) except User.DoesNotExist: return email raise forms.ValidationError(strLang()['error_register_email_exists']) def clean_first_name(self): first_name = self.cleaned_data.get('first_name') if not first_name: raise forms.ValidationError( strLang()['error_register_first_name_required']) return first_name def clean_last_name(self): last_name = self.cleaned_data.get('last_name') if not last_name: raise forms.ValidationError( strLang()['error_register_last_name_required']) return last_name def clean(self): cleaned_data = super(RegisterForm, self).clean() password = self.cleaned_data.get('password') password2 = self.cleaned_data.get('password2') if password != password2: self._errors["password"] = self.error_class( [strLang()['error_register_passwords_differents']]) self._errors["password2"] = self.error_class( [strLang()['error_register_passwords_differents']]) return cleaned_data
def WonGames(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/') # Select all won games wonGames = Game.objects.filter(Q(winner = request.user), Q(log=True)).order_by('-start_time') # Load strings language to template mynextgames.html try: lang = strLang() except: lang = '' template = 'pc/won-games.html' if request.mobile: template = 'mobile/won-games.html' return render_to_response(template, { 'user_me': request.user, 'lang': lang, 'wonGames': wonGames, })
def MyTournaments(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/') dateNow = datetime.datetime.now() myTournaments = Tournament.objects.filter( players=request.user).order_by('-start_date') tournamentCategories = [] for t in myTournaments: categories = t.categories.all() c = {} c['tid'] = t.pk c['categories'] = categories tournamentCategories.append(c) # Load strings language to template mytournaments.html try: lang = strLang() except: lang = '' template = 'pc/my-tournaments.html' if request.mobile: template = 'pc/my-tournaments.html' return render_to_response( template, { 'user_me': request.user, 'myTournaments': myTournaments, 'tournamentCategories': tournamentCategories, 'lang': lang, })
def TournamentStatistics(request, gid): if not request.user.is_authenticated(): return HttpResponseRedirect('/') tournament = Tournament.objects.get(id=gid) rounds = Round.objects.filter( tournament=tournament).order_by('round_number') # Generate Score Table by this Tournament allscores = Score.objects.filter(tournament=tournament).order_by( '-points', '-questions_won', 'questions_lost', 'player') 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), Q(log=True)) 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 and game[ 0].winner.username != "jgonzalez": print "LOST" user['loser_games'] += 1 elif game[0].winner.username == "FLEQBOT": user['loser_games'] += 1 elif game[0].winner == userScore.player: user['winner_games'] += 1 except: continue except: continue user['reflection_days'] = user['score'] - user['winner_games'] user['total_games'] = user['loser_games'] + user['winner_games'] # Save user stats and increment counter var scores.append(user) pos += 1 rounds = Round.objects.filter(tournament=tournament) games = Game.objects.all() join = False disjoin = False if not (request.user in tournament.players.all()) and ( datetime.date.today() < tournament.start_date): join = True elif (request.user in tournament.players.all()) and ( datetime.date.today() < tournament.start_date): disjoin = True # Load strings language to template mytournaments.html try: lang = strLang() except: lang = '' template = 'pc/tournament-statistics.html' if request.mobile: template = 'mobile/tournament-statistics.html' return render_to_response( template, { 'user_me': request.user, 'tournament': tournament, 'join': join, 'disjoin': disjoin, 'scores': scores, 'rounds': rounds, 'games': games, 'lang': lang, })
def Home(request): if request.user.is_authenticated(): nextGames = len( Game.objects.filter( Q(log=False), Q(start_time__gte=datetime.datetime.now()), Q(player1=request.user) | Q(player2=request.user))) wonGames = len(Game.objects.filter(Q(winner=request.user), Q(log=True))) lostGames = len( Game.objects.filter( Q(player1=request.user) | Q(player2=request.user), ~Q(winner=request.user), Q(log=True))) myTournaments = len(Tournament.objects.filter(players=request.user)) activeTournaments = len( Tournament.objects.filter(start_date__lte=datetime.date.today(), finish_date__gte=datetime.date.today())) nextTournaments = len( Tournament.objects.filter(start_date__gt=datetime.date.today())) finishedTournaments = len( Tournament.objects.filter(finish_date__lt=datetime.datetime.now())) if request.mobile: return render_to_response( 'mobile/home.html', { 'nextGames': nextGames, 'wonGames': wonGames, 'lostGames': lostGames, 'myTournaments': myTournaments, 'activeTournaments': activeTournaments, 'nextTournaments': nextTournaments, 'finishedTournaments': finishedTournaments, }) return HttpResponseRedirect("/next-games") else: # Load strings language to template login.html try: lang = strLang() except: lang = '' if request.method == 'POST': loginForm = LoginForm(request.POST) if loginForm.is_valid(): user = authenticate(username=request.POST['username'], password=request.POST['password']) login(request, user) if request.mobile: return render_to_response('mobile/home.html', {}) else: return HttpResponseRedirect('/next-games') else: registerForm = RegisterForm() template = 'pc/splash.html' if request.mobile: template = 'mobile/login.html' return render_to_response(template, { 'loginForm': loginForm, 'lang': lang, }) else: if request.mobile: return render_to_response('mobile/login.html', {}) return render_to_response('pc/splash.html', {})
def clean_username(self): username = self.cleaned_data.get('username') if not username: raise forms.ValidationError( strLang()['error_login_username_required']) return username
def clean_password(self): password = self.cleaned_data.get('password') if not password: raise forms.ValidationError( strLang()['error_login_password_required']) return password
def clean_last_name(self): last_name = self.cleaned_data.get('last_name') if not last_name: raise forms.ValidationError( strLang()['error_register_last_name_required']) return last_name
def NewTournament(request): if not request.user.is_authenticated(): return HttpResponseRedirect('/register') elif not request.user.is_superuser and not request.user.has_perm( 'quizbowl.add_tournament'): return HttpResponseRedirect('/my-tournaments') if request.user.has_perm('quizbowl.add_tournament'): admin_user = True else: admin_user = False # Load strings language to template newtournament.html try: lang = strLang() except: lang = '' # Info about user user_me = UserProfile.objects.get(user=request.user) if request.method == 'POST': # If the form has been submitted... form = TournamentForm(request.POST) # A form bound to the POST data if form.is_valid(): t = form.save() t.admin = request.user # Generate sid name sid = t.name.lower() sid = sid.replace(" ", "") # Remove accents sid = ''.join((c for c in unicodedata.normalize('NFD', sid) if unicodedata.category(c) != 'Mn')) # Remove special chars sid = re.sub(r"\W+", "", sid) # Check if this sid exists or similars ts = Tournament.objects.filter(sid__startswith=sid) if len(ts) > 0: sid = sid + '-' + str(len(ts)) t.sid = sid t.finish_date = t.start_date + datetime.timedelta( (t.rounds * t.days_per_round) - 1) t.save() return HttpResponseRedirect('/next-tournaments') else: return render_to_response('pc/new-tournament.html', { 'user_me': request.user, 'form': form, 'lang': lang, }) else: form = TournamentForm(initial={ 'start_date': (datetime.date.today() + datetime.timedelta(days=1)) }) return render_to_response('pc/new-tournament.html', { 'user_me': request.user, 'form': form, 'lang': lang, })