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))
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 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), })
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 })
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))
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 })
def get_redirect(self, thread, posts_qs, post): return goto.post(thread, posts_qs, post)
def redirect_to_post(self, user, post): return redirect(goto.post(user, post.thread, post))
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))
def get_redirect(self, user, thread, post): return goto.post(user, thread, post)