Project

General

Profile

Revision 77b7746d

ID77b7746d287c14989e0f03272d0ce2cea3fb77e7
Parent 24097891
Child ded8142d

Added by Francois POIROTTE over 7 years ago

[#1543] Compatibilité avec TurboGears 2.3.x

Change-Id: Ic87889229488dbc0f47b267bbd933e7b9f2ce5be
Refs: #1543

View differences:

app_cfg.py
20 20

  
21 21
import vigigraph
22 22
from vigilo.turbogears import VigiloAppConfig
23
from vigigraph.lib import app_globals, helpers # pylint: disable-msg=W0611
23
from vigigraph.lib import app_globals # pylint: disable-msg=W0611
24 24
# W0611: Unused import: imports nécessaires pour le fonctionnement
25 25

  
26 26
base_config = VigiloAppConfig('VigiGraph')
setup.cfg
1 1
[nosetests]
2
with-pylons=test.ini
3 2
cover-package=vigigraph
4 3
tests=vigigraph/tests
5 4

  
setup.py
42 42
        "vigilo-turbogears",
43 43
        ],
44 44
    zip_safe=False, # pour pouvoir déplacer app_cfg.py
45
    paster_plugins=['PasteScript', 'Pylons', 'TurboGears2', 'tg.devtools'],
46 45
    packages=find_packages(exclude=['ez_setup']),
47 46
    include_package_data=True,
48 47
    test_suite='nose.collector',
......
69 68
        'paste.app_factory': [
70 69
            'main = vigigraph.config.middleware:make_app',
71 70
        ],
72
        'paste.app_install': [
73
            'main = pylons.util:PylonsInstaller',
74
        ],
75 71
        'vigilo.models': [
76 72
            'populate_db = vigigraph.websetup:populate_db',
77 73
        ],
vigigraph/controllers/root.py
13 13
import os.path
14 14
import logging
15 15

  
16
import pylons
17 16
from tg import expose, require, config, response
18
from tg.controllers import CUSTOM_CONTENT_TYPE
19
from pylons.i18n import lazy_ugettext as l_, get_lang
17
from tg.i18n import lazy_ugettext as l_, get_lang
20 18
from repoze.what.predicates import Any, All, not_anonymous, \
21 19
                                    has_permission, in_group
22 20
from pkg_resources import resource_filename
......
62 60

  
63 61
    @expose()
64 62
    def i18n(self):
65
        # Repris de pylons.i18n.translation:_get_translator.
66
        conf = pylons.config.current_conf()
63
        # Repris de tg.i18n.translation:_get_translator.
64
        conf = config.current_conf()
67 65
        try:
68
            rootdir = conf['pylons.paths']['root']
66
            localedir = conf['localedir']
69 67
        except KeyError:
70
            rootdir = conf['pylons.paths'].get('root_path')
71
        localedir = os.path.join(rootdir, 'i18n')
68
            localedir = os.path.join(conf['paths']['root'], 'i18n')
72 69

  
73 70
        lang = get_lang()
74 71

  
75 72
        # Localise le fichier *.mo actuellement chargé
76 73
        # et génère le chemin jusqu'au *.js correspondant.
77
        filename = gettext.find(conf['pylons.package'], localedir,
74
        filename = gettext.find(conf['package'].__name__, localedir,
78 75
            languages=lang)
79 76
        js = filename[:-3] + '.js'
80 77
        # Récupère et envoie le contenu du fichier de traduction *.js.
vigigraph/controllers/rpc.py
13 13
import urllib2
14 14
import logging
15 15

  
16
from pylons.i18n import ugettext as _, lazy_ugettext as l_, \
17
                        lazy_ungettext as ln_
16
from tg.i18n import ugettext as _, lazy_ugettext as l_, lazy_ungettext as ln_
18 17
from tg import expose, request, redirect, tmpl_context, \
19 18
    config, validate, flash, exceptions as http_exc
20 19

  
......
28 27
from vigilo.turbogears.controllers import BaseController
29 28
from vigilo.turbogears.helpers import get_current_user
30 29
from vigilo.turbogears.controllers.proxy import get_through_proxy
31
from vigilo.turbogears.decorators import paginate
30
from tg.decorators import paginate
32 31

  
33 32
from vigilo.models.session import DBSession
34 33
from vigilo.models.tables import Host, SupItemGroup, PerfDataSource
......
138 137
        validators = SearchHostAndGraphSchema(),
139 138
        error_handler = process_form_errors)
