Beispiel #1
0
    def test_post(self):
        """post returns link to post given"""
        self.assertEqual(
            goto.last(self.user, self.thread),
            goto.post(self.user, self.thread, self.thread.last_post))

        # add 24 posts
        [reply_thread(self.thread) for p in xrange(24)]

        self.assertEqual(
            goto.last(self.user, self.thread),
            goto.post(self.user, self.thread, self.thread.last_post))
Beispiel #2
0
    def test_post(self):
        """post returns link to post given"""
        thread = self.thread

        post_link = goto.post(thread, thread.post_set, thread.last_post)
        last_link = goto.last(self.thread, self.thread.post_set)
        self.assertEqual(post_link, last_link)

        # add 24 posts
        [reply_thread(self.thread) for p in xrange(24)]

        post_link = goto.post(thread, thread.post_set, thread.last_post)
        last_link = goto.last(self.thread, self.thread.post_set)
        self.assertEqual(post_link, last_link)
    def test_post(self):
        """post returns link to post given"""
        thread = self.thread

        post_link = goto.post(thread, thread.post_set, thread.last_post)
        last_link = goto.last(self.thread, self.thread.post_set)
        self.assertEqual(post_link, last_link)

        # add 24 posts
        [reply_thread(self.thread) for p in xrange(24)]

        post_link = goto.post(thread, thread.post_set, thread.last_post)
        last_link = goto.last(self.thread, self.thread.post_set)
        self.assertEqual(post_link, last_link)
Beispiel #4
0
    def handle_submit(self, request, formset):
        mode, forum, thread, post = (formset.mode, formset.forum,
                                     formset.thread, formset.post)
        if mode == EDIT:
            message = _("Changes saved.")
        else:
            if mode == START:
                message = _("New thread was posted.")
            if mode == REPLY:
                message = _("Your reply was posted.")
            messages.success(request, message)

        posts_qs = self.exclude_invisible_posts(thread.post_set,
                                                request.user,
                                                forum,
                                                thread)
        post_url = goto.post(thread, posts_qs, post)

        return JsonResponse({
            'message': message,
            'post_url': post_url,
            'parsed': post.parsed,
            'original': post.original,
            'title': thread.title,
            'title_escaped': html.escape(thread.title),
        })
Beispiel #5
0
    def real_dispatch(self, request, *args, **kwargs):
        mode_context = self.find_mode(request, *args, **kwargs)
        self.allow_mode(request.user, *mode_context)
        mode, forum, thread, post = mode_context

        if not request.is_ajax():
            response = render(request, 'misago/errorpages/wrong_way.html')
            response.status_code = 405
            return response

        forum.labels = Label.objects.get_forum_labels(forum)
        formset = EditorFormset(request=request,
                                mode=mode,
                                user=request.user,
                                forum=forum,
                                thread=thread,
                                post=post)

        if request.method == 'POST':
            if 'submit' in request.POST:
                if formset.is_valid():
                    try:
                        formset.save()

                        if mode == START:
                            message = _("New thread was posted.")
                        if mode == REPLY:
                            message = _("Your reply was posted.")
                        if mode == EDIT:
                            message = _("Message was edited.")
                        messages.success(request, message)

                        return JsonResponse({
                            'post_url':
                            goto.post(request.user, thread, post)
                        })
                    except PostingInterrupt as e:
                        return JsonResponse({'interrupt': e.message})
                else:
                    return JsonResponse({'errors': formset.errors})

            if 'preview' in request.POST:
                formset.update()
                return JsonResponse({'preview': formset.post.parsed})

        return self.render(
            request, {
                'mode': mode,
                'formset': formset,
                'forms': formset.get_forms_list(),
                'main_forms': formset.get_main_forms(),
                'supporting_forms': formset.get_supporting_forms(),
                'forum': forum,
                'path': get_forum_path(forum),
                'thread': thread,
                'post': post,
                'api_url': request.path
            })
