Skip to content

template_views

django_spire.notification.app.views.template_views

notification_infinite_scroll_view

Source code in django_spire/notification/app/views/template_views.py
@login_required()
def notification_infinite_scroll_view(request: WSGIRequest) -> TemplateResponse:
    if isinstance(request.user, AnonymousUser):
        notifications = AppNotification.objects.none()
    else:
        notifications = (
            AppNotification.objects.active()
            .is_sent()
            .annotate_is_viewed_by_user(request.user)
            .select_related('notification')
            .distinct()
            .ordered_by_priority_and_sent_datetime()
            .process_session_filter(
                request=request,
                session_key=NOTIFICATION_FILTERING_SESSION_KEY_NAME,
                form_class=NotificationListFilterForm,
            )
        )

    filter_session = SessionController(request, NOTIFICATION_FILTERING_SESSION_KEY_NAME)

    view = _infinite_scroll_view(request=request, notification_queryset=notifications)
    view.context_data.update({
        'filter_session': filter_session,
        'statuses': NotificationStatusChoices,
        'priorities': NotificationPriorityChoices,
    })
    return view

dropdown_infinite_scroll_view

Source code in django_spire/notification/app/views/template_views.py
@login_required()
def dropdown_infinite_scroll_view(request: WSGIRequest) -> TemplateResponse:
    if isinstance(request.user, AnonymousUser):
        notifications = AppNotification.objects.none()
    else:
        notifications = (
            AppNotification.objects.active()
            .is_sent()
            .annotate_is_viewed_by_user(request.user)
            .select_related('notification')
            .distinct()
            .ordered_by_priority_and_sent_datetime()
        )

    view = _infinite_scroll_view(request=request, notification_queryset=notifications)
    view.context_data.update({
        'is_dropdown_item': True,
    })
    return view

notification_dropdown_template_view

Source code in django_spire/notification/app/views/template_views.py
@login_required()
def notification_dropdown_template_view(request: WSGIRequest) -> TemplateResponse:
    body_data = json.loads(request.body.decode('utf-8'))

    return TemplateResponse(
        request,
        context={
            'app_notification_list_url': body_data.get('app_notification_list_url'),
            'notification_endpoint': reverse(
                'django_spire:notification:app:template:dropdown_scroll_items'
            )
        },
        template='django_spire/notification/app/dropdown/notification_dropdown_content.html'
    )