140 139
    @expose('json')
141
    def searchHostAndGraph(self, search_form_host, search_form_graph):
140
    def searchHostAndGraph(self, search_form_host=None, search_form_graph=None):
142 141
        """
143 142
        Determination des couples (hote-graphe) repondant aux criteres de
144 143
        recherche sur hote et/ou graphe.
......
312 311
        validators = GetIndicatorsSchema(),
313 312
        error_handler = process_form_errors)
314 313
    @expose('json')
315
    def getIndicators(self, host, graph, nocache):
314
    def getIndicators(self, host, graph, nocache=None):
316 315
        """
317 316
        Liste d indicateurs associes a un graphe
318 317

  
......
337 336
        validators = StartTimeSchema(),
338 337
        error_handler = process_form_errors)
339 338
    @expose('json')
340
    def startTime(self, host, nocache):
339
    def startTime(self, host, nocache=None):
341 340
        # urllib2.quote() ne fonctionne pas sur le type unicode.
342 341
        # On transcode d'abord le nom d'hôte en UTF-8.
343 342
        quote_host = isinstance(host, unicode) and \
vigigraph/lib/helpers.py
1
# -*- coding: utf-8 -*-
2
# Copyright (C) 2011-2016 CS-SI
3
# License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
4

  
5
"""WebHelpers used in vigigraph."""
6

  
7
#from webhelpers import date, feedgenerator, html, number, misc, text
vigigraph/tests/functional/test_fullhostpage.py
7 7
permettant d'afficher tous les graphes
8 8
associés à un hôte.
9 9
"""
10
import transaction, urllib2
10
import transaction
11
import urllib
11 12

  
12 13
from vigigraph.tests import TestController
13 14
from vigilo.models.session import DBSession
......
40 41
            if hosts[host]:
41 42
                response = self.app.get(
42 43
                    '/rpc/fullHostPage?host=%s' %
43
                        urllib2.quote(host.encode('utf-8')),
44
                        urllib.quote_plus(host.encode('utf-8')),
44 45
                    extra_environ={"REMOTE_USER": user}
45 46
                )
46 47
                index = int(host[4])
47 48
                self.assertTrue(
48 49
                    '/vigirrd/%s/index?graphtemplate=%s' % (
49
                        urllib2.quote((u'host%d éà' % index).encode('utf-8')),
50
                        urllib2.quote((u'graph%d éà' % index).encode('utf-8')),
50
                        urllib.quote((u'host%d éà' % index).encode('utf-8')),
51
                        urllib.quote_plus((u'graph%d éà' % index).encode('utf-8')),
51 52
                    ) in response.unicode_body
52 53
                )
53 54
            else:
54 55
                response = self.app.get(
55 56
                    '/rpc/fullHostPage?host=%s' %
56
                        urllib2.quote(host.encode('utf-8')),
57
                        urllib.quote_plus(host.encode('utf-8')),
57 58
                    extra_environ={"REMOTE_USER": user},
58 59
                    status = 403
59 60
                )
......
90 91
        for host in (u'host1 éà', u'host2 éà', u'host3 éà'):
91 92
            self.app.get(
92 93
                '/rpc/fullHostPage?host=%s' %
93
                    urllib2.quote(host.encode('utf-8'), ''),
94
                    urllib.quote_plus(host.encode('utf-8'), ''),
94 95
                status=401
95 96
            )
96 97

  
vigigraph/tests/functional/test_opensearch.py
6 6
Teste l'utilisation du module de recherche
7 7
OpenSearch intégré au navigateur.
8 8
"""
9
import transaction, urllib2
9
import transaction
10
import urllib
10 11

  
11 12
from vigigraph.tests import TestController
12 13
from vigilo.models.session import DBSession
......
39 40
            '/rpc/searchHost?query=host*',
