コード例 #1
0
def thread_detail_view(request, pk, slug):
    thread = get_object_or_404(Thread, pk=pk)
    player = Player.user_to_player(request.user, thread.game)

    if not thread.visible_to_player(player):
        raise PermissionDenied('You cannot see this thread!')

    if request.method == 'POST':
        form = PostCreateForm(request.POST, player=player, thread=thread)
        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect(
                reverse(
                    'thread_detail',
                    kwargs={
                        'pk': int(pk),
                        'slug': slug
                    },
                ))
    else:
        form = PostCreateForm(player=player, thread=thread)

    return render(
        request,
        'forum/thread-detail.html',
        {
            'form': form,
            'thread': thread,
            'player': player,
            'posts': Post.objects.filter(thread=thread).order_by('created')
        },
    )
コード例 #2
0
ファイル: views.py プロジェクト: Mongoose1021/claremontHvZ
def thread_detail_view(request, pk, slug):
    thread = get_object_or_404(Thread, pk=pk)
    player = Player.user_to_player(request.user, thread.game)

    if not thread.visible_to_player(player):
        raise PermissionDenied('You cannot see this thread!')

    if request.method == 'POST':
        form = PostCreateForm(request.POST, player=player, thread=thread)
        if form.is_valid():
            form.save(commit=True)
            return HttpResponseRedirect(
                reverse(
                    'thread_detail',
                    kwargs = {'pk': int(pk), 'slug': slug},
                )
            )
    else:
        form = PostCreateForm(player=player, thread=thread)

    return render(
        request,
        'forum/thread-detail.html',
        {
            'form': form,
            'thread': thread,
            'player': player,
            'posts': Post.objects.filter(thread=thread).order_by('created')
        },
    )
コード例 #3
0
    def save(self, commit=False):
        def grab(s):
            return self.cleaned_data[s]

        game = Game.nearest_game()
        player = Player.user_to_player(self.user, game)

        self.thread = Thread(
            game=game,
            team=grab('team'),
            title=grab('title'),
            slug=slugify(grab('title')),
        )

        self.thread.save()

        post = Post(
            author=player,
            thread=self.thread,
            body=grab('post_body'),
            created=settings.NOW(),
        )

        if commit:
            post.save()

        return self.thread
コード例 #4
0
ファイル: mixins.py プロジェクト: JoshPetrack/claremontHvZ
 def set_player(self, request):
     if self.player:
         return
     try:
         self.player = Player.user_to_player(request.user, self.get_game())
     except Player.DoesNotExist:
         raise PermissionDenied("You are not registered for this game!")
コード例 #5
0
    def player(self):
        if self._player:
            return self._player
        try:
            self._player = Player.user_to_player(self.request.user, self.game)
        except Player.DoesNotExist:
            raise PermissionDenied("You are not registered for this game!")

        return self._player
コード例 #6
0
        def check_team(u):
            try:
                player = Player.user_to_player(u)
            except Player.DoesNotExist:
                raise PermissionDenied("You are not registered for this game!")

            if player.team != team:
                team_name = "human" if team == 'H' else "zombie"
                raise PermissionDenied("You must be a {} to view this page.".format(team_name))
            return True
コード例 #7
0
ファイル: decorators.py プロジェクト: rkusch24/claremontHvZ
        def check_team(u):
            try:
                player = Player.user_to_player(u)
            except Player.DoesNotExist:
                raise PermissionDenied("You are not registered for this game!")

            if player.team != team:
                team_name = "human" if team == 'H' else "zombie"
                raise PermissionDenied(
                    "You must be a {} to view this page.".format(team_name))
            return True
コード例 #8
0
ファイル: models.py プロジェクト: Mongoose1021/claremontHvZ
    def visible_to_user(self, user):
        if not user:
            return False

        if user.is_staff:
            return True

        try:
            player = Player.user_to_player(user, self.game)
        except Player.DoesNotExist:
            return False

        return self.visible_to_player(player)
コード例 #9
0
    def visible_to_user(self, user):
        if not user:
            return False

        if user.is_staff:
            return True

        try:
            player = Player.user_to_player(user, self.game)
        except Player.DoesNotExist:
            return False

        return self.visible_to_player(player)
コード例 #10
0
    def filter_forums(self, user, qs):
        """Players should not be able to see the other team's forums."""

        if not user.is_authenticated():
            raise PermissionDenied("You are not logged in!")

        try:
            vb_team = settings.VERBOSE_TEAMS[Player.user_to_player(user).team]
        except Player.DoesNotExist:
            raise PermissionDenied("You are not in this game!")

        # Display the forums for our team or both teams.
        both_or_ours = Q(name=vb_team) | Q(name=settings.VERBOSE_TEAMS['B'])
        return super(ForumPermissionHandler, self).filter_forums(user, qs).filter(both_or_ours)
コード例 #11
0
ファイル: models.py プロジェクト: Mongoose1021/claremontHvZ
    def legal_teams(user):
        if not user:
            return False

        if user.is_staff:
            return settings.VERBOSE_TEAMS.items()

        try:
            player = Player.user_to_player(user)
        except Player.DoesNotExist:
            return []

        return (
            (player.team, settings.VERBOSE_TEAMS[player.team]),
            ('B', settings.VERBOSE_TEAMS['B']),
        )
コード例 #12
0
    def legal_teams(user):
        if not user:
            return False

        if user.is_staff:
            return settings.VERBOSE_TEAMS.items() + Player.objects.values('clan')

        try:
            player = Player.user_to_player(user)
        except Player.DoesNotExist:
            return []

        return (
            (player.team, settings.VERBOSE_TEAMS[player.team]),
            (player.clan, player.clan),
            ('B', settings.VERBOSE_TEAMS['B']),
        )
コード例 #13
0
    def may_view_forum(self, user, forum):
        """Players should not be able to access the other team's forums."""

        # Check if the forum allows both teams.
        if forum.name == settings.VERBOSE_TEAMS['B']:
            return super(ForumPermissionHandler, self).may_view_forum(user, forum)

        # Compare the forum's name to the player's team.
        try:
            team = Player.user_to_player(user).team
        except Player.DoesNotExist:
            return False

        vb_team = settings.VERBOSE_TEAMS[team]
        if forum.name != vb_team:
            return False

        return super(ForumPermissionHandler, self).may_view_forum(user, forum)
コード例 #14
0
def as_player(user):
    try:
        return Player.user_to_player(user)
    except Player.DoesNotExist:
        return ""
コード例 #15
0
def inject_current_player(request):
    try:
        player = Player.user_to_player(request.user)
    except (Player.DoesNotExist, Game.DoesNotExist):
        player = None
    return {'player': player}
コード例 #16
0
def as_player(user):
    try:
        return Player.user_to_player(user)
    except:
        return ""
コード例 #17
0
def inject_current_player(request):
    try:
        player = Player.user_to_player(request.user)
    except (Player.DoesNotExist, Game.DoesNotExist):
        player = None
    return {'player': player}