Beispiel #6
0
    def test_goto_post(self):
        """thread_post link points to specific post in thread"""
        # add 32 posts to thread
        [reply_thread(self.thread) for p in xrange(32)]

        # add target post to thread
        target_post = reply_thread(self.thread)

        # add 32 more posts to thread
        [reply_thread(self.thread) for p in xrange(32)]

        # see post link
        post_link = goto.post(self.user, self.thread, target_post)

        response = self.client.get(target_post.get_absolute_url())
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['location'].endswith(post_link))
Beispiel #7
0
    def test_goto_post(self):
        """thread_post link points to specific post in thread"""
        # add 32 posts to thread
        [reply_thread(self.thread) for p in xrange(32)]

        # add target post to thread
        target_post = reply_thread(self.thread)

        # add 32 more posts to thread
        [reply_thread(self.thread) for p in xrange(32)]

        # see post link
        post_link = goto.post(self.user, self.thread, target_post)

        response = self.client.get(target_post.get_absolute_url())
        self.assertEqual(response.status_code, 302)
        self.assertTrue(response['location'].endswith(post_link))
Beispiel #8
0
    def handle_submit(self, request, formset):
        mode, forum, thread, post = (formset.mode, formset.forum,
                                     formset.thread, formset.post)
        if mode == EDIT:
            message = _("Changes saved.")
        else:
            if mode == START:
                message = _("New thread was posted.")
            if mode == REPLY:
                message = _("Your reply was posted.")
            messages.success(request, message)

        posts_qs = self.exclude_invisible_posts(thread.post_set, request.user,
                                                forum, thread)
        post_url = goto.post(thread, posts_qs, post)

        return JsonResponse({
            'message': message,
            'post_url': post_url,
            'parsed': post.parsed,
            'original': post.original,
            'title': thread.title,
            'title_escaped': html.escape(thread.title),
        })
Beispiel #9
0
    def real_dispatch(self, request, *args, **kwargs):
        mode_context = self.find_mode(request, *args, **kwargs)
        self.allow_mode(request.user, *mode_context)
        mode, forum, thread, post = mode_context

        if not request.is_ajax():
            response = render(request, 'misago/errorpages/wrong_way.html')
            response.status_code = 405
            return response

        forum.labels = Label.objects.get_forum_labels(forum)
        formset = EditorFormset(request=request,
                                mode=mode,
                                user=request.user,
                                forum=forum,
                                thread=thread,
                                post=post)

        if request.method == 'POST':
            if 'submit' in request.POST:
                if formset.is_valid():
                    try:
                        formset.save()

                        if mode == EDIT:
                            message = _("Changes saved.")
                        else:
                            if mode == START:
                                message = _("New thread was posted.")
                            if mode == REPLY:
                                message = _("Your reply was posted.")
                            messages.success(request, message)

                        return JsonResponse({
                            'message': message,
                            'post_url': goto.post(request.user, thread, post),
                            'parsed': post.parsed,
                            'original': post.original,
                            'title': thread.title,
                            'title_escaped': html.escape(thread.title),
                        })
                    except PostingInterrupt as e:
                        return JsonResponse({'interrupt': e.message})
                else:
                    return JsonResponse({'errors': formset.errors})

            if 'preview' in request.POST:
                formset.update()
                return JsonResponse({'preview': formset.post.parsed})

        return self.render(request, {
            'mode': mode,
            'formset': formset,
            'forms': formset.get_forms_list(),
            'main_forms': formset.get_main_forms(),
            'supporting_forms': formset.get_supporting_forms(),
            'forum': forum,
            'path': get_forum_path(forum),
            'thread': thread,
            'post': post,
            'api_url': request.path
        })
Beispiel #10
0
 def get_redirect(self, thread, posts_qs, post):
     return goto.post(thread, posts_qs, post)
Beispiel #11
0
 def redirect_to_post(self, user, post):
     return redirect(goto.post(user, post.thread, post))
Beispiel #12
0
 def redirect_to_post(self, user, post):
     posts_qs = self.exclude_invisible_posts(post.thread.post_set, user,
                                             post.forum, post.thread)
     return redirect(goto.post(post.thread, posts_qs, post))
Beispiel #13
0
 def get_redirect(self, user, thread, post):
     return goto.post(user, thread, post)
Beispiel #14
0
 def redirect_to_post(self, user, post):
     posts_qs = self.exclude_invisible_posts(post.thread.post_set,
                                             user,
                                             post.forum,
                                             post.thread)
     return redirect(goto.post(post.thread, posts_qs, post))
Beispiel #15
0
 def get_redirect(self, user, thread, post):
     return goto.post(user, thread, post)
Beispiel #16
0
 def redirect_to_post(self, user, post):
     return redirect(goto.post(user, post.thread, post))