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 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)