def login(request): game = Game.current_game() gamestate = game.get_state() if request.method == 'POST': login_form = LoginForm(request.POST) if login_form.is_valid(): colour = login_form.cleaned_data['colour'] if not gamestate.colour_used(colour): player, _created = Player.objects.get_or_create( **login_form.cleaned_data) gamestate.add_player(player) gamestate.save() request.session['player'] = player return redirect('mobigame:play') else: login_form.errors.setdefault('colour', []) login_form.errors['colour'].append('%s already taken!' % colour.title()) else: login_form = LoginForm() context = { 'colour_style': Player.NO_PLAYER_STYLE, 'login_form': login_form, } return render(request, 'login.html', context)
def api_v1(request): game = Game.last_game() if game is None: text = "0" else: gamestate = game.get_state() text = gamestate.api_v1_state() return HttpResponse(text, mimetype="text/plain")
def scores(request): winners = Game.previous_winners(limit=10) current_winner = winners[0] if winners else None previous_winners = winners[1:] context = { 'colour_style': Player.NO_PLAYER_STYLE, 'current_winner': current_winner, 'previous_winners': previous_winners, } return render(request, 'scores.html', context)
def wrapper(request): game = Game.current_game() gamestate = game.get_state() player = request.session.get('player') if player is None: return redirect('mobigame:login') if not gamestate.player_exists(player): del request.session['player'] return redirect('mobigame:login') return view(game, gamestate, player, request)
def signout(request): player = request.session.get('player') if player is not None: game = Game.current_game() gamestate = game.get_state() gamestate.eliminate_player(player) gamestate.save() player.delete() login_form = LoginForm() context = { 'colour_style': Player.NO_PLAYER_STYLE, 'login_form': login_form, } return render(request, 'signout.html', context)