context_processors.py
86 lines
| 3.1 KiB
| text/x-python
|
PythonLexer
/ boards / context_processors.py
neko259
|
r990 | from boards.abstracts.settingsmanager import get_settings_manager, \ | ||
neko259
|
r1429 | SETTING_LAST_NOTIFICATION_ID, SETTING_IMAGE_VIEWER | ||
neko259
|
r990 | from boards.models.user import Notification | ||
neko259
|
r728 | |||
neko259
|
r721 | __author__ = 'neko259' | ||
neko259
|
r1478 | import neboard | ||
neko259
|
r1429 | from boards import settings | ||
neko259
|
r1455 | from boards.models import Post, Tag, Thread | ||
neko259
|
r690 | |||
neko259
|
r721 | CONTEXT_SITE_NAME = 'site_name' | ||
CONTEXT_VERSION = 'version' | ||||
CONTEXT_THEME_CSS = 'theme_css' | ||||
CONTEXT_THEME = 'theme' | ||||
CONTEXT_PPD = 'posts_per_day' | ||||
CONTEXT_TAGS = 'tags' | ||||
CONTEXT_USER = 'user' | ||||
neko259
|
r990 | CONTEXT_NEW_NOTIFICATIONS_COUNT = 'new_notifications_count' | ||
neko259
|
r1429 | CONTEXT_USERNAMES = 'usernames' | ||
neko259
|
r1027 | CONTEXT_TAGS_STR = 'tags_str' | ||
neko259
|
r1122 | CONTEXT_IMAGE_VIEWER = 'image_viewer' | ||
neko259
|
r1340 | CONTEXT_HAS_FAV_THREADS = 'has_fav_threads' | ||
neko259
|
r1428 | CONTEXT_POW_DIFFICULTY = 'pow_difficulty' | ||
neko259
|
r1455 | CONTEXT_NEW_POST_COUNT = 'new_post_count' | ||
neko259
|
r1478 | CONTEXT_SEARCH_ENABLED = 'search_enabled' | ||
neko259
|
r811 | |||
neko259
|
r690 | |||
neko259
|
r990 | def get_notifications(context, request): | ||
settings_manager = get_settings_manager(request) | ||||
neko259
|
r1429 | usernames = settings_manager.get_notification_usernames() | ||
neko259
|
r990 | new_notifications_count = 0 | ||
neko259
|
r1429 | if usernames is not None: | ||
neko259
|
r990 | last_notification_id = settings_manager.get_setting( | ||
SETTING_LAST_NOTIFICATION_ID) | ||||
neko259
|
r994 | |||
new_notifications_count = Notification.objects.get_notification_posts( | ||||
neko259
|
r1455 | usernames=usernames, last=last_notification_id).only('id').count() | ||
neko259
|
r990 | context[CONTEXT_NEW_NOTIFICATIONS_COUNT] = new_notifications_count | ||
neko259
|
r1429 | context[CONTEXT_USERNAMES] = usernames | ||
neko259
|
r990 | |||
neko259
|
r1455 | def get_new_post_count(context, request): | ||
settings_manager = get_settings_manager(request) | ||||
fav_threads = settings_manager.get_fav_threads() | ||||
fav_thread_ops = Post.objects.filter(id__in=fav_threads.keys()) \ | ||||
.order_by('-pub_time').only('thread_id', 'pub_time') | ||||
ops = [{'op': op, 'last_id': fav_threads[str(op.id)]} for op in fav_thread_ops] | ||||
count = Thread.objects.get_new_post_count(ops) | ||||
if count > 0: | ||||
context[CONTEXT_NEW_POST_COUNT] = '(+{})'.format(count) | ||||
neko259
|
r690 | def user_and_ui_processor(request): | ||
neko259
|
r905 | context = dict() | ||
neko259
|
r690 | |||
neko259
|
r721 | context[CONTEXT_PPD] = float(Post.objects.get_posts_per_day()) | ||
neko259
|
r690 | |||
neko259
|
r730 | settings_manager = get_settings_manager(request) | ||
neko259
|
r1027 | fav_tags = settings_manager.get_fav_tags() | ||
context[CONTEXT_TAGS] = fav_tags | ||||
neko259
|
r1323 | |||
neko259
|
r1027 | context[CONTEXT_TAGS_STR] = Tag.objects.get_tag_url_list(fav_tags) | ||
neko259
|
r728 | theme = settings_manager.get_theme() | ||
neko259
|
r721 | context[CONTEXT_THEME] = theme | ||
context[CONTEXT_THEME_CSS] = 'css/' + theme + '/base_page.css' | ||||
neko259
|
r690 | |||
neko259
|
r1153 | context[CONTEXT_VERSION] = settings.get('Version', 'Version') | ||
context[CONTEXT_SITE_NAME] = settings.get('Version', 'SiteName') | ||||
neko259
|
r690 | |||
neko259
|
r1494 | if settings.get_bool('Forms', 'LimitPostingSpeed') and not settings_manager.get_setting('confirmed_user'): | ||
neko259
|
r1428 | context[CONTEXT_POW_DIFFICULTY] = settings.get_int('Forms', 'PowDifficulty') | ||
neko259
|
r1122 | context[CONTEXT_IMAGE_VIEWER] = settings_manager.get_setting( | ||
neko259
|
r1153 | SETTING_IMAGE_VIEWER, | ||
default=settings.get('View', 'DefaultImageViewer')) | ||||
neko259
|
r1122 | |||
neko259
|
r1340 | context[CONTEXT_HAS_FAV_THREADS] =\ | ||
len(settings_manager.get_fav_threads()) > 0 | ||||
neko259
|
r1478 | context[CONTEXT_SEARCH_ENABLED] = 'haystack' in neboard.settings.INSTALLED_APPS | ||
neko259
|
r990 | get_notifications(context, request) | ||
neko259
|
r1455 | get_new_post_count(context, request) | ||
neko259
|
r990 | |||
neko259
|
r811 | return context | ||