Example #1
0
    def real_dispatch(self, request, post):
        post_id = post.id

        permissions.allow_delete_post(request.user, post)
        moderation.delete_post(request.user, post)

        post.thread.synchronize()
        post.thread.save()
        post.forum.synchronize()
        post.forum.save()

        posts_queryset = exclude_invisible_posts(post.thread.post_set,
                                                 request.user,
                                                 post.forum)
        posts_queryset = posts_queryset.select_related('thread', 'forum')

        if post_id < post.thread.last_post_id:
            target_post = posts_queryset.order_by('id').filter(id__gt=post_id)
        else:
            target_post = posts_queryset.order_by('-id').filter(id__lt=post_id)

        target_post = target_post[:1][0]
        target_post.thread.forum = target_post.forum

        add_acl(request.user, target_post.forum)
        add_acl(request.user, target_post.thread)
        add_acl(request.user, target_post)

        messages.success(request, _("Post has been deleted."))
        return self.redirect_to_post(request.user, target_post)
Example #2
0
    def real_dispatch(self, request, post):
        post_id = post.id

        permissions.allow_delete_post(request.user, post)
        moderation.delete_post(request.user, post)

        post.thread.synchronize()
        post.thread.save()
        post.forum.synchronize()
        post.forum.save()

        posts_qs = self.exclude_invisible_posts(post.thread.post_set,
                                                request.user, post.forum,
                                                post.thread)
        posts_qs = posts_qs.select_related('thread', 'forum')

        if post_id < post.thread.last_post_id:
            target_post = posts_qs.order_by('id').filter(id__gt=post_id)
        else:
            target_post = posts_qs.order_by('-id').filter(id__lt=post_id)

        target_post = target_post[:1][0]
        target_post.thread.forum = target_post.forum

        add_acl(request.user, target_post.forum)
        add_acl(request.user, target_post.thread)
        add_acl(request.user, target_post)

        messages.success(request, _("Post has been deleted."))
        return self.redirect_to_post(request.user, target_post)
Example #3
0
def delete_post(request, thread, post):
    if post.is_event:
        allow_delete_event(request.user, post)
    else:
        allow_delete_best_answer(request.user, post)
        allow_delete_post(request.user, post)

    moderation.delete_post(request.user, post)

    sync_related(thread)
    return Response({})
    def test_delete_post(self):
        """delete_post deletes thread post"""
        self.assertTrue(moderation.delete_post(self.user, self.post))
        with self.assertRaises(Post.DoesNotExist):
            self.reload_post()

        self.thread.synchronize()
        self.assertEqual(self.thread.replies, 0)
    def test_delete_post(self):
        """delete_post deletes thread post"""
        self.assertTrue(moderation.delete_post(self.user, self.post))
        with self.assertRaises(Post.DoesNotExist):
            self.reload_post()

        self.thread.synchronize()
        self.assertEqual(self.thread.replies, 0)
Example #6
0
    def action_delete(self, request, posts):
        changed_posts = 0
        first_deleted = None

        for post in posts:
            if moderation.delete_post(request.user, post):
                changed_posts += 1
                if not first_deleted:
                    first_deleted = post

        if changed_posts:
            message = ungettext(
                '%(changed)d post was deleted.',
                '%(changed)d posts were deleted.',
            changed_posts)
            messages.success(request, message % {'changed': changed_posts})
            return ReloadAfterDelete()
        else:
            message = _("No posts were deleted.")
            messages.info(request, message)
 def test_delete_original_post(self):
     """delete_post fails for first post in thread"""
     with self.assertRaises(moderation.ModerationError):
         moderation.delete_post(self.user, self.thread.first_post)
 def test_delete_original_post(self):
     """delete_post fails for first post in thread"""
     with self.assertRaises(moderation.ModerationError):
         moderation.delete_post(self.user, self.thread.first_post)