Revision ee3ae8c8
Corrections en tous genres dans Vigiboard.
- Mise à jour des contrôleurs pour tenir compte de la disparition de l'attribut "active" et l'ajout des variantes de "severity" (initial, current, peak).
- VigiboardRequest : utilisation de variables static pour les noms des différents niveaux de sévérité (évite une duplication dans le RootController).
- Ajout d'informations supplémentaires lors de l'historisation d'une modification.
- Correction d'un bug dans le décompte du nombre de pages à afficher.
XXX Utiliser le module "Paginate" pour la pagination, plutôt que de le recoder nous-même...
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@896 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/controllers/root.py | ||
---|---|---|
8 | 8 |
from pylons.i18n import ugettext as _ |
9 | 9 |
from pylons.controllers.util import abort |
10 | 10 |
from sqlalchemy import asc |
11 |
from datetime import datetime |
|
12 |
import math |
|
13 |
|
|
11 | 14 |
from vigiboard.model import DBSession |
12 | 15 |
from vigiboard.model import Event, EventHistory, EventsAggregate, \ |
13 | 16 |
Host, HostGroup, \ |
... | ... | |
105 | 108 |
|
106 | 109 |
# Calcul des éléments à afficher et du nombre de pages possibles |
107 | 110 |
total_rows = aggregates.num_rows() |
108 |
item_per_page = int(config['vigiboard_item_per_page'])
|
|
111 |
items_per_page = int(config['vigiboard_items_per_page'])
|
|
109 | 112 |
|
110 |
if total_rows <= item_per_page * (page-1): |
|
113 |
if total_rows <= items_per_page * (page-1):
|
|
111 | 114 |
page = 1 |
112 |
id_first_row = item_per_page * (page-1) |
|
113 |
id_last_row = min(id_first_row + item_per_page, total_rows) |
|
115 |
id_first_row = items_per_page * (page-1)
|
|
116 |
id_last_row = min(id_first_row + items_per_page, total_rows)
|
|
114 | 117 |
|
115 | 118 |
aggregates.format_events(id_first_row, id_last_row) |
116 | 119 |
aggregates.generate_tmpl_context() |
120 |
nb_pages = int(math.ceil(total_rows / (items_per_page + 0.0))) |
|
117 | 121 |
|
118 | 122 |
return dict( |
119 | 123 |
events = aggregates.events, |
... | ... | |
122 | 126 |
'id_last_row': id_last_row, |
123 | 127 |
'total_rows': total_rows, |
124 | 128 |
}, |
125 |
pages = range(1, (total_rows / item_per_page) + 2),
|
|
129 |
pages = range(1, nb_pages + 1),
|
|
126 | 130 |
page = page, |
127 | 131 |
event_edit_status_options = edit_event_status_options, |
128 | 132 |
history = [], |
... | ... | |
151 | 155 |
user = User.by_user_name(username) |
152 | 156 |
|
153 | 157 |
event = DBSession.query( |
154 |
EventsAggregate.severity, |
|
158 |
EventsAggregate.initial_severity, |
|
159 |
EventsAggregate.current_severity, |
|
160 |
EventsAggregate.peak_severity, |
|
155 | 161 |
Event.hostname, |
156 | 162 |
Event.servicename, |
157 |
Event.idevent |
|
163 |
Event.idevent,
|
|
158 | 164 |
).join( |
159 | 165 |
(Event, EventsAggregate.idcause == Event.idevent), |
160 | 166 |
(HostGroup, Event.hostname == HostGroup.hostname), |
161 | 167 |
).filter(HostGroup.groupname.in_(user.groups) |
162 |
).filter(EventsAggregate.idaggregate == idaggregate).one() |
|
168 |
).filter(EventsAggregate.idaggregate == idaggregate |
|
169 |
).one() |
|
163 | 170 |
|
164 |
initial_state = DBSession.query(
|
|
171 |
history = DBSession.query(
|
|
165 | 172 |
EventHistory, |
166 | 173 |
).filter(EventHistory.idevent == event.idevent |
167 | 174 |
).order_by(asc(EventHistory.timestamp) |
168 |
).order_by(asc(EventHistory.type_action)) |
|
169 |
|
|
170 |
if initial_state.count() > 0 : |
|
171 |
for i in initial_state: |
|
172 |
if i.value != '' and i.value is not None: |
|
173 |
initial_state = i.value |
|
174 |
break |
|
175 |
else : |
|
176 |
initial_state = 0 |
|
175 |
).order_by(asc(EventHistory.type_action)).all() |
|
177 | 176 |
|
178 |
severity = ( |
|
179 |
_('None'), _('OK'), _('Suppressed'), _('Initial'), |
|
180 |
_('Maintenance'), _('Minor'), _('Major'), _('Critical') |
|
181 |
) |
|
182 |
if event.severity is None: |
|
183 |
current_state = _('Unknown') |
|
184 |
else: |
|
185 |
current_state = severity[event.severity] |
|
177 |
current_severity = VigiboardRequest.get_severity(event.current_severity) |
|
178 |
initial_severity = VigiboardRequest.get_severity(event.initial_severity) |
|
179 |
peak_severity = VigiboardRequest.get_severity(event.peak_severity) |
|
186 | 180 |
|
187 | 181 |
eventdetails = {} |
188 | 182 |
for edname, edlink in \ |
... | ... | |
195 | 189 |
} |
196 | 190 |
|
197 | 191 |
return dict( |
198 |
initial_state = severity[int(initial_state)], |
|
199 |
current_state = current_state, |
|
192 |
initial_state = VigiboardRequest.severity[initial_severity], |
|
193 |
current_state = VigiboardRequest.severity[current_severity], |
|
194 |
peak_state = VigiboardRequest.severity[peak_severity], |
|
200 | 195 |
idaggregate = idaggregate, |
201 | 196 |
host = event.hostname, |
202 | 197 |
service = event.servicename, |
... | ... | |
273 | 268 |
# Vérification qu'il y a au moins 1 évènement qui correspond |
274 | 269 |
if events.num_rows() == 0 : |
275 | 270 |
redirect('/') |
276 |
|
|
271 |
|
|
277 | 272 |
events.format_events(0, events.num_rows()) |
278 | 273 |
events.format_history() |
279 |
events.generate_tmpl_context() |
|
274 |
events.generate_tmpl_context() |
|
275 |
|
|
280 | 276 |
return dict( |
281 | 277 |
events = events.events, |
282 | 278 |
rows_info = { |
... | ... | |
345 | 341 |
event = req[0] |
346 | 342 |
|
347 | 343 |
if krgv['trouble_ticket'] != '' : |
348 |
event.trouble_ticket = krgv['trouble_ticket'] |
|
349 | 344 |
history = EventHistory( |
350 | 345 |
type_action="Ticket change", |
351 | 346 |
idevent=event.idcause, |
352 |
value='', |
|
353 |
text='', |
|
347 |
value=krgv['trouble_ticket'], |
|
348 |
text=_("Changed trouble ticket from '%s' to '%s'") % ( |
|
349 |
event.trouble_ticket, krgv['trouble_ticket'] |
|
350 |
), |
|
354 | 351 |
username=username, |
352 |
timestamp=datetime.now(), |
|
355 | 353 |
) |
356 | 354 |
DBSession.add(history) |
355 |
event.trouble_ticket = krgv['trouble_ticket'] |
|
357 | 356 |
|
358 | 357 |
if krgv['status'] != 'NoChange' : |
359 |
event.status = krgv['status'] |
|
360 | 358 |
history = EventHistory( |
361 | 359 |
type_action="Acknowlegement change state", |
362 | 360 |
idevent=event.idcause, |
363 |
value='', |
|
364 |
text='', |
|
361 |
value=krgv['status'], |
|
362 |
text=_("Changed acknowledgement status from '%s' to '%s'") % ( |
|
363 |
event.status, krgv['status'] |
|
364 |
), |
|
365 | 365 |
username=username, |
366 |
timestamp=datetime.now(), |
|
366 | 367 |
) |
367 | 368 |
DBSession.add(history) |
369 |
event.status = krgv['status'] |
|
368 | 370 |
|
369 | 371 |
DBSession.flush() |
370 | 372 |
flash(_('Updated successfully')) |
Also available in: Unified diff