Volver a la wiki

signage_view — Vista de listado de pantallas en Digital Signage

Firma y ubicación

def signage_view(request):
    """Renderiza la página de Digital Signage (listado de pantallas).
    
    GET /monitoring/signage
    Template: templates/monitoring/signage.html
    """

Ubicación: monitoring/views.py:395–514

Propósito

Endpoint principal de la UI de Digital Signage. Agrega datos de monitoreo (CPU, memoria, status) de todos los dispositivos de la organización del usuario, y expone metadatos (vendor, modelo, capacidad de push) para renderizar el listado con badges informativos.

Autorizado a nivel de tenant (@views.paginate_request).

Cambio v1.64.0: Badge de capacidad push

Antes: listado mostraba vendor y modelo, pero no hacía explícita la capacidad de despliegue.

Ahora:

Impacto en lógica:

Flujo detallado (v1.64.0)

1. Setup (línea 395–420)

org = request.user.organization
profiles = MonitoringTarget.objects.filter(organization=org).select_related(...)

Filtra perfiles de monitoreo activos en la organización.

2. Provisioning (línea 421–422)

if can_provision:
    provision_profile_targets(org, profiles)

Crea targets de monitoreo faltantes (pasos de onboarding).

3. Preload adapters (línea 423–430)

from signage.models import SignageVendorAdapter
enabled_adapters = list(SignageVendorAdapter.objects.filter(enabled=True))

Línea nueva v1.64.0: carga adapters una sola vez. Antes cada resolución hacía query.

4. Iteración de dispositivos (línea 431–475)

Para cada perfil:

5. Renderizado (línea 476+)

Pasa devices[] a template.

Campos en contexto por dispositivo

devices.append({
    "id": p.id,
    "name": p.hostname or p.ip_address,
    "ip": str(p.ip_address),
    "vendor": p.vendor or "",
    "model": p.model or "",
    "push_state": push_state,          # ← NEW v1.64.0
    "status": status,
    "cpu_usage": cpu_usage,
    "memory_usage": memory_usage,
    "status_color": status_color,
    "port_connection": dev_port_connection or {},
    "alerts": alerts,
    "monitored_since": p.created_at,
})

Datos de origen

CampoOrigenTipo
vendor, modelSignageProfile.vendor, SignageProfile.modelstr
push_stateResolutor resolve_signage_adapter() + supports_real_push()enum: “push”, “monitor”, ""
status (online/offline/warning)Métricas recientes de SNMP/APIderived
cpu_usage, memory_usageÚltimas muestras de MetricSamplefloat
alertsMonitoringAlert.objects.filter(target=...)list[dict]

Autenticación y autorización

Template y CSS asociados

Performance notes

Véase también

Subir