40 41
            extra_environ={"REMOTE_USER": user}
41 42
        )
42
        print repr(response.body)
43 43
        for host in hosts:
44 44
            if hosts[host]:
45 45
                self.assertTrue(
46 46
                    u'/rpc/fullHostPage?host=%s' %
47
                        urllib2.quote(host.encode('utf-8'))
47
                        urllib.quote_plus(host.encode('utf-8'))
48 48
                    in response.unicode_body
49 49
                )
50 50
            else:
51 51
                self.assertTrue(
52 52
                    u'/rpc/fullHostPage?host=%s' %
53
                        urllib2.quote(host.encode('utf-8'))
53
                        urllib.quote_plus(host.encode('utf-8'))
54 54
                    not in response.unicode_body
55 55
                )
56 56

  
......
86 86
        for host in (u'host1 éà', u'host2 éà', u'host3 éà'):
87 87
            self.app.get(
88 88
                '/rpc/fullHostPage?host=%s' %
89
                    urllib2.quote(host.encode('utf-8'), ''),
89
                    urllib.quote_plus(host.encode('utf-8'), ''),
90 90
                status=401
91 91
            )
92 92

  
vigigraph/tests/functional/test_search_form.py
5 5
"""
6 6
Suite de tests du formulaire de recherche de VigiGraph.
7 7
"""
8
import transaction, urllib2
8
import transaction
9
import urllib
9 10

  
10 11
from vigigraph.tests import TestController
11 12
from vigilo.models.session import DBSession
......
59 60
        # Récupération des résultats obtenus après une recherche
60 61
        # sur l'hôte 'host1' pour l'utilisateur 'manager'
61 62
        response = self.app.post(
62
            '/rpc/searchHostAndGraph?search_form_host=%s' %
63
                urllib2.quote(host1.name.encode('utf-8'), ''),
64
            {},
63
            '/rpc/searchHostAndGraph',
64
            {'search_form_host': host1.name},
65 65
            extra_environ={'REMOTE_USER': 'manager'}
66 66
        )
67 67
        json = response.json
......
79 79
        # Récupération des résultats obtenus après une recherche
80 80
        # sur l'hôte 'host1' pour l'utilisateur 'poweruser'
81 81
        response = self.app.post(
82
            '/rpc/searchHostAndGraph?search_form_host=%s' %
83
                urllib2.quote(host1.name.encode('utf-8'), ''),
84
            {},
82
            '/rpc/searchHostAndGraph',
83
            {'search_form_host': host1.name},
85 84
            extra_environ={'REMOTE_USER': 'poweruser'}
86 85
        )
87 86
        json = response.json
......
99 98
        # Récupération des résultats obtenus après une recherche
100 99
        # sur l'hôte 'host2' pour l'utilisateur 'poweruser'
101 100
        response = self.app.post(
102
            '/rpc/searchHostAndGraph?search_form_host=%s' %
103
                urllib2.quote(host2.name.encode('utf-8'), ''),
104
            {},
101
            '/rpc/searchHostAndGraph',
102
            {'search_form_host': host2.name},
105 103
            extra_environ={'REMOTE_USER': 'poweruser'}
106 104
        )
107 105
        json = response.json
......
119 117
        # Récupération des résultats obtenus après une recherche
120 118
        # sur l'hôte 'host2' pour l'utilisateur 'user'
121 119
        response = self.app.post(
122
            '/rpc/searchHostAndGraph?search_form_host=%s' %
123
                urllib2.quote(host2.name.encode('utf-8'), ''),
124
            {},
120
            '/rpc/searchHostAndGraph',
121
            {'search_form_host': host2.name},
125 122
            extra_environ={'REMOTE_USER': 'user'}
126 123
        )
127 124
        json = response.json
......
152 149
        # Récupération des résultats obtenus après une recherche
153 150
        # sur l'hôte 'host1' pour l'utilisateur 'user'
