Sistema de Notificaciones

NoxPanel incluye un sistema de notificaciones in-app que informa a los usuarios sobre eventos relevantes en tiempo real.

Características

  • Notificaciones persistentes en base de datos

  • Badge con contador de no leídas en la barra lateral

  • Marcar como leída individual o todas a la vez

  • Preferencias de notificación por usuario

  • Template tag {% unread_notification_count %} para badges

Modelo de Datos

class Notification(models.Model):
    recipient = models.ForeignKey(User)
    title = models.CharField(max_length=255)
    message = models.TextField()
    notification_type = models.CharField(choices=[
        ('info', 'Información'),
        ('success', 'Éxito'),
        ('warning', 'Advertencia'),
        ('error', 'Error'),
    ])
    is_read = models.BooleanField(default=False)
    created_at = models.DateTimeField(auto_now_add=True)

URLs

  • /notifications/ — Lista de notificaciones

  • /notifications/<uuid>/read/ — Marcar como leída

  • /notifications/read-all/ — Marcar todas como leídas

  • /notifications/preferences/ — Preferencias

  • /notifications/api/ — API AJAX para obtener notificaciones

Template Tag

Para mostrar el badge de notificaciones no leídas en cualquier template:

{% load notification_tags %}
{% unread_notification_count as notif_count %}
{% if notif_count > 0 %}
    <span class="badge bg-danger">{{ notif_count }}</span>
{% endif %}