##// END OF EJS Templates
Simplify paginator page list building and unified it between different views
Simplify paginator page list building and unified it between different views

File last commit:

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