Project

General

Profile

Revision 8484b8bd

ID8484b8bdcea522719db789d3794e6a8382230d89
Parent 348eec2c
Child bc94248f

Added by Francois POIROTTE over 14 years ago

Version corrigée de Vigiboard. Encore des bugs dans les tests.

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@713 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

vigiboard/controllers/root.py
9 9
from pylons.controllers.util import abort
10 10
from sqlalchemy import asc
11 11
from vigiboard.model import DBSession
12
from vigiboard.model import Event, EventHistory, Host, User, HostGroup
12
from vigiboard.model import Event, EventHistory, EventsAggregate, \
13
                            Host, HostGroup, \
14
                            User
13 15
from repoze.what.predicates import Any, not_anonymous
14 16
from vigiboard.widgets.edit_event import edit_event_status_options
15 17
from vigiboard.controllers.vigiboardrequest import VigiboardRequest
......
37 39
            redirect('/')
38 40

  
39 41
    @expose('vigiboard.templates.vigiboard')
40
    @require(Any(not_anonymous(), msg="You need to be authenticated"))
42
#    @require(Any(not_anonymous(), msg=_("You need to be authenticated")))
41 43
    def default(self, page = None, host = None, service = None, output = None,
42 44
            trouble_ticket=None, *argv, **krgv):
43 45
            
......
77 79
            events.add_filter(Event.servicename.like('%%%s%%' % service))
78 80
        if output :
79 81
            search['output'] = output
80
            events.add_filter(Event.output.like('%%%s%%' % output))
82
            events.add_filter(Event.message.like('%%%s%%' % output))
81 83
        if trouble_ticket :
82 84
            search['tt'] = trouble_ticket
83
            events.add_filter(Event.trouble_ticket.like(
85
            events.add_filter(EventsAggregate.trouble_ticket.like(
84 86
                '%%%s%%' % trouble_ticket))
85 87

  
86 88
        # Calcul des éléments à afficher et du nombre de pages possibles
......
111 113
               search = search,
112 114
            )
113 115
      
114
    @validate(validators={'idevent':validators.Int(not_empty=True)},
116
    @validate(validators={'idevent':validators.String(not_empty=True)},
115 117
            error_handler=process_form_errors)
116 118
    @expose('json')
117 119
    @require(Any(not_anonymous(), msg=_("You need to be authenticated")))
118
    def history_dialog (self, idevent) :
120
    def history_dialog(self, idevent):
119 121
        
120 122
        """
121 123
        JSon renvoyant les éléments pour l'affichage de la fenêtre de dialogue
......
130 132
                    ).get('repoze.who.userid')
131 133
        user = User.by_user_name(username)
132 134

  
133
        events = DBSession.query(Event.severity, Event.idevent,
134
                        Event.hostname, Event.servicename
135
                 ).join(( HostGroup , Event.hostname == HostGroup.hostname )
135
        event = DBSession.query(
136
                        EventsAggregate.severity,
137
                        Event.hostname,
138
                        Event.servicename,
139
                 ).join(
140
                    (Event, EventsAggregate.idcause == Event.idevent),
141
                    (HostGroup, Event.hostname == HostGroup.hostname),
136 142
                 ).filter(HostGroup.groupname.in_(user.groups)
137
                 ).filter(Event.idevent == idevent)[0]
138
        initial_state = DBSession.query(EventHistory
143
                 ).filter(EventsAggregate.idcause == idevent).one()
144

  
145
        initial_state = DBSession.query(
146
                    EventHistory,
139 147
                 ).filter(EventHistory.idevent == idevent
140 148
                 ).order_by(asc(EventHistory.timestamp)
141 149
                 ).order_by(asc(EventHistory.type_action))
150

  
142 151
        if initial_state.count() > 0 :
143 152
            for i in initial_state:
144 153
                if i.value != '' and i.value is not None:
......
155 164
                config['vigiboard_links.eventdetails'].iteritems():
156 165

  
157 166
            eventdetails[edname] = edlink[1] % {
158
                    'idevent': events.idevent,
159
                    'host': events.hostname,
160
                    'service': events.servicename
167
                    'idevent': idevent,
168
                    'host': event.hostname,
169
                    'service': event.servicename
161 170
                    }
162 171

  
163 172
        return dict(
164 173
                initial_state = severity[int(initial_state)],
165
                current_state = severity[events.severity],
166
                idevent = events.idevent,
167
                host = events.hostname,
168
                service = events.servicename,
174
                current_state = severity[event.severity],
175
                idevent = idevent,
176
                host = event.hostname,
177
                service = event.servicename,
169 178
                eventdetails = eventdetails
170 179
            )
171 180

  
172
    @validate(validators={'idevent':validators.Int(not_empty=True)},
181
    @validate(validators={'idevent':validators.String(not_empty=True)},
173 182
            error_handler=process_form_errors)
174 183
    @expose('vigiboard.templates.vigiboard')
175 184
    @require(Any(not_anonymous(), msg=_("You need to be authenticated")))
......
182 191
        """
183 192

  
184 193
        events = VigiboardRequest()
185
        events.add_filter(Event.idevent == idevent)
194
        events.add_filter(EventsAggregate.idcause == idevent)
186 195
        
187 196
        # Vérification que l'évènement existe
188 197
        if events.num_rows() != 1 :
......
194 203
        events.generate_tmpl_context() 
195 204

  
196 205
        return dict(
197
               events = events.events,
198
               id_first_row = 1,
199
               id_last_row = 1,
200
               total_row = 1,
201
               pages = [1],
202
               page = 1,
203
               event_edit_status_options = edit_event_status_options,
204
               history = events.hist,
205
               hist_error = True,
206
               plugin_context = events.context_fct,
207
               search = {'host':None,'service':None,'output':None,'tt':None}
208
            )
206
                    events = events.events,
207
                    rows_info = {
208
                        'id_first_row': 1,
209
                        'id_last_row': 1,
210
                        'total_rows': 1,
211
                    },
212
                    pages = [1],
213
                    page = 1,
214
                    event_edit_status_options = edit_event_status_options,
215
                    history = events.hist,
216
                    hist_error = True,
217
                    plugin_context = events.context_fct,
218
                    search = {
219
                        'host': None,
220
                        'service': None,
221
                        'output': None,
222
                        'tt': None
223
                    }
224
                )
209 225

  
210 226
    @validate(validators={'host':validators.NotEmpty(),
211 227
        'service':validators.NotEmpty()}, error_handler=process_form_errors)
......
235 251
        events.format_history()
236 252
        events.generate_tmpl_context() 
237 253
        return dict(
238
               events = events.events,
239
               id_first_row = 1,
240
               id_last_row = 1,
241
               total_row = 1,
242
               pages = [1],
243
               page = 1,
244
               event_edit_status_options = edit_event_status_options,
245
               history = events.hist,
246
               hist_error = True,
247
               plugin_context = events.context_fct,
248
               search = {'host':None,'service':None,'output':None,'tt':None}
249
            )
254
                    events = events.events,
255
                    rows_info = {
256
                        'id_first_row': 1,
257
                        'id_last_row': 1,
258
                        'total_rows': 1,
259
                    },
260
                    pages = [1],
261
                    page = 1,
262
                    event_edit_status_options = edit_event_status_options,
263
                    history = events.hist,
264
                    hist_error = True,
265
                    plugin_context = events.context_fct,
266
                    search = {
267
                        'host': None,
268
                        'service': None,
269
                        'output': None,
270
                        'tt': None
271
                    }
272
                )
