Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

vigiboard / vigiboard / controllers / plugins / servicename.py @ 011743be

History | View | Annotate | Download (1.47 KB)

1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
# Copyright (C) 2007-2020 CS GROUP - France
4
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
5

    
6
"""
7
Un plugin pour VigiBoard qui ajoute une colonne avec le nom du service
8
à l'origine de l'événement corrélé.
9
"""
10
import tw.forms as twf
11
from tg.i18n import lazy_ugettext as l_
12

    
13
from vigilo.models.functions import sql_escape_like
14
from vigiboard.controllers.plugins import VigiboardRequestPlugin, ITEMS
15

    
16
class PluginServicename(VigiboardRequestPlugin):
17
    """
18
    Affiche le nom du service à l'origine de l'événement corrélé.
19
    Si l'événement corrélé porte directement sur un hôte,
20
    alors le nom de service vaut None.
21
    """
22
    def get_search_fields(self):
23
        return [
24
            twf.TextField(
25
                'service',
26
                label_text=l_('Service'),
27
                validator=twf.validators.UnicodeString(if_missing=None),
28
            )
29
        ]
30

    
31
    def handle_search_fields(self, query, search, state, subqueries):
32
        if state != ITEMS:
33
            return
34

    
35
        if search.get('service'):
36
            service = sql_escape_like(search['service'])
37
            query.add_filter(query.items.c.servicename.ilike(service))
38

    
39
    def get_data(self, event):
40
        return {
41
            'servicename': event.servicename,
42
        }
43

    
44
    def get_sort_criterion(self, query, column):
45
        if column == 'servicename':
46
            return query.items.c.servicename
47
        return None
48