vigiboard / vigiboard / controllers / plugins / masked_events.py @ c94dc931
History | View | Annotate | Download (1.57 KB)
1 | 27140946 | Francois POIROTTE | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | # vim:set expandtab tabstop=4 shiftwidth=4:
|
||
3 | c94dc931 | Francois POIROTTE | # Copyright (C) 2007-2020 CS-SI
|
4 | 9b8d9497 | Francois POIROTTE | # License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
|
5 | 27140946 | Francois POIROTTE | |
6 | """
|
||
7 | Un plugin pour VigiBoard qui ajoute une colonne avec le nombre
|
||
8 | d'événements masqués d'un événement corrélé.
|
||
9 | """
|
||
10 | 3e5985c8 | Francois POIROTTE | from sqlalchemy.sql import functions as func |
11 | 27140946 | Francois POIROTTE | from vigiboard.controllers.plugins import VigiboardRequestPlugin |
12 | |||
13 | 3e5985c8 | Francois POIROTTE | from vigilo.models.session import DBSession |
14 | from vigilo.models.tables.secondary_tables import EVENTSAGGREGATE_TABLE |
||
15 | |||
16 | 27140946 | Francois POIROTTE | class PluginMaskedEvents(VigiboardRequestPlugin): |
17 | """
|
||
18 | Affiche le nombre d'événements masqués par l'événement corrélé.
|
||
19 | """
|
||
20 | 3e5985c8 | Francois POIROTTE | def get_bulk_data(self, events_ids): |
21 | """
|
||
22 | Renvoie le nombre d'événements masqués par celui-ci.
|
||
23 |
|
||
24 | @param events_ids: Liste des identifiants des événements corrélés
|
||
25 | à afficher.
|
||
26 | @type events_ids: C{int}
|
||
27 | @return: Un dictionnaire associant à chaque identifiant d'évènement
|
||
28 | le nombre d'événements masqués.
|
||
29 | @rtype: C{dict}
|
||
30 | """
|
||
31 | counts = DBSession.query( |
||
32 | func.count().label('masked'),
|
||
33 | EVENTSAGGREGATE_TABLE.c.idcorrevent |
||
34 | ).group_by(EVENTSAGGREGATE_TABLE.c.idcorrevent |
||
35 | ).filter(EVENTSAGGREGATE_TABLE.c.idcorrevent.in_(events_ids)) |
||
36 | |||
37 | res = {} |
||
38 | for count in counts: |
||
39 | # Il faut retirer la cause du décompte.
|
||
40 | res[count.idcorrevent] = count.masked - 1
|
||
41 | return res
|
||
42 | a2fa6a5b | Francois POIROTTE | |
43 | def get_data(self, event): |
||
44 | return {
|
||
45 | 'id': event[0].idcorrevent, |
||
46 | } |