250 273

  
251 274
    @validate(validators={
252
        "id":validators.Regex(r'^[0-9]+(,[0-9]*)*,?$'),
275
        "id":validators.Regex(r'^[^,]+(,[^,]*)*,?$'),
253 276
        "trouble_ticket":validators.Regex(r'^[0-9]*$'),
254 277
        "status":validators.OneOf(['NoChange', 'None', 'Acknowledged',
255 278
                'AAClosed'])
......
259 282
        
260 283
        """
261 284
        Mise à jour d'un évènement suivant les arguments passés.
262
        Cela peut être un changement de ticket ou un changement de statu.
285
        Cela peut être un changement de ticket ou un changement de statut.
263 286
        
264 287
        @param krgv['id']: Le ou les identifiants des évènements à traiter
265 288
        @param krgv['tt']: Nouveau numéro du ticket associé.
......
275 298
            ids = ids[:-1]
276 299
        
277 300
        events = VigiboardRequest()
278
        events.add_filter(Event.idevent.in_(ids))
301
        events.add_filter(EventsAggregate.idcause.in_(ids))
279 302
        
280 303
        # Vérification que au moins un des identifiants existe et est éditable
281 304
        if events.num_rows() <= 0 :
......
285 308
        # Modification des évènements et création d'un historique
286 309
        # pour chacun d'eux
287 310
        
288
        username = request.environ.get('repoze.who.identity'
289
                ).get('repoze.who.userid')
311
        username = request.environ['repoze.who.identity']['repoze.who.userid']
290 312

  
291 313
        for req in events.req :
292
            if isinstance(req, Event):
314
            if isinstance(req, EventsAggregate):
293 315
                event = req
294 316
            else:
295 317
                event = req[0]
318

  
296 319
            if krgv['trouble_ticket'] != '' :
297 320
                event.trouble_ticket = krgv['trouble_ticket']
298
                history = EventHistory(type_action = "Ticket change",
299
                    idevent = event.idevent, value = '', text = '',
300
                    username = username)
321
                history = EventHistory(
322
                        type_action="Ticket change",
323
                        idevent=event.idcause,
324
                        value='',
325
                        text='',
326
                        username=username,
327
                    )
301 328
                DBSession.add(history)   
329

  
302 330
            if krgv['status'] != 'NoChange' :
303 331
                event.status = krgv['status']
304 332
                history = EventHistory(
305
                        type_action = "Acknowlegement change state",
306
                        idevent = event.idevent, value = '', text = '',
307
                        username = username)
333
                        type_action="Acknowlegement change state",
334
                        idevent=event.idcause,
335
                        value='',
336
                        text='',
337
                        username=username,
338
                    )
308 339
                DBSession.add(history)
309 340
       
310 341
        flash(_('Updated successfully'))
......
336 367
        except:
337 368
            raise
338 369
    
339
    @validate(validators= {"fontsize": validators.Int()},
340
                    error_handler = process_form_errors)
370
#    @validate(validators= {"fontsize": validators.Int()},
371
#                    error_handler = process_form_errors)
341 372
    @expose('json')
342 373
    def set_fontsize(self, fontsize):
343 374
        """

Also available in: Unified diff