Revision 080abea3
Déplacement de la fonction sql_escape_like() utilisée par Vigiboard & Vigicore vers le modèle (dans vigilo.models.functions).
Ajout de champs pour la recherche par nom de groupe/service dans Vigiboard.
TODO: Ajout d'auto-complétion sur ces champs.
TODO: Prise en compte des champs dans le filtrage.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@1607 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/controllers/root.py | ||
---|---|---|
22 | 22 |
from vigiboard.widgets.edit_event import edit_event_status_options |
23 | 23 |
from vigiboard.controllers.vigiboardrequest import VigiboardRequest |
24 | 24 |
from vigiboard.controllers.vigiboard_controller import VigiboardRootController |
25 |
from vigilo.models.functions import sql_escape_like |
|
25 | 26 |
from vigilo.models.secondary_tables import HOST_GROUP_TABLE, \ |
26 | 27 |
SERVICE_GROUP_TABLE |
27 | 28 |
from vigilo.common.conf import settings |
28 | 29 |
|
29 | 30 |
__all__ = ('RootController', ) |
30 | 31 |
|
31 |
def sql_escape_like(s): |
|
32 |
return s.replace('%', '\\%').replace('_', '\\_') \ |
|
33 |
.replace('*', '%').replace('?', '_') |
|
34 |
|
|
35 | 32 |
class RootController(VigiboardRootController): |
36 | 33 |
""" |
37 | 34 |
Le controller général de vigiboard |
... | ... | |
61 | 58 |
|
62 | 59 |
@expose('vigiboard.html') |
63 | 60 |
@require(Any(not_anonymous(), msg=l_("You need to be authenticated"))) |
64 |
def default(self, page=None, host=None, service=None, output=None,
|
|
65 |
trouble_ticket=None, from_date=None, to_date=None,
|
|
66 |
*argv, **krgv): |
|
61 |
def default(self, page=None, hostgroup=None, servicegroup=None,
|
|
62 |
host=None, service=None, output=None, trouble_ticket=None,
|
|
63 |
from_date=None, to_date=None, *argv, **krgv):
|
|
67 | 64 |
|
68 | 65 |
""" |
69 | 66 |
Page d'accueil de Vigiboard. Elle affiche, suivant la page demandée |
... | ... | |
109 | 106 |
'tt': '', |
110 | 107 |
'from_date': '', |
111 | 108 |
'to_date': '', |
109 |
'hostgroup': '', |
|
110 |
'servicegroup': '', |
|
112 | 111 |
} |
113 | 112 |
# Application des filtres si nécessaire |
114 | 113 |
if host: |
... | ... | |
310 | 309 |
'tt': None, |
311 | 310 |
'from_date': None, |
312 | 311 |
'to_date': None, |
312 |
'hostgroup': None, |
|
313 |
'servicegroup': None, |
|
313 | 314 |
}, |
314 | 315 |
refresh_times=self.refresh_times, |
315 | 316 |
) |
... | ... | |
370 | 371 |
'tt': None, |
371 | 372 |
'from_date': None, |
372 | 373 |
'to_date': None, |
374 |
'hostgroup': None, |
|
375 |
'servicegroup': None, |
|
373 | 376 |
}, |
374 | 377 |
refresh_times=self.refresh_times, |
375 | 378 |
) |
... | ... | |
519 | 522 |
ServiceLowLevel.servicename.ilike('%' + value + '%')).all() |
520 | 523 |
return dict(results=[s[0] for s in services]) |
521 | 524 |
|
525 |
@expose('json') |
|
526 |
def autocomplete_hostgroup(self, value): |
|
527 |
value = sql_escape_like(value) |
|
528 |
hostnames = DBSession.query( |
|
529 |
Host.name.distinct()).filter( |
|
530 |
Host.name.ilike('%' + value + '%')).all() |
|
531 |
return dict(results=[h[0] for h in hostnames]) |
|
532 |
|
|
533 |
@expose('json') |
|
534 |
def autocomplete_servicegroup(self, value): |
|
535 |
value = sql_escape_like(value) |
|
536 |
services = DBSession.query( |
|
537 |
ServiceLowLevel.servicename.distinct()).filter( |
|
538 |
ServiceLowLevel.servicename.ilike('%' + value + '%')).all() |
|
539 |
return dict(results=[s[0] for s in services]) |
|
540 |
|
vigiboard/widgets/search_form.py | ||
---|---|---|
22 | 22 |
submit_text = None |
23 | 23 |
action = './' |
24 | 24 |
fields = [ |
25 |
TextField('hostgroup', label_text=l_('Host group')), |
|
26 |
TextField('servicegroup', label_text=l_('Service group')), |
|
25 | 27 |
TextField('host', label_text=l_('Host')), |
26 | 28 |
TextField('service', label_text=l_('Service')), |
27 | 29 |
TextField('output', label_text=l_('Output')), |
Also available in: Unified diff