##// END OF EJS Templates
Fixed thread update
Fixed thread update

File last commit:

r693:641dff39 1.8-dev
r710:3be7d3c8 default
Show More
thread.py
133 lines | 4.3 KiB | text/x-python | PythonLexer
neko259
Rewriting views to class-based
r542 from django.core.urlresolvers import reverse
from django.db import transaction
from django.http import Http404
from django.shortcuts import get_object_or_404, render, redirect
neko259
Added post bumplimit size to the end of form template. Some code cleanup
r633 from django.views.generic.edit import FormMixin
neko259
Implemented search over posts. Moved get_user and get_theme to utils module. Use context processors instead of creating context in the base view. Removed unused imports in some modules
r690
neko259
Rewriting views to class-based
r542 from boards import utils
from boards.forms import PostForm, PlainErrorList
neko259
Implemented search over posts. Moved get_user and get_theme to utils module. Use context processors instead of creating context in the base view. Removed unused imports in some modules
r690 from boards.models import Post, Ban
neko259
Rewriting views to class-based
r542 from boards.views.banned import BannedView
from boards.views.base import BaseBoardView, PARAMETER_FORM
from boards.views.posting_mixin import PostMixin
import neboard
neko259
Implemented search over posts. Moved get_user and get_theme to utils module. Use context processors instead of creating context in the base view. Removed unused imports in some modules
r690
neko259
Rewriting views to class-based
r542 MODE_GALLERY = 'gallery'
MODE_NORMAL = 'normal'
neko259
Added post bumplimit size to the end of form template. Some code cleanup
r633 PARAMETER_MAX_REPLIES = 'max_replies'
PARAMETER_THREAD = 'thread'
PARAMETER_BUMPABLE = 'bumpable'
neko259
Rewriting views to class-based
r542
neko259
Added post bumplimit size to the end of form template. Some code cleanup
r633
class ThreadView(BaseBoardView, PostMixin, FormMixin):
neko259
Rewriting views to class-based
r542
neko259
Moved login view to a separate class. Refactored thread and all threads views
r544 def get(self, request, post_id, mode=MODE_NORMAL, form=None):
neko259
Added django management command to clean old users. Cleaned up failing tests. Fixed error when trying to get a non-existent post
r689 try:
opening_post = Post.objects.filter(id=post_id).only('thread_new')[0]
except IndexError:
raise Http404
neko259
Rewriting views to class-based
r542
# If this is not OP, don't show it as it is
neko259
Slight optimizations to thread opening
r659 if not opening_post or not opening_post.is_opening():
neko259
Rewriting views to class-based
r542 raise Http404
neko259
Moved login view to a separate class. Refactored thread and all threads views
r544 if not form:
form = PostForm(error_class=PlainErrorList)
neko259
Rewriting views to class-based
r542
neko259
Made getting post thread more generic and scalable
r617 thread_to_show = opening_post.get_thread()
neko259
Rewriting views to class-based
r542
context = self.get_context_data(request=request)
context[PARAMETER_FORM] = form
context["last_update"] = utils.datetime_to_epoch(
thread_to_show.last_edit_time)
neko259
Added post bumplimit size to the end of form template. Some code cleanup
r633 context[PARAMETER_THREAD] = thread_to_show
context[PARAMETER_MAX_REPLIES] = neboard.settings.MAX_POSTS_PER_THREAD
neko259
Rewriting views to class-based
r542
if MODE_NORMAL == mode:
neko259
Added post bumplimit size to the end of form template. Some code cleanup
r633 context[PARAMETER_BUMPABLE] = thread_to_show.can_bump()
if context[PARAMETER_BUMPABLE]:
neko259
Fixed PPD cache. Optimized thread view a little bit
r569 context['posts_left'] = neboard.settings.MAX_POSTS_PER_THREAD \
- thread_to_show.get_reply_count()
neko259
Rewriting views to class-based
r542 context['bumplimit_progress'] = str(
float(context['posts_left']) /
neboard.settings.MAX_POSTS_PER_THREAD * 100)
neko259
Some more speedups to the post view
r625 context['opening_post'] = opening_post
neko259
Rewriting views to class-based
r542
document = 'boards/thread.html'
elif MODE_GALLERY == mode:
neko259
Moved post image to a separate model. Each post (as of model) can contain multiple images now. The image shown to the user is got with get_first_image method
r693 context['posts'] = thread_to_show.get_replies_with_images(
view_fields_only=True)
neko259
Rewriting views to class-based
r542
document = 'boards/thread_gallery.html'
else:
raise Http404
return render(request, document, context)
def post(self, request, post_id, mode=MODE_NORMAL):
opening_post = get_object_or_404(Post, id=post_id)
# If this is not OP, don't show it as it is
if not opening_post.is_opening():
raise Http404
neko259
Made getting post thread more generic and scalable
r617 if not opening_post.get_thread().archived:
neko259
Rewriting views to class-based
r542 form = PostForm(request.POST, request.FILES,
error_class=PlainErrorList)
form.session = request.session
if form.is_valid():
return self.new_post(request, form, opening_post)
if form.need_to_ban:
# Ban user because he is suspected to be a bot
self._ban_current_user(request)
neko259
Moved login view to a separate class. Refactored thread and all threads views
r544 return self.get(request, post_id, mode, form)
neko259
Rewriting views to class-based
r542
@transaction.atomic
def new_post(self, request, form, opening_post=None, html_response=True):
"""Add a new post (in thread or as a reply)."""
ip = utils.get_client_ip(request)
is_banned = Ban.objects.filter(ip=ip).exists()
if is_banned:
if html_response:
return redirect(BannedView().as_view())
else:
neko259
Tweaked API logging
r640 return None
neko259
Rewriting views to class-based
r542
data = form.cleaned_data
title = data['title']
text = data['text']
text = self._remove_invalid_links(text)
if 'image' in data.keys():
image = data['image']
else:
image = None
tags = []
neko259
Made getting post thread more generic and scalable
r617 post_thread = opening_post.get_thread()
neko259
Rewriting views to class-based
r542
post = Post.objects.create_post(title=title, text=text, ip=ip,
thread=post_thread, image=image,
tags=tags,
neko259
Implemented search over posts. Moved get_user and get_theme to utils module. Use context processors instead of creating context in the base view. Removed unused imports in some modules
r690 user=utils.get_user(request))
neko259
Rewriting views to class-based
r542
thread_to_show = (opening_post.id if opening_post else post.id)
if html_response:
if opening_post:
neko259
Minor style fixes to view classes. Fixed ban view
r561 return redirect(reverse(
'thread',
kwargs={'post_id': thread_to_show}) + '#' + str(post.id))
neko259
Make status an error if the user is banned in api_add_post
r638 else:
neko259
Tweaked API logging
r640 return post