Project

General

Profile

Revision 1101e03e

ID1101e03e74ca3e605d453ca62284cca32dbecc17
Parent 24d4f8b0
Child 90a4b850

Added by Francois POIROTTE over 14 years ago

Mise à jour des contrôleurs de VigiBoard et des templates pour tenir permettre le filtrage par date des événements.

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

View differences:

vigiboard/controllers/root.py
60 60

  
61 61
    @expose('vigiboard.html')
62 62
    @require(Any(not_anonymous(), msg=l_("You need to be authenticated")))
63
    def default(self, page = None, host = None, service = None, output = None,
64
            trouble_ticket=None, *argv, **krgv):
63
    def default(self, page=None, host=None, service=None, output=None,
64
            trouble_ticket=None, from_date=None, to_date=None,
65
            *argv, **krgv):
65 66
            
66 67
        """
67 68
        Page d'accueil de Vigiboard. Elle affiche, suivant la page demandée
......
103 104
            'host': '',
104 105
            'service': '',
105 106
            'output': '',
106
            'tt': ''
107
            'tt': '',
108
            'from_date': '',
109
            'to_date': '',
107 110
        }
108 111
        # Application des filtres si nécessaire
109 112
        if host:
......
114 117
        if service:
115 118
            search['service'] = service
116 119
            service = sql_escape_like(service)
117
            aggregates.add_filter(ServiceLowLevel.servicename.ilike('%%%s%%' % service))
120
            aggregates.add_filter(ServiceLowLevel.servicename.ilike(
121
                '%%%s%%' % service))
118 122

  
119 123
        if output:
120 124
            search['output'] = output
......
127 131
            aggregates.add_filter(CorrEvent.trouble_ticket.ilike(
128 132
                '%%%s%%' % trouble_ticket))
129 133

  
134
        if from_date:
135
            search['from_date'] = from_date
136
            # TRANSLATORS: Format de date et heure.
137
            try:
138
                from_date = datetime.strptime(
139
                    from_date, _('%Y-%m-%d %I:%M:%S %p'))
140
            except ValueError:
141
                to_date = None
142
            aggregates.add_filter(CorrEvent.timestamp_active >= from_date)
143

  
144
        if to_date:
145
            search['to_date'] = to_date
146
            # TRANSLATORS: Format de date et heure.
147
            try:
148
                to_date = datetime.strptime(
149
                    to_date, _('%Y-%m-%d %I:%M:%S %p'))
150
            except ValueError:
151
                to_date = None
152
            aggregates.add_filter(CorrEvent.timestamp_active <= to_date)
153

  
130 154
        # Calcul des éléments à afficher et du nombre de pages possibles
131 155
        total_rows = aggregates.num_rows()
132 156
        items_per_page = int(config['vigiboard_items_per_page'])
......
144 168
            id_first_row += 1
145 169

  
146 170
        return dict(
147
                   events = aggregates.events,
148
                   rows_info = {
149
                       'id_first_row': id_first_row,
150
                       'id_last_row': id_last_row,
151
                       'total_rows': total_rows,
152
                   },
153
                   nb_pages = nb_pages,
154
                   page = page,
155
                   event_edit_status_options = edit_event_status_options,
156
                   history = [],
157
                   hist_error = False,
158
                   plugin_context = aggregates.context_fct,
159
                   search = search,
160
                   refresh_times=self.refresh_times,
161
                )
171
            events = aggregates.events,
172
            rows_info = {
173
                'id_first_row': id_first_row,
174
                'id_last_row': id_last_row,
175
                'total_rows': total_rows,
176
            },
177
            nb_pages = nb_pages,
178
            page = page,
179
            event_edit_status_options = edit_event_status_options,
180
            history = [],
181
            hist_error = False,
182
            plugin_context = aggregates.context_fct,
183
            search = search,
184
            refresh_times=self.refresh_times,
185
        )
162 186
      
163 187
    @validate(validators={'idcorrevent': validators.Int(not_empty=True)},
164 188
            error_handler=process_form_errors)
......
281 305
                        'host': None,
282 306
                        'service': None,
283 307
                        'output': None,
284
                        'tt': None
308
                        'tt': None,
309
                        'from_date': None,
310
                        'to_date': None,
285 311
                    },
286 312
                   refresh_times=self.refresh_times,
287 313
                )
......
339 365
                        'host': None,
340 366
                        'service': None,
341 367
                        'output': None,
342
                        'tt': None
368
                        'tt': None,
369
                        'from_date': None,
370
                        'to_date': None,
343 371
                    },
344 372
                    refresh_times=self.refresh_times,
345 373
                )
vigiboard/controllers/vigiboardrequest.py
10 10
from tg import url, config, tmpl_context
11 11
from vigiboard.model import DBSession
12 12
from sqlalchemy import not_, and_, asc, desc, sql
13
from sqlalchemy.sql.expression import or_
13 14
from sqlalchemy.orm import aliased
14 15
from vigiboard.widgets.edit_event import EditEventForm
15 16
from vigiboard.widgets.search_form import SearchForm
......
52 53
            (ServiceLowLevel, Event.idsupitem == ServiceLowLevel.idservice),
53 54
            (Host, Host.idhost == ServiceLowLevel.idhost),
54 55
            (StateName, StateName.idstatename == Event.current_state),
55
            (HOST_GROUP_TABLE, HOST_GROUP_TABLE.c.idhost == Host.idhost),
56
            (SERVICE_GROUP_TABLE, SERVICE_GROUP_TABLE.c.idservice == \
57
                ServiceLowLevel.idservice),
58 56
        ]
59 57

  
60 58
        self.outerjoin = [
59
            (HOST_GROUP_TABLE, HOST_GROUP_TABLE.c.idhost == Host.idhost),
60
            (SERVICE_GROUP_TABLE, SERVICE_GROUP_TABLE.c.idservice == \
61
                ServiceLowLevel.idservice),
61 62
        ]
62 63

  
63 64
        self.filter = [
64
                HOST_GROUP_TABLE.c.idgroup.in_(self.user_groups),
65
                SERVICE_GROUP_TABLE.c.idgroup.in_(self.user_groups),
65
                or_(
66
                    HOST_GROUP_TABLE.c.idgroup.in_(self.user_groups),
67
                    SERVICE_GROUP_TABLE.c.idgroup.in_(self.user_groups),
68
                ),
66 69

  
67 70
                # On masque les événements avec l'état OK
68 71
                # et traités (status == u'AAClosed').
......
446 449
    
447 450
        # Dialogue de recherche
448 451
        tmpl_context.search_form = SearchForm('search_form', lang=self.lang,
449
                                              # TRANSLATORS : Format de date  
450
                                              date_format=_('%Y-%m-%d %I:%M:%S %P'))
452
                                        # TRANSLATORS: Format de date et heure.
453
                                        date_format=_('%Y-%m-%d %I:%M:%S %p'))
451 454
        
452 455
        # Dialogue de détail d'un événement
453 456

  
vigiboard/widgets/search_form.py
33 33
        super(SearchForm, self).__init__(id, *args, **kwargs)
34 34

  
35 35
        self.children.append(CalendarDateTimePicker(id + '_from_date', 
36
                                label_text=l_('From:'),
36
                                name = 'from_date',
37
                                label_text = l_('From:'),
37 38
                                button_text = l_("Choose"),
38 39
                                date_format = date_format, 
39 40
                                not_empty = False,
40 41
                                calendar_lang=lang))
41 42
        
42
        self.children.append(CalendarDateTimePicker(id + '_to_date', 
43
                                label_text=l_('To:'),
43
        self.children.append(CalendarDateTimePicker(id + '_to_date',
44
                                name = 'to_date',
45
                                label_text = l_('To:'),
44 46
                                button_text = l_("Choose"),
45 47
                                date_format = date_format, 
46 48
                                not_empty = False,

Also available in: Unified diff