##// END OF EJS Templates
Bumped version
Bumped version

File last commit:

r1500:9178427e default
r1547:f5caa9e4 3.0.0 default
Show More
all_threads.py
169 lines | 5.5 KiB | text/x-python | PythonLexer
neko259
Set previous and next page links in the thread list view instead of template
r1129 from django.core.urlresolvers import reverse
neko259
Load image from URL (BB-56)
r954 from django.core.files import File
from django.core.files.temp import NamedTemporaryFile
neko259
Throw error 404 when trying to open invalid page in threads list
r977 from django.core.paginator import EmptyPage
neko259
Rewriting views to class-based
r542 from django.db import transaction
neko259
Throw error 404 when trying to open invalid page in threads list
r977 from django.http import Http404
neko259
Rewriting views to class-based
r542 from django.shortcuts import render, redirect
neko259
Load image from URL (BB-56)
r954 import requests
neko259
Use CSRF protection
r1422 from django.utils.decorators import method_decorator
from django.views.decorators.csrf import csrf_protect
neko259
Rewriting views to class-based
r542
neko259
Moved imageboard settings to the boards settings module. Added setting to disable archive
r716 from boards import utils, settings
neko259
Updated paginator for long page lists. Removed old get_threads method in the post manager
r596 from boards.abstracts.paginator import get_paginator
neko259
Divided settings manager into base settings manager class and session-based settings manager. This allowes to add other backends to the settings manager
r730 from boards.abstracts.settingsmanager import get_settings_manager
neko259
Rewriting views to class-based
r542 from boards.forms import ThreadForm, PlainErrorList
neko259
Added banner to show the site news. Returned the message middleware because it...
r1148 from boards.models import Post, Thread, Ban, Tag, PostImage, Banner
neko259
Rewriting views to class-based
r542 from boards.views.banned import BannedView
neko259
Code cleanup part 2
r722 from boards.views.base import BaseBoardView, CONTEXT_FORM
neko259
Rewriting views to class-based
r542 from boards.views.posting_mixin import PostMixin
neko259
Added tag gallery
r1419 from boards.views.mixins import FileUploadMixin, PaginatedMixin
neko259
Views refactoring
r900
neko259
Code cleanup part 2
r722 FORM_TAGS = 'tags'
FORM_TEXT = 'text'
FORM_TITLE = 'title'
FORM_IMAGE = 'image'
neko259
Added a form field for additional threads list in multi-thread posts
r1077 FORM_THREADS = 'threads'
neko259
Code cleanup part 2
r722
neko259
Refactoring in all threads view
r634 TAG_DELIMITER = ' '
neko259
Rewriting views to class-based
r542 PARAMETER_CURRENT_PAGE = 'current_page'
PARAMETER_PAGINATOR = 'paginator'
PARAMETER_THREADS = 'threads'
neko259
Added ability to show multiple banners. Added "view on site" link for the post...
r1149 PARAMETER_BANNERS = 'banners'
neko259
Added ability to get page urls of paginators
r1377 PARAMETER_ADDITIONAL = 'additional_params'
neko259
Show max file size in the posting templates
r1396 PARAMETER_MAX_FILE_SIZE = 'max_file_size'
neko259
New RSS url model with proper links (no page attribute)
r1399 PARAMETER_RSS_URL = 'rss_url'
neko259
Rewriting views to class-based
r542
neko259
Renamed posting_general.html to all_threads.html to clarify its purpose
r1164 TEMPLATE = 'boards/all_threads.html'
neko259
Rewriting views to class-based
r542 DEFAULT_PAGE = 1
neko259
Added tag gallery
r1419 class AllThreadsView(PostMixin, FileUploadMixin, BaseBoardView, PaginatedMixin):
neko259
Rewriting views to class-based
r542
neko259
Removed user and settings mode. Added settings manager to manage settings and keep them in the session (or any other backend like cookie in the future
r728 def __init__(self):
self.settings_manager = None
super(AllThreadsView, self).__init__()
neko259
Added hidden tags functionality
r635
neko259
Use CSRF protection
r1422 @method_decorator(csrf_protect)
neko259
Use GET parameter to specify a page instead of different url reversers
r1204 def get(self, request, form: ThreadForm=None):
page = request.GET.get('page', DEFAULT_PAGE)
neko259
Fixed tag threads view
r919 params = self.get_context_data(request=request)
neko259
Rewriting views to class-based
r542
neko259
Moved login view to a separate class. Refactored thread and all threads views
r544 if not form:
form = ThreadForm(error_class=PlainErrorList)
neko259
Rewriting views to class-based
r542
neko259
Divided settings manager into base settings manager class and session-based settings manager. This allowes to add other backends to the settings manager
r730 self.settings_manager = get_settings_manager(request)
neko259
Added link to the pub-time sorted thread list
r1376
threads = self.get_threads()
order = request.GET.get('order', 'bump')
if order == 'bump':
threads = threads.order_by('-bump_time')
else:
threads = threads.filter(multi_replies__opening=True).order_by('-multi_replies__pub_time')
neko259
Added 'interesting' url for viewing threads from favorite tags only
r1472 filter = request.GET.get('filter')
if filter == 'fav_tags':
fav_tags = self.settings_manager.get_fav_tags()
if len(fav_tags) > 0:
threads = threads.filter(tags__in=fav_tags)
threads = threads.distinct()
neko259
Added link to the pub-time sorted thread list
r1376
paginator = get_paginator(threads,
neko259
Implemented ini settings parser
r1153 settings.get_int('View', 'ThreadsPerPage'))
neko259
Updated paginator for long page lists. Removed old get_threads method in the post manager
r596 paginator.current_page = int(page)
neko259
Rewriting views to class-based
r542
neko259
Throw error 404 when trying to open invalid page in threads list
r977 try:
threads = paginator.page(page).object_list
except EmptyPage:
raise Http404()
neko259
Rewriting views to class-based
r542
neko259
Fixed calls to render shortcut to use dict instead of context instance
r918 params[PARAMETER_THREADS] = threads
params[CONTEXT_FORM] = form
neko259
Added ability to show multiple banners. Added "view on site" link for the post...
r1149 params[PARAMETER_BANNERS] = Banner.objects.order_by('-id').all()
neko259
Show max file size in the posting templates
r1396 params[PARAMETER_MAX_FILE_SIZE] = self.get_max_upload_size()
neko259
New RSS url model with proper links (no page attribute)
r1399 params[PARAMETER_RSS_URL] = self.get_rss_url()
neko259
Rewriting views to class-based
r542
neko259
Added ability to get page urls of paginators
r1377 paginator.set_url(self.get_reverse_url(), request.GET.dict())
self.get_page_context(paginator, params, page)
neko259
Rewriting views to class-based
r542
neko259
Fixed calls to render shortcut to use dict instead of context instance
r918 return render(request, TEMPLATE, params)
neko259
Rewriting views to class-based
r542
neko259
Use CSRF protection
r1422 @method_decorator(csrf_protect)
neko259
Use GET parameter to specify a page instead of different url reversers
r1204 def post(self, request):
neko259
Rewriting views to class-based
r542 form = ThreadForm(request.POST, request.FILES,
error_class=PlainErrorList)
form.session = request.session
if form.is_valid():
neko259
Refactoring in all threads view
r634 return self.create_thread(request, form)
neko259
Rewriting views to class-based
r542 if form.need_to_ban:
# Ban user because he is suspected to be a bot
self._ban_current_user(request)
neko259
Use GET parameter to specify a page instead of different url reversers
r1204 return self.get(request, form)
neko259
Rewriting views to class-based
r542
neko259
Added ability to get page urls of paginators
r1377 def get_page_context(self, paginator, params, page):
neko259
Rewriting views to class-based
r542 """
Get pagination context variables
"""
neko259
Fixed calls to render shortcut to use dict instead of context instance
r918 params[PARAMETER_PAGINATOR] = paginator
neko259
Set previous and next page links in the thread list view instead of template
r1129 current_page = paginator.page(int(page))
params[PARAMETER_CURRENT_PAGE] = current_page
neko259
Added tag gallery
r1419 self.set_page_urls(paginator, params)
neko259
Set previous and next page links in the thread list view instead of template
r1129
neko259
Added ability to get page urls of paginators
r1377 def get_reverse_url(self):
return reverse('index')
neko259
Small refactoring of threads view
r1374
neko259
Rewriting views to class-based
r542 @transaction.atomic
neko259
Load image from URL (BB-56)
r954 def create_thread(self, request, form: ThreadForm, html_response=True):
neko259
Rewriting views to class-based
r542 """
neko259
Refactoring in all threads view
r634 Creates a new thread with an opening post.
neko259
Rewriting views to class-based
r542 """
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:
return
data = form.cleaned_data
neko259
Use password-hash tripcodes
r1299 title = form.get_title()
neko259
Code cleanup part 2
r722 text = data[FORM_TEXT]
neko259
Added support for different attachment types
r1273 file = form.get_file()
neko259
Added a form field for additional threads list in multi-thread posts
r1077 threads = data[FORM_THREADS]
neko259
Added image aliases to upload the same images (like "fake" or "gtfo")
r1500 images = form.get_images()
neko259
Rewriting views to class-based
r542
text = self._remove_invalid_links(text)
neko259
Added categories -- a redesign of old-style linked tags, a tree-based...
r1348 tags = data[FORM_TAGS]
neko259
Added ability to create monochrome threads
r1434 monochrome = form.is_monochrome()
neko259
Rewriting views to class-based
r542
neko259
Added support for different attachment types
r1273 post = Post.objects.create_post(title=title, text=text, file=file,
neko259
Added tripcodes
r1293 ip=ip, tags=tags, opening_posts=threads,
neko259
Added ability to create monochrome threads
r1434 tripcode=form.get_tripcode(),
neko259
Added image aliases to upload the same images (like "fake" or "gtfo")
r1500 monochrome=monochrome, images=images)
neko259
Views refactoring
r900
# This is required to update the threads to which posts we have replied
# when creating this one
neko259
Refactored post and thread models
r1091 post.notify_clients()
neko259
Rewriting views to class-based
r542
if html_response:
neko259
Use get_absolute_url instead of get_url for post, tag and thread
r1160 return redirect(post.get_absolute_url())
neko259
Rewriting views to class-based
r542
def get_threads(self):
neko259
Refactoring in all threads view
r634 """
Gets list of threads that will be shown on a page.
"""
neko259
Small refactoring of threads view
r1374 return Thread.objects\
neko259
Removed user and settings mode. Added settings manager to manage settings and keep them in the session (or any other backend like cookie in the future
r728 .exclude(tags__in=self.settings_manager.get_hidden_tags())
neko259
New RSS url model with proper links (no page attribute)
r1399
def get_rss_url(self):
return self.get_reverse_url() + 'rss/'