notifications.py
52 lines
| 1.9 KiB
| text/x-python
|
PythonLexer
neko259
|
r990 | from django.shortcuts import render | ||
neko259
|
r2061 | from django.urls import reverse | ||
neko259
|
r1090 | |||
neko259
|
r2005 | from boards.abstracts.constants import PARAM_PAGE | ||
neko259
|
r990 | from boards.abstracts.paginator import get_paginator | ||
from boards.abstracts.settingsmanager import get_settings_manager, \ | ||||
neko259
|
r2005 | SETTING_LAST_NOTIFICATION_ID | ||
neko259
|
r990 | from boards.models.user import Notification | ||
from boards.views.base import BaseBoardView | ||||
neko259
|
r2061 | from boards.views.mixins import PaginatedMixin | ||
neko259
|
r990 | |||
neko259
|
r1090 | DEFAULT_PAGE = '1' | ||
neko259
|
r990 | TEMPLATE = 'boards/notifications.html' | ||
neko259
|
r1429 | PARAM_USERNAMES = 'notification_usernames' | ||
neko259
|
r990 | RESULTS_PER_PAGE = 10 | ||
neko259
|
r2061 | class NotificationView(BaseBoardView, PaginatedMixin): | ||
neko259
|
r990 | |||
neko259
|
r1429 | def get(self, request, username=None): | ||
neko259
|
r990 | params = self.get_context_data() | ||
settings_manager = get_settings_manager(request) | ||||
# If we open our notifications, reset the "new" count | ||||
neko259
|
r1429 | if username is None: | ||
notification_usernames = settings_manager.get_notification_usernames() | ||||
else: | ||||
notification_usernames = [username] | ||||
neko259
|
r1008 | |||
posts = Notification.objects.get_notification_posts( | ||||
neko259
|
r2056 | usernames=notification_usernames, user_settings=settings_manager.get_user_settings()) | ||
neko259
|
r1429 | |||
if username is None: | ||||
neko259
|
r994 | last = posts.first() | ||
neko259
|
r990 | if last is not None: | ||
last_id = last.id | ||||
settings_manager.set_setting(SETTING_LAST_NOTIFICATION_ID, | ||||
last_id) | ||||
neko259
|
r2005 | page = int(request.GET.get(PARAM_PAGE, DEFAULT_PAGE)) | ||
neko259
|
r2061 | paginator = get_paginator(posts, RESULTS_PER_PAGE, | ||
link=reverse('notifications'), | ||||
params=request.GET.dict()) | ||||
neko259
|
r2100 | paginator.current_page = page | ||
neko259
|
r990 | |||
params[PARAM_PAGE] = paginator.page(page) | ||||
neko259
|
r1429 | params[PARAM_USERNAMES] = notification_usernames | ||
neko259
|
r2061 | params.update(self.get_page_context(paginator, page)) | ||
neko259
|
r990 | |||
return render(request, TEMPLATE, params) | ||||