|
|
from django.shortcuts import render
|
|
|
|
|
|
from boards.abstracts.paginator import get_paginator
|
|
|
from boards.abstracts.settingsmanager import get_settings_manager, \
|
|
|
SETTING_USERNAME, SETTING_LAST_NOTIFICATION_ID
|
|
|
from boards.models.user import Notification
|
|
|
from boards.views.base import BaseBoardView
|
|
|
|
|
|
DEFAULT_PAGE = '1'
|
|
|
|
|
|
TEMPLATE = 'boards/notifications.html'
|
|
|
PARAM_PAGE = 'page'
|
|
|
PARAM_USERNAME = 'notification_username'
|
|
|
REQUEST_PAGE = 'page'
|
|
|
RESULTS_PER_PAGE = 10
|
|
|
|
|
|
|
|
|
class NotificationView(BaseBoardView):
|
|
|
|
|
|
def get(self, request, username):
|
|
|
params = self.get_context_data()
|
|
|
|
|
|
settings_manager = get_settings_manager(request)
|
|
|
|
|
|
# If we open our notifications, reset the "new" count
|
|
|
my_username = settings_manager.get_setting(SETTING_USERNAME)
|
|
|
|
|
|
notification_username = username.lower()
|
|
|
|
|
|
posts = Notification.objects.get_notification_posts(
|
|
|
username=notification_username)
|
|
|
if notification_username == my_username:
|
|
|
last = posts.first()
|
|
|
if last is not None:
|
|
|
last_id = last.id
|
|
|
settings_manager.set_setting(SETTING_LAST_NOTIFICATION_ID,
|
|
|
last_id)
|
|
|
|
|
|
paginator = get_paginator(posts, RESULTS_PER_PAGE)
|
|
|
|
|
|
page = int(request.GET.get(REQUEST_PAGE, DEFAULT_PAGE))
|
|
|
|
|
|
params[PARAM_PAGE] = paginator.page(page)
|
|
|
params[PARAM_USERNAME] = notification_username
|
|
|
|
|
|
return render(request, TEMPLATE, params)
|
|
|
|