def create(request):
    """Create a new game."""
    form = GameForm()

    if request.POST:
        form = GameForm(request.POST)
        if form.is_valid():
            new_game = form.save(commit=False)
            new_game.creator = request.user
            new_game.save()

            messages.success(request, "Your game was successfully saved!")
            return HttpResponseRedirect(new_game.get_absolute_url())

    return render(request, 'games/create.html', {'form': form})
Ejemplo n.º 2
0
def submit_game(request):
    form = GameForm(request.POST or None, request.FILES or None)
    if request.method == "POST" and form.is_valid():
        game = form.save()
        submission = GameSubmission(user=request.user, game=game)
        submission.save()

        # Notify managers a game has been submitted
        admin_url = "https://lutris.net" + reverse("admin:games_game_change",
                                                   args=(game.id, ))
        context = {
            "game_name": game.name,
            "username": request.user.username,
            "admin_link": admin_url,
        }
        subject = "New game submitted: {}".format(game.name)
        send_email("new_game", context, subject, settings.MANAGERS[0][1])

        redirect_url = request.build_absolute_uri(reverse("game-submitted"))

        # Enforce https
        if not settings.DEBUG:
            redirect_url = redirect_url.replace("http:", "https:")

        LOGGER.info("Game submitted, redirecting to %s", redirect_url)
        return redirect(redirect_url)
    return render(request, "games/submit.html", {"form": form})
Ejemplo n.º 3
0
def submit_game(request):
    form = GameForm(request.POST or None, request.FILES or None)
    if request.method == "POST" and form.is_valid():
        game = form.save()
        submission = GameSubmission(user=request.user, game=game)
        submission.save()

        # Notify managers a game has been submitted
        subject = u"New game submitted: {0}".format(game.name)
        admin_url = reverse("admin:games_game_change", args=(game.id, ))
        body = u"""
        The game {0} has been added by {1}.

        It can be modified and published at https://lutris.net{2}
        """.format(game.name, request.user, admin_url)
        mail_managers(subject, body)
        redirect_url = request.build_absolute_uri(reverse("game-submitted"))

        # Enforce https
        if not settings.DEBUG:
            redirect_url = redirect_url.replace('http:', 'https:')

        LOGGER.info('Game submitted, redirecting to %s', redirect_url)
        return redirect(redirect_url)
    return render(request, 'games/submit.html', {'form': form})
Ejemplo n.º 4
0
 def test_form_save_handles_saving_to_player(self):
   a_player = Player.objects.create()
   a_form   = GameForm(data={'text': 'A new game'})
   new_game = a_form.save(for_player=a_player)  
   self.assertEqual(new_game, Game.objects.first())
   self.assertEqual(new_game.text, "A new game")
   self.assertEqual(new_game.player, a_player)
def screenshots(request, game_id):
    """View/edit screenshots for a game."""
    game = get_object_or_404(Game, id=game_id, creator=request.user)
    room_for_more = game.screenshot_set.count() < settings.SCREENSHOTS_MAX
    form = ScreenshotForm()

    game = get_object_or_404(Game, creator=request.user, pk=game_id)
    form = GameForm(instance=game)
    room_for_more = game.screenshot_set.count() < settings.SCREENSHOTS_MAX
    screenshot_form = ScreenshotForm()

    if request.POST and room_for_more:
        screenshot_form = ScreenshotForm(request.POST, request.FILES)
        if screenshot_form.is_valid():
            new_screenshot = screenshot_form.save(commit=False)
            new_screenshot.game = game
            new_screenshot.save()

            messages.success(request, "Your screenshot has been uploaded!")
            return HttpResponseRedirect(reverse('games.edit', args=[game.id]))
    c = {
        'game': game,
        'form': form,
        'room_for_more': room_for_more,
        'screenshot_form': screenshot_form,
    }
    return render(request, 'games/edit.html', c)
Ejemplo n.º 6
0
def new_game(request):
    if request.method == 'POST':
        form = GameForm(request.POST)

        if form.is_valid():
            game = form.save()
            logger.info(
                f"Created new game -- location: {game.location} -- datetime: {game.datetime} -- max_players: {game.max_players}"
            )

            return redirect(reverse('games:detail', args=(game.id, )))
    else:
        form = GameForm()

    context = {'form': form}

    return render(request, "games/new_game.html", context)
Ejemplo n.º 7
0
def new_player(request):
    a_form = GameForm(data=request.POST)
    if a_form.is_valid():
        player = Player.objects.create()
        a_form.save(for_player=player)
        response = redirect(player)
    else:
        response = render(request, "home.html", {"form": a_form})
    return response
Ejemplo n.º 8
0
    def test_blank_data(self):
        form = GameForm({})

        self.assertFalse(form.is_valid())
        self.assertEqual(
            form.errors, {
                'location': ['This field is required.'],
                'datetime': ['This field is required.'],
                'max_players': ['This field is required.'],
                'min_players': ['This field is required.'],
            })
Ejemplo n.º 9
0
    def test_valid_data(self):
        form = GameForm({
            'location':
            'Roble Field',
            'datetime':
            datetime.now(tz=timezone.utc) + timedelta(days=1),
            'max_players':
            12,
            'min_players':
            10,
        })

        self.assertTrue(form.is_valid())
def edit(request, game_id):
    """Edit an existing game."""
    game = get_object_or_404(Game, creator=request.user, pk=game_id)
    form = GameForm(instance=game)
    room_for_more = game.screenshot_set.count() < settings.SCREENSHOTS_MAX
    screenshot_form = ScreenshotForm()

    c = {
        'game': game,
        'form': form,
        'room_for_more': room_for_more,
        'screenshot_form': screenshot_form,
    }

    if request.POST:
        form = GameForm(request.POST, instance=game)
        c.update({'form': form})
        if form.is_valid():
            form.save()

            messages.success(request, "Your changes were saved!")
            return HttpResponseRedirect(game.get_absolute_url())

    return render(request, 'games/edit.html', c)
Ejemplo n.º 11
0
def home_page(request):
    a_form = GameForm()
    response = render(request, "home.html", {"form": a_form})
    return response
Ejemplo n.º 12
0
 def test_form_validation_for_blank_games(self):
   a_form = GameForm(data={'text': ''})
   self.assertFalse(a_form.is_valid())
   self.assertEqual(a_form.errors['text'], [EMPTY_GAME_ERROR])
Ejemplo n.º 13
0
 def test_form_game_input_has_placeholder_and_css_classes(self):
   # ESCAPE changes both " <, but not both are escaped in AS_P.
   a_form = GameForm()
   self.assertIn('placeholder="Enter game &lt;SCORE : PLAYER_AGAINST&gt;"', 
       a_form.as_p())
   self.assertIn('class="form-control input-lg"', a_form.as_p())