##// END OF EJS Templates
Speed up post hiding, do not load the hidden posts list for each post being processed
Speed up post hiding, do not load the hidden posts list for each post being processed

File last commit:

r2057:34e04840 default
r2082:47f758c2 default
Show More
context_processors.py
90 lines | 3.1 KiB | text/x-python | PythonLexer
/ boards / context_processors.py
from boards.abstracts.settingsmanager import get_settings_manager, \
SETTING_LAST_NOTIFICATION_ID, SETTING_IMAGE_VIEWER, SETTING_ONLY_FAVORITES
from boards.models import Banner
from boards.models.user import Notification
from boards import settings
from boards.models import Post, Tag, Thread
from boards.settings import SECTION_FORMS, SECTION_VIEW, SECTION_VERSION
PATTERN_NEW_POSTS_COUNT = '(+{})'
THEME_CSS = 'css/{}/base_page.css'
CONTEXT_SITE_NAME = 'site_name'
CONTEXT_VERSION = 'version'
CONTEXT_THEME_CSS = 'theme_css'
CONTEXT_THEME = 'theme'
CONTEXT_PPD = 'posts_per_day'
CONTEXT_USER = 'user'
CONTEXT_NEW_NOTIFICATIONS_COUNT = 'new_notifications_count'
CONTEXT_USERNAMES = 'usernames'
CONTEXT_TAGS_STR = 'tags_str'
CONTEXT_IMAGE_VIEWER = 'image_viewer'
CONTEXT_HAS_FAV_THREADS = 'has_fav_threads'
CONTEXT_POW_DIFFICULTY = 'pow_difficulty'
CONTEXT_NEW_POST_COUNT = 'new_post_count'
CONTEXT_BANNERS = 'banners'
CONTEXT_ONLY_FAVORITES = 'only_favorites'
def get_notifications(context, settings_manager, fav_tags):
usernames = settings_manager.get_notification_usernames()
new_notifications_count = 0
if usernames or fav_tags:
last_notification_id = settings_manager.get_setting(
SETTING_LAST_NOTIFICATION_ID)
new_notifications_count = Notification.objects.get_notification_posts(
usernames=usernames,
last=last_notification_id,
user_settings=settings_manager.get_user_settings()).count()
context[CONTEXT_NEW_NOTIFICATIONS_COUNT] = new_notifications_count
context[CONTEXT_USERNAMES] = usernames
def get_new_post_count(context, settings_manager):
last_posts = settings_manager.get_last_posts()
count = Thread.objects.get_new_post_count(last_posts)
if count > 0:
context[CONTEXT_NEW_POST_COUNT] = PATTERN_NEW_POSTS_COUNT.format(count)
def user_and_ui_processor(request):
context = dict()
context[CONTEXT_PPD] = float(Post.objects.get_posts_per_day())
settings_manager = get_settings_manager(request)
fav_tags = settings_manager.get_fav_tags()
context[CONTEXT_TAGS_STR] = Tag.objects.get_tag_url_list(fav_tags)
theme = settings_manager.get_theme()
context[CONTEXT_THEME] = theme
# TODO Use static here
context[CONTEXT_THEME_CSS] = THEME_CSS.format(theme)
context[CONTEXT_VERSION] = settings.get(SECTION_VERSION, 'Version')
context[CONTEXT_SITE_NAME] = settings.get(SECTION_VERSION, 'SiteName')
if settings.get_bool(SECTION_FORMS, 'LimitFirstPosting'):
context[CONTEXT_POW_DIFFICULTY] = settings.get_int(SECTION_FORMS, 'PowDifficulty')
context[CONTEXT_IMAGE_VIEWER] = settings_manager.get_setting(
SETTING_IMAGE_VIEWER,
default=settings.get(SECTION_VIEW, 'DefaultImageViewer'))
context[CONTEXT_HAS_FAV_THREADS] =\
len(settings_manager.get_last_posts()) > 0
context[CONTEXT_BANNERS] = Banner.objects.order_by('-id')
context[CONTEXT_ONLY_FAVORITES] = settings_manager.get_setting(
SETTING_ONLY_FAVORITES, default=False)
get_notifications(context, settings_manager, fav_tags)
get_new_post_count(context, settings_manager)
return context