154 151
        response = self.app.post(
155
            '/rpc/searchHostAndGraph?search_form_host=%s' %
156
                urllib2.quote(host1.name.encode('utf-8'), ''),
157
            {},
152
            '/rpc/searchHostAndGraph',
153
            {'search_form_host': host1.name},
158 154
            extra_environ={'REMOTE_USER': 'user'}
159 155
        )
160 156
        json = response.json
......
171 167
        # Récupération des résultats obtenus après une recherche
172 168
        # sur l'hôte 'host3' pour l'utilisateur 'user'
173 169
        response = self.app.post(
174
            '/rpc/searchHostAndGraph?search_form_host=%s' %
175
                urllib2.quote(host3.name.encode('utf-8'), ''),
176
            {},
170
            '/rpc/searchHostAndGraph',
171
            {'search_form_host': host3.name},
177 172
            extra_environ={'REMOTE_USER': 'user'}
178 173
        )
179 174
        json = response.json
......
191 186
        # Récupération des résultats obtenus après une recherche
192 187
        # sur l'hôte 'host1' pour l'utilisateur 'visitor'
193 188
        response = self.app.post(
194
            '/rpc/searchHostAndGraph?search_form_host=%s' %
195
                urllib2.quote(host1.name.encode('utf-8'), ''),
196
            {},
189
            '/rpc/searchHostAndGraph',
190
            {'search_form_host': host1.name},
197 191
            extra_environ={'REMOTE_USER': 'visitor'}
198 192
        )
199 193
        json = response.json
......
211 205
        # Récupération des résultats obtenus après une recherche
212 206
        # sur l'hôte 'host3' pour l'utilisateur 'visitor'
213 207
        response = self.app.post(
214
            '/rpc/searchHostAndGraph?search_form_host=%s' %
215
                urllib2.quote(host3.name.encode('utf-8'), ''),
216
            {},
208
            '/rpc/searchHostAndGraph',
209
            {'search_form_host': host3.name},
217 210
            extra_environ={'REMOTE_USER': 'visitor'}
218 211
        )
219 212
        json = response.json
......
241 234
        # sur l'hôte 'host1' pour un utilisateur anonyme :
242 235
        # le contrôleur doit retourner une erreur 401.
243 236
        self.app.post(
244
            '/rpc/searchHostAndGraph?search_form_host=%s' %
245
                urllib2.quote(host1.name.encode('utf-8'), ''),
246
            {},
237
            '/rpc/searchHostAndGraph',
238
            {'search_form_host': host1.name},
247 239
            status=401
248 240
        )
249 241

  
......
255 247
        # Récupération des résultats obtenus après une recherche
256 248
        # sur un hôte inexistant pour l'utilisateur 'manager'
257 249
        response = self.app.post(
258
        '/rpc/searchHostAndGraph?search_form_host=hote_totalement_inexistant', {
259
            }, extra_environ={'REMOTE_USER': 'manager'})
250
            '/rpc/searchHostAndGraph',
251
            {'search_form_host': 'hote_totalement_inexistant'},
252
            extra_environ={'REMOTE_USER': 'manager'}
253
        )
260 254
        json = response.json
261 255

  
262 256
        # On s'assure que la liste retournée est vide
......
284 278
        # Récupération des résultats obtenus après une recherche sur
285 279
        # un graphe sans préciser d'hôte par l'utilisateur 'manager'.
286 280
        response = self.app.post(
287
            '/rpc/searchHostAndGraph?search_form_graph=%s' %
288
                urllib2.quote(graph1.name.encode('utf-8'), ''),
289
            {},
281
            '/rpc/searchHostAndGraph',
282
            {'search_form_graph': graph1.name},
290 283
            extra_environ={'REMOTE_USER': 'manager'}
291 284
        )
292 285
        json = response.json
......
312 305
        # On s'assure qu'une liste vide est retournée lorsque
313 306
        # l'on recherche un graphe en précisant un hôte erroné.
