Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

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

History | View | Annotate | Download (1.36 KB)

1 15b98053 Francois POIROTTE
# -*- coding: utf-8 -*-
2 a77de887 Francois POIROTTE
# vim:set expandtab tabstop=4 shiftwidth=4:
3 011743be Francois POIROTTE
# Copyright (C) 2007-2020 CS GROUP - France
4 9b8d9497 Francois POIROTTE
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
5 a77de887 Francois POIROTTE
6 15b98053 Francois POIROTTE
"""
7 4febadf0 Francois POIROTTE
Un plugin pour VigiBoard qui ajoute une colonne avec la sortie
8
de la commande de test exécutée par Nagios sur cet hôte/service.
9 15b98053 Francois POIROTTE
"""
10 27140946 Francois POIROTTE
import tw.forms as twf
11 02c4a1e7 Francois POIROTTE
from tg.i18n import lazy_ugettext as l_
12 27140946 Francois POIROTTE
13
from vigilo.models.tables import Event
14
from vigilo.models.functions import sql_escape_like
15 86662bc9 Francois POIROTTE
from vigiboard.controllers.plugins import VigiboardRequestPlugin, ITEMS
16 15b98053 Francois POIROTTE
17
class PluginOutput(VigiboardRequestPlugin):
18 4febadf0 Francois POIROTTE
    """Ajoute une colonne avec le message de Nagios."""
19 27140946 Francois POIROTTE
    def get_search_fields(self):
20
        return [
21
            twf.TextField(
22
                'output',
23
                label_text=l_('Output'),
24 02c4a1e7 Francois POIROTTE
                validator=twf.validators.UnicodeString(if_missing=None),
25 27140946 Francois POIROTTE
            )
26
        ]
27
28 86662bc9 Francois POIROTTE
    def handle_search_fields(self, query, search, state, subqueries):
29
        if state != ITEMS:
30
            return
31
32 27140946 Francois POIROTTE
        if search.get('output'):
33
            output = sql_escape_like(search['output'])
34
            query.add_filter(Event.message.ilike(output))
35 a2fa6a5b Francois POIROTTE
36
    def get_data(self, event):
37
        return {
38
            'output': event[0].cause.message,
39
        }
40 5a845c93 Vincent QUEMENER
41
    def get_sort_criterion(self, query, column):
42
        if column == 'output':
43
            return Event.message
44
        return None