context_processors.py
69 lines
| 2.2 KiB
| text/x-python
|
PythonLexer
/ boards / context_processors.py
neko259
|
r990 | from boards.abstracts.settingsmanager import get_settings_manager, \ | ||
SETTING_USERNAME, SETTING_LAST_NOTIFICATION_ID | ||||
from boards.models.user import Notification | ||||
neko259
|
r728 | |||
neko259
|
r721 | __author__ = 'neko259' | ||
neko259
|
r728 | from boards import settings | ||
neko259
|
r690 | from boards.models import Post | ||
neko259
|
r721 | CONTEXT_SITE_NAME = 'site_name' | ||
CONTEXT_VERSION = 'version' | ||||
CONTEXT_MODERATOR = 'moderator' | ||||
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' | ||
CONTEXT_USERNAME = 'username' | ||||
neko259
|
r690 | |||
neko259
|
r811 | PERMISSION_MODERATE = 'moderation' | ||
neko259
|
r690 | |||
neko259
|
r990 | def get_notifications(context, request): | ||
settings_manager = get_settings_manager(request) | ||||
username = settings_manager.get_setting(SETTING_USERNAME) | ||||
new_notifications_count = 0 | ||||
if username is not None and len(username) > 0: | ||||
last_notification_id = settings_manager.get_setting( | ||||
SETTING_LAST_NOTIFICATION_ID) | ||||
if last_notification_id is not None: | ||||
new_notifications_count = Notification.objects.filter( | ||||
id__gt=last_notification_id).filter( | ||||
name=username).count() | ||||
else: | ||||
new_notifications_count = Notification.objects.filter( | ||||
name=username).count() | ||||
context[CONTEXT_NEW_NOTIFICATIONS_COUNT] = new_notifications_count | ||||
context[CONTEXT_USERNAME] = username | ||||
def get_moderator_permissions(context, request): | ||||
try: | ||||
moderate = request.user.has_perm(PERMISSION_MODERATE) | ||||
except AttributeError: | ||||
moderate = False | ||||
context[CONTEXT_MODERATOR] = moderate | ||||
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
|
r728 | context[CONTEXT_TAGS] = settings_manager.get_fav_tags() | ||
theme = settings_manager.get_theme() | ||||
neko259
|
r721 | context[CONTEXT_THEME] = theme | ||
context[CONTEXT_THEME_CSS] = 'css/' + theme + '/base_page.css' | ||||
neko259
|
r690 | |||
# This shows the moderator panel | ||||
neko259
|
r990 | get_moderator_permissions(context, request) | ||
neko259
|
r690 | |||
neko259
|
r721 | context[CONTEXT_VERSION] = settings.VERSION | ||
context[CONTEXT_SITE_NAME] = settings.SITE_NAME | ||||
neko259
|
r690 | |||
neko259
|
r990 | get_notifications(context, request) | ||
neko259
|
r811 | return context | ||