314 307
        response = self.app.post(
315
            '/rpc/searchHostAndGraph?search_form_host=%s' %
316
                urllib2.quote(graph1.name.encode('utf-8'), ''),
317
            {},
308
            '/rpc/searchHostAndGraph',
309
            {'search_form_host': graph1.name},
318 310
            extra_environ={'REMOTE_USER': 'manager'}
319 311
        )
320 312
        json = response.json
......
370 362
        # Récupération des résultats obtenus après une recherche
371 363
        # sur le graphe 'graph1' pour l'utilisateur 'manager'
372 364
        response = self.app.post(
373
        '/rpc/searchHostAndGraph?search_form_host=%s&search_form_graph=%s' % (
374
                urllib2.quote(host1.name.encode('utf-8'), ''),
375
                urllib2.quote(graph1.name.encode('utf-8'), ''),
376
            ), {}, extra_environ={'REMOTE_USER': 'manager'})
365
            '/rpc/searchHostAndGraph', {
366
                'search_form_host': host1.name,
367
                'search_form_graph': graph1.name,
368
            }, extra_environ={'REMOTE_USER': 'manager'})
377 369
        json = response.json
378 370

  
379 371
        # On s'assure que la liste retournée
......
389 381
        # Récupération des résultats obtenus après une recherche
390 382
        # sur le graphe 'graph1' pour l'utilisateur 'poweruser'
391 383
        response = self.app.post(
392
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
393
            'search_form_graph=%s' % (
394
                urllib2.quote(host1.name.encode('utf-8'), ''),
395
                urllib2.quote(graph1.name.encode('utf-8'), ''),
396
            ), {}, extra_environ={'REMOTE_USER': 'poweruser'})
384
            '/rpc/searchHostAndGraph', {
385
                'search_form_host': host1.name,
386
                'search_form_graph': graph1.name,
387
            }, extra_environ={'REMOTE_USER': 'poweruser'})
397 388
        json = response.json
398 389

  
399 390
        # On s'assure que la liste retournée est conforme à celle attendue
......
408 399
        # Récupération des résultats obtenus après une recherche
409 400
        # sur le graphe 'graph2' pour l'utilisateur 'poweruser'
410 401
        response = self.app.post(
411
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
412
            'search_form_graph=%s' % (
413
                urllib2.quote(host2.name.encode('utf-8'), ''),
414
                urllib2.quote(graph2.name.encode('utf-8'), ''),
415
            ), {}, extra_environ={'REMOTE_USER': 'poweruser'})
402
            '/rpc/searchHostAndGraph', {
403
                'search_form_host': host2.name,
404
                'search_form_graph': graph2.name,
405
            }, extra_environ={'REMOTE_USER': 'poweruser'})
416 406
        json = response.json
417 407

  
418 408
        # On s'assure que la liste retournée
......
428 418
        # Récupération des résultats obtenus après une recherche
429 419
        # sur le graphe 'graph2' pour l'utilisateur 'user'
430 420
        response = self.app.post(
431
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
432
            'search_form_graph=%s' % (
433
                urllib2.quote(host2.name.encode('utf-8'), ''),
434
                urllib2.quote(graph2.name.encode('utf-8'), ''),
435
            ), {}, extra_environ={'REMOTE_USER': 'user'})
421
            '/rpc/searchHostAndGraph', {
422
                'search_form_host': host2.name,
423
                'search_form_graph': graph2.name,
424
            }, extra_environ={'REMOTE_USER': 'user'})
436 425
        json = response.json
437 426

  
438 427
        # On s'assure que la liste retournée
......
469 458
        # Récupération des résultats obtenus après une recherche
470 459
        # sur le graphe 'graph1' pour l'utilisateur 'user'
471 460
        response = self.app.post(
472
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
473
            'search_form_graph=%s' % (
474
                urllib2.quote(host1.name.encode('utf-8'), ''),
475
                urllib2.quote(graph1.name.encode('utf-8'), ''),
476
            ), {}, extra_environ={'REMOTE_USER': 'user'})
461
            '/rpc/searchHostAndGraph', {
462
                'search_form_host': host1.name,
463
                'search_form_graph': graph1.name,
464
            }, extra_environ={'REMOTE_USER': 'user'})
