Revision a4ffe87d
Correction ordre des cartes.
Corrige l'ordre d'apparition des liens vers les cartes dans VigiBoard,
afin que celles-ci apparaissent par ordre alphabétique croissant
(l'ordre était perdu à cause d'une conversion en dictionnaire).
Change-Id: I233c3454675e713ce20c631332f0cc23a183eb57
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/1077
Tested-by: Build system <qa@vigilo-dev.si.c-s.fr>
Reviewed-by: Thomas BURGUIERE <thomas.burguiere@c-s.fr>
vigiboard/controllers/plugins/details.py | ||
---|---|---|
27 | 27 |
import urllib |
28 | 28 |
from tg import config, url, request |
29 | 29 |
from sqlalchemy.sql.expression import null as expr_null, union_all |
30 |
from sqlalchemy import func |
|
30 | 31 |
|
31 | 32 |
from repoze.what.predicates import has_permission, in_group |
32 | 33 |
from vigilo.turbogears.helpers import get_current_user |
... | ... | |
86 | 87 |
).first() |
87 | 88 |
|
88 | 89 |
# On détermine les cartes auxquelles cet utilisateur a accès. |
89 |
user_maps = {}
|
|
90 |
user_maps = []
|
|
90 | 91 |
max_maps = int(config['max_maps']) |
91 | 92 |
is_manager = in_group('managers').is_met(request.environ) |
92 | 93 |
if max_maps != 0 and (is_manager or |
... | ... | |
99 | 100 |
(MAP_GROUP_TABLE, MAP_GROUP_TABLE.c.idmap == Map.idmap), |
100 | 101 |
(MapGroup, MapGroup.idgroup == MAP_GROUP_TABLE.c.idgroup), |
101 | 102 |
(MapNodeHost, MapNodeHost.idmap == Map.idmap), |
102 |
).order_by(Map.title.asc()
|
|
103 |
).order_by(func.lower(Map.title).asc()
|
|
103 | 104 |
).filter(MapNodeHost.idhost == event.idhost) |
104 | 105 |
|
105 | 106 |
if not is_manager: |
... | ... | |
114 | 115 |
# de cartes que la limite configurée. |
115 | 116 |
items = items.limit(max_maps + 1) |
116 | 117 |
|
117 |
user_maps = dict([(m.idmap, m.title) for m in items.all()])
|
|
118 |
user_maps = [(m.idmap, m.title) for m in items.all()]
|
|
118 | 119 |
|
119 | 120 |
context = { |
120 | 121 |
'idcorrevent': idcorrevent, |
vigiboard/tests/functional/plugins/test_details_plugin.py | ||
---|---|---|
115 | 115 |
"current_state": "WARNING", |
116 | 116 |
"host": "bar", |
117 | 117 |
"initial_state": "WARNING", |
118 |
"maps": {},
|
|
118 |
"maps": [],
|
|
119 | 119 |
}) |
120 | 120 |
|
121 | 121 |
def test_details_plugin_LLS_alert_when_manager(self): |
... | ... | |
141 | 141 |
"current_state": "WARNING", |
142 | 142 |
"host": "bar", |
143 | 143 |
"initial_state": "WARNING", |
144 |
"maps": {},
|
|
144 |
"maps": [],
|
|
145 | 145 |
}) |
146 | 146 |
|
147 | 147 |
def test_details_plugin_host_alert_when_allowed(self): |
... | ... | |
167 | 167 |
"current_state": "WARNING", |
168 | 168 |
"host": "bar", |
169 | 169 |
"initial_state": "WARNING", |
170 |
"maps": {},
|
|
170 |
"maps": [],
|
|
171 | 171 |
}) |
172 | 172 |
|
173 | 173 |
def test_details_plugin_host_alert_when_manager(self): |
... | ... | |
193 | 193 |
"current_state": "WARNING", |
194 | 194 |
"host": "bar", |
195 | 195 |
"initial_state": "WARNING", |
196 |
"maps": {},
|
|
196 |
"maps": [],
|
|
197 | 197 |
}) |
198 | 198 |
|
199 | 199 |
def test_details_plugin_LLS_when_forbidden(self): |
vigiboard/tests/functional/plugins/test_details_plugin_maps.py | ||
---|---|---|
23 | 23 |
# Seules les 2 premières cartes doivent figurer. |
24 | 24 |
# La 1ère correspond à la limite, la 2 seconde permet |
25 | 25 |
# de détecter qu'il y avait plus de cartes que la limite. |
26 |
manager = {'1': 'M1', '2': 'M2'}
|
|
26 |
manager = [[1, 'M1'], [2, 'M2']]
|
|
27 | 27 |
# L'utilisateur avec droits étendus voit |
28 | 28 |
# la même chose que le manager (2 cartes). |
29 |
unrestricted = manager.copy()
|
|
29 |
unrestricted = manager[:]
|
|
30 | 30 |
# L'utilisateur avec droits restreints ne voit |
31 | 31 |
# qu'une seule carte : "M2". |
32 |
restricted = {'2': 'M2'}
|
|
32 |
restricted = [[2, 'M2']]
|
|
33 | 33 |
supitem_class = Host |
34 | 34 |
|
35 | 35 |
def shortDescription(self, *args, **kwargs): |
... | ... | |
146 | 146 |
}, extra_environ={'REMOTE_USER': 'no_rights'}) |
147 | 147 |
# L'utilisateur n'a pas accès à VigiMap, donc il ne doit pas voir |
148 | 148 |
# les cartes, même s'il a accès à VigiBoard par ailleurs. |
149 |
self.assertEquals(response.json['maps'], {})
|
|
149 |
self.assertEquals(response.json['maps'], [])
|
|
150 | 150 |
|
151 | 151 |
def test_maps_links_restricted(self): |
152 | 152 |
"""Cartes dans dialogue détails avec droits restreints.""" |
... | ... | |
180 | 180 |
# La réponse ne doit contenir aucune carte, |
181 | 181 |
# quel que soit l'utilisateur qui interroge |
182 | 182 |
# VigiBoard (la fonctionnalité est désactivée). |
183 |
manager = {}
|
|
184 |
unrestricted = {}
|
|
185 |
restricted = {}
|
|
183 |
manager = []
|
|
184 |
unrestricted = []
|
|
185 |
restricted = []
|
|
186 | 186 |
|
187 | 187 |
def shortDescription(self, *args, **kwargs): |
188 | 188 |
"""Description courte du test en cours d'exécution.""" |
... | ... | |
199 | 199 |
# Le manager voit tout et en particulier les 3 cartes sur lesquelles |
200 | 200 |
# l'hôte apparaît. M1 ne doit apparaître qu'une seule fois |
201 | 201 |
# même si l'hôte est présent 2 fois sur la carte. |
202 |
manager = {'1': 'M1', '3': 'M3', '2': 'M2'}
|
|
202 |
manager = [[1, 'M1'], [2, 'M2'], [3, 'M3']]
|
|
203 | 203 |
# L'utilisateur avec droits étendus voit |
204 | 204 |
# la même chose que le manager (3 cartes). |
205 |
unrestricted = manager.copy()
|
|
205 |
unrestricted = manager[:]
|
|
206 | 206 |
# L'utilisateur avec droits restreints ne voit pas 'M2'. |
207 |
restricted = {'2': 'M2'}
|
|
207 |
restricted = [[2, 'M2']]
|
|
208 | 208 |
|
209 | 209 |
def shortDescription(self, *args, **kwargs): |
210 | 210 |
"""Description courte du test en cours d'exécution.""" |
Also available in: Unified diff