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_USERNAMES = 'notification_usernames' REQUEST_PAGE = 'page' RESULTS_PER_PAGE = 10 class NotificationView(BaseBoardView): 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) 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) paginator = get_paginator(posts, RESULTS_PER_PAGE) page = int(request.GET.get(REQUEST_PAGE, DEFAULT_PAGE)) params[PARAM_PAGE] = paginator.page(page) params[PARAM_USERNAMES] = notification_usernames return render(request, TEMPLATE, params)