Project

General

Profile

Revision ee3ae8c8

IDee3ae8c8af17e3c5a2ccf13231c071ca30fc26ae
Parent 6f56e540
Child 10848680

Added by Francois POIROTTE over 14 years ago

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

View differences:

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