Project

General

Profile

Revision 02c4a1e7

ID02c4a1e751b5e5251c5a542fd5b668951a15fa26
Parent 04cd2200
Child d3bc1ee3

Added by Francois POIROTTE almost 7 years ago

[#1543] Compatibilité TG 2.3.x

Change-Id: I9171224d261ccbc2d9a1b3d3c9107f10742bdd54
Refs: #1543

View differences:

vigiboard/controllers/root.py
5 5

  
6 6
"""VigiBoard Controller"""
7 7

  
8
import gettext
9
import os.path
8 10
from datetime import datetime
9 11
from time import mktime
10 12

  
11 13
from pkg_resources import resource_filename, working_set
12 14

  
13 15
from tg.exceptions import HTTPNotFound
14
from tg.controllers import CUSTOM_CONTENT_TYPE
15 16
from tg import expose, validate, require, flash, url, \
16 17
    tmpl_context, request, response, config, session, redirect
17
from webhelpers import paginate
18
from tw.forms import validators
19
from pylons.i18n import ugettext as _, lazy_ugettext as l_, get_lang
18
from tg.support import paginate
19
from formencode import validators, schema
20
from tg.i18n import ugettext as _, lazy_ugettext as l_, get_lang
20 21
from sqlalchemy import asc
21 22
from sqlalchemy.sql import func
22 23
from sqlalchemy.orm import aliased
23 24
from sqlalchemy.sql.expression import or_
24
from repoze.what.predicates import Any, All, NotAuthorizedError, \
25
                                    has_permission, not_anonymous
26
from formencode import schema
25
from tg.predicates import Any, All, NotAuthorizedError, \
26
                            has_permission, not_anonymous
27 27

  
28 28
from vigilo.models.session import DBSession
29 29
from vigilo.models.tables import Event, EventHistory, CorrEvent, Host, \
......
67 67
    Le controller général de vigiboard
68 68
    """
69 69
    _tickets = None
70
    _use_index_fallback = True
70 71

  
71 72
    error = ErrorController()
72 73
    autocomplete = AutoCompleteController()
......
126 127
        )
127 128

  
128 129
        # Paramètres de tri
129
        sort = validators.String(if_missing=None)
130
        sort = validators.UnicodeString(if_missing='')
130 131
        order = validators.OneOf(['asc', 'desc'], if_missing='asc')
131 132

  
132
        # Nécessaire pour que les critères de recherche soient conservés.
133
        allow_extra_fields = True
134

  
135
        # 2ème validation, cette fois avec les champs
136
        # du formulaire de recherche.
133
        # Le fait de chaîner la validation avec le formulaire de recherche
134
        # permet de convertir les critères de recherche vers leur type.
137 135
        chained_validators = [create_search_form.validator]
138 136

  
137
        allow_extra_fields = True
138

  
139 139
    @validate(
140 140
        validators=IndexSchema(),
141 141
        error_handler = process_form_errors)
142
    @expose('events_table.html', content_type=CUSTOM_CONTENT_TYPE)
142
    @expose('events_table.html')
143 143
    @require(access_restriction)
144
    def index(self, page, sort=None, order=None, **search):
144
    def index(self, page=None, sort=None, order=None, **search):
145 145
        """
146 146
        Page d'accueil de Vigiboard. Elle affiche, suivant la page demandée
147 147
        (page 1 par defaut), la liste des événements, rangés par ordre de prise
......
181 181
            Event.idsupitem == aggregates.items.c.idsupitem))
182 182
        aggregates.add_order_by(asc(aggregates.items.c.hostname))
183 183

  
184
        # Certains arguments sont réservés dans routes.util.url_for().
185
        # On effectue les substitutions adéquates.
186
        # Par exemple: "host" devient "host_".
187
        reserved = ('host', 'anchor', 'protocol', 'qualified')
188
        for column in search.copy():
189
            if column in reserved:
190
                search[column + '_'] = search[column]
191
                del search[column]
192

  
193 184
        # On ne garde que les champs effectivement renseignés.
194 185
        for column in search.copy():
195 186
            if not search[column]:
......
260 251
        )
261 252

  
262 253

  
263
    @expose(content_type=CUSTOM_CONTENT_TYPE)
254
    @expose()
264 255
    def i18n(self):
265
        import gettext
266
        import pylons
267
        import os.path
268

  
269
        # Repris de pylons.i18n.translation:_get_translator.
270
        conf = pylons.config.current_conf()
256
        # Repris de tg.i18n:_get_translator.
257
        conf = config.current_conf()
271 258
        try:
272
            rootdir = conf['pylons.paths']['root']
259
            localedir = conf['localedir']
273 260
        except KeyError:
274
            rootdir = conf['pylons.paths'].get('root_path')
275
        localedir = os.path.join(rootdir, 'i18n')
261
            localedir = os.path.join(conf['paths']['root'], 'i18n')
276 262

  
277 263
        lang = get_lang()
278 264

  
279 265
        # Localise le fichier *.mo actuellement chargé
280 266
        # et génère le chemin jusqu'au *.js correspondant.
281
        filename = gettext.find(conf['pylons.package'], localedir,
267
        filename = gettext.find(conf['package'].__name__, localedir,
282 268
            languages=lang)
283 269
        js = filename[:-3] + '.js'
284 270

  
......
311 297
        error_handler = process_form_errors)
312 298
    @expose('raw_events_table.html')
313 299
    @require(access_restriction)
314
    def masked_events(self, idcorrevent, page):
300
    def masked_events(self, idcorrevent, page=1):
315 301
        """
316 302
        Affichage de la liste des événements bruts masqués d'un événement
317 303
        corrélé (événements agrégés dans l'événement corrélé).
......
397 383
        error_handler = process_form_errors)
398 384
    @expose('history_table.html')
399 385
    @require(access_restriction)
400
    def event(self, idevent, page):
386
    def event(self, idevent, page=1):
401 387
        """
402 388
        Affichage de l'historique d'un événement brut.
403 389
        Pour accéder à cette page, l'utilisateur doit être authentifié.
......
473 459
        error_handler = process_form_errors)
474 460
    @expose('events_table.html')
475 461
    @require(access_restriction)
476
    def item(self, page, host, service, sort=None, order=None):
462
    def item(self, page=1, host=None, service=None, sort=None, order=None):
477 463
        """
478 464
        Affichage de l'historique de l'ensemble des événements corrélés
479 465
        jamais ouverts sur l'hôte / service demandé.

Also available in: Unified diff