477 465
        json = response.json
478 466

  
479 467
        # On s'assure que la liste retournée est vide
......
488 476
        # Récupération des résultats obtenus après une recherche
489 477
        # sur le graphe 'graph3' pour l'utilisateur 'user'
490 478
        response = self.app.post(
491
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
492
            'search_form_graph=%s' % (
493
                urllib2.quote(host3.name.encode('utf-8'), ''),
494
                urllib2.quote(graph3.name.encode('utf-8'), ''),
495
            ), {}, extra_environ={'REMOTE_USER': 'user'})
479
            '/rpc/searchHostAndGraph', {
480
                'search_form_host': host3.name,
481
                'search_form_graph': graph3.name,
482
            }, extra_environ={'REMOTE_USER': 'user'})
496 483
        json = response.json
497 484

  
498 485
        # On s'assure que la liste retournée est vide
......
507 494
        # Récupération des résultats obtenus après une recherche
508 495
        # sur le graphe 'graph1' pour l'utilisateur 'visitor'
509 496
        response = self.app.post(
510
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
511
            'search_form_graph=%s' % (
512
                urllib2.quote(host1.name.encode('utf-8'), ''),
513
                urllib2.quote(graph1.name.encode('utf-8'), ''),
514
            ), {}, extra_environ={'REMOTE_USER': 'visitor'})
497
            '/rpc/searchHostAndGraph', {
498
                'search_form_host': host1.name,
499
                'search_form_graph': graph1.name,
500
            }, extra_environ={'REMOTE_USER': 'visitor'})
515 501
        json = response.json
516 502

  
517 503
        # On s'assure que la liste retournée est vide
......
526 512
        # Récupération des résultats obtenus après une recherche
527 513
        # sur le graphe 'graph3' pour l'utilisateur 'visitor'
528 514
        response = self.app.post(
529
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
530
            'search_form_graph=%s' % (
531
                urllib2.quote(host3.name.encode('utf-8'), ''),
532
                urllib2.quote(graph3.name.encode('utf-8'), ''),
533
            ), {}, extra_environ={'REMOTE_USER': 'visitor'})
515
            '/rpc/searchHostAndGraph', {
516
                'search_form_host': host3.name,
517
                'search_form_graph': graph3.name,
518
            }, extra_environ={'REMOTE_USER': 'visitor'})
534 519
        json = response.json
535 520

  
536 521
        # On s'assure que la liste retournée est vide
......
559 544
        # sur le graphe 'graph1' pour un utilisateur anonyme :
560 545
        # le contrôleur doit retourner une erreur 401
561 546
        self.app.post(
562
            '/rpc/searchHostAndGraph?search_form_host=%s&' \
563
            'search_form_graph=%s' % (
564
                urllib2.quote(host1.name.encode('utf-8'), ''),
565
                urllib2.quote(graph1.name.encode('utf-8'), ''),
566
            ), {}, status=401)
547
            '/rpc/searchHostAndGraph', {
548
                'search_form_host': host1.name,
549
                'search_form_graph': graph1.name,
550
            }, status=401)
567 551

  
568 552
    def test_select_inexisting_graph(self):
569 553
        """
......
577 561
        # Récupération des résultats obtenus après une recherche
578 562
        # sur un graphe inexistant pour l'utilisateur 'manager'
579 563
        response = self.app.post(
580
           '/rpc/searchHostAndGraph?search_form_host=%s&' \
581
           'search_form_graph=%s' % (
582
                urllib2.quote(host1.name.encode('utf-8'), ''),
583
                'graphe_totalement_inexistant',
584
            ), {}, extra_environ={'REMOTE_USER': 'manager'}
564
            '/rpc/searchHostAndGraph', {
565
                'search_form_host': host1.name,
566
                'search_form_graph': 'graphe_totalement_inexistant',
567
            }, extra_environ={'REMOTE_USER': 'manager'}
585 568
        )
586 569
        json = response.json
587 570

  

Also available in: Unified diff