vigiboard / vigiboard / controllers / vigiboard_plugin / shn.py @ 5dbfa80d
History | View | Annotate | Download (4.04 KB)
1 |
# -*- coding: utf-8 -*-
|
---|---|
2 |
# vim:set expandtab tabstop=4 shiftwidth=4:
|
3 |
"""
|
4 |
Plugin SHN : High level service
|
5 |
"""
|
6 |
|
7 |
from pylons.i18n import gettext as _ |
8 |
from tg import url |
9 |
|
10 |
from vigiboard.controllers.vigiboard_plugin import VigiboardRequestPlugin |
11 |
from vigilo.models.configure import DBSession |
12 |
from vigilo.models import HighLevelService, \ |
13 |
CorrEvent, Event, SupItem |
14 |
|
15 |
class PluginSHN(VigiboardRequestPlugin): |
16 |
|
17 |
"""
|
18 |
Plugin permettant de rajouter le nombre de SHNs impactés à
|
19 |
l'affichage et d'obtenir une liste détaillée de ces SHNs.
|
20 |
"""
|
21 |
|
22 |
def __init__(self): |
23 |
super(PluginSHN, self).__init__( |
24 |
name = _(u'Impacted HLS'),
|
25 |
style = {'title': _(u'Impacted High-Level Services'), |
26 |
'style': 'text-align:center'}, |
27 |
object_name = "shn"
|
28 |
) |
29 |
|
30 |
def show(self, aggregate): |
31 |
"""Fonction d'affichage"""
|
32 |
supitem = DBSession.query(SupItem).join( |
33 |
(Event, Event.idsupitem == SupItem.idsupitem), |
34 |
(CorrEvent, CorrEvent.idcause == Event.idevent), |
35 |
).filter(CorrEvent.idcorrevent == aggregate.idcorrevent).first() |
36 |
|
37 |
if not supitem: |
38 |
count = 0
|
39 |
else:
|
40 |
count = supitem.impacted_hls( |
41 |
HighLevelService.idservice |
42 |
).count() |
43 |
|
44 |
dico = { |
45 |
'baseurl': url('/'), |
46 |
'idcorrevent': aggregate.idcorrevent,
|
47 |
'count': count,
|
48 |
} |
49 |
|
50 |
# XXX Il faudrait échapper l'URL contenue dans baseurl
|
51 |
# pour éviter des attaques de type XSS.
|
52 |
res = ('<a href="javascript:vigiboard_hls_dialog(this,' + \
|
53 |
'\'%(baseurl)s\',%(idcorrevent)d)" ' + \
|
54 |
'class="hls_link">%(count)d</a>') % dico
|
55 |
return res
|
56 |
|
57 |
def context(self, context): |
58 |
"""Fonction de context"""
|
59 |
context.append([None, self.object_name]) |
60 |
|
61 |
def controller(self, idcorrevent, *argv, **krgv): |
62 |
"""Ajout de fonctionnalités au contrôleur"""
|
63 |
supitem = self.get_correvent_supitem(idcorrevent)
|
64 |
|
65 |
if not supitem: |
66 |
# XXX On devrait afficher une erreur (avec tg.flash()).
|
67 |
return []
|
68 |
|
69 |
services = supitem.impacted_hls( |
70 |
HighLevelService.servicename |
71 |
).order_by( |
72 |
HighLevelService.servicename.asc() |
73 |
).all() |
74 |
|
75 |
return dict(services=[service.servicename for service in services]) |
76 |
|
77 |
def get_correvent_supitem(self, idcorrevent): |
78 |
"""
|
79 |
Retourne le supitem ayant causé l'évènement
|
80 |
corrélé dont l'identifiant est passé en paramètre.
|
81 |
"""
|
82 |
# On récupère l'item recherché dans la BDD
|
83 |
supitem = DBSession.query(SupItem |
84 |
).join( |
85 |
(Event, Event.idsupitem == SupItem.idsupitem), |
86 |
(CorrEvent, CorrEvent.idcause == Event.idevent), |
87 |
).filter(CorrEvent.idcorrevent == idcorrevent).first() |
88 |
|
89 |
# # On détermine l'identité de l'utilisateur
|
90 |
# username = request.environ['repoze.who.identity']['repoze.who.userid']
|
91 |
# user = User.by_user_name(username)
|
92 |
#
|
93 |
# # On liste les permissions dont dispose l'utilisateur
|
94 |
# user_permissions = []
|
95 |
# for group in user.usergroups:
|
96 |
# for permission in group.permissions:
|
97 |
# user_permissions.append(permission)
|
98 |
#
|
99 |
# # On liste les permissions possibles pour l'item
|
100 |
# supitem_permissions = []
|
101 |
# for group in supitem.groups:
|
102 |
# for permission in group.permissions:
|
103 |
# supitem_permissions.append(permission)
|
104 |
#
|
105 |
# # On vérifie que l'utilisateur dispose bien des
|
106 |
# # permissions sur l'item en question avant de le retourner.
|
107 |
# for user_permission in user_permissions :
|
108 |
# for supitem_permission in supitem_permissions :
|
109 |
# if user_permission.idpermission == \
|
110 |
# supitem_permission.idpermission:
|
111 |
# return supitem
|
112 |
#
|
113 |
# # Dans le cas contraire on retourne None
|
114 |
# return None
|
115 |
|
116 |
return supitem
|
117 |
|