Revision 4cd0f170
[#1316] Contrôles sur les dates dans le formulaire
Ajout de contrôles sur les dates du formulaire de recherche dans
VigiBoard.
[+] Ajout de tests unitaires
Change-Id: I276cbc547a1bb09b32b7e794c7479913bb3d371e
Refs: #1316
Reviewed-on: https://vigilo-dev.si.c-s.fr/review/1716
Tested-by: Build system <qa@vigilo-dev.si.c-s.fr>
Reviewed-by: Thomas BURGUIERE <thomas.burguiere@c-s.fr>
vigiboard/controllers/plugins/date.py | ||
---|---|---|
29 | 29 |
from vigilo.models import tables |
30 | 30 |
|
31 | 31 |
from vigiboard.controllers.plugins import VigiboardRequestPlugin, ITEMS |
32 |
from vigiboard.lib import dateformat |
|
32 |
from vigiboard.lib import dateformat, error_handler
|
|
33 | 33 |
|
34 | 34 |
|
35 | 35 |
class ExampleDateFormat(object): |
... | ... | |
103 | 103 |
if search.get('from_date'): |
104 | 104 |
query.add_filter(tables.CorrEvent.timestamp_active >= |
105 | 105 |
search['from_date']) |
106 |
|
|
107 |
# Ajout de contrôles sur la date de début |
|
108 |
if search['from_date'] >= datetime.now(): |
|
109 |
error_handler.handle_error_message( |
|
110 |
_('Start date cannot be greater than current date')) |
|
111 |
|
|
112 |
if search.get('to_date') and \ |
|
113 |
search['from_date'] > search['to_date']: |
|
114 |
error_handler.handle_error_message( |
|
115 |
_('Start date cannot be greater than end date')) |
|
116 |
|
|
106 | 117 |
if search.get('to_date'): |
107 | 118 |
query.add_filter(tables.CorrEvent.timestamp_active <= |
108 | 119 |
search['to_date']) |
109 | 120 |
|
121 |
# Ajout de contrôles sur la date de fin |
|
122 |
if search['to_date'] >= datetime.now(): |
|
123 |
error_handler.handle_error_message( |
|
124 |
_('End date cannot be greater than current date')) |
|
125 |
|
|
110 | 126 |
def get_data(self, event): |
111 | 127 |
state = tables.StateName.value_to_statename( |
112 | 128 |
event[0].cause.current_state) |
vigiboard/controllers/silence.py | ||
---|---|---|
51 | 51 |
|
52 | 52 |
from vigilo.models.utils import group_concat |
53 | 53 |
|
54 |
from vigiboard.lib import error_handler |
|
55 |
|
|
54 | 56 |
import logging |
55 | 57 |
|
56 | 58 |
LOGGER = logging.getLogger(__name__) |
... | ... | |
73 | 75 |
msg=l_("Insufficient privileges for this action")) |
74 | 76 |
) |
75 | 77 |
|
76 |
def handle_error_message(self, message, redirection_url='./'): |
|
77 |
""" |
|
78 |
Affiche le message dans l'IHM, l'enregistre dans les logs |
|
79 |
et renvoie le navigateur vers l'URL de redirection. |
|
80 |
|
|
81 |
@param message: message d'erreur à afficher |
|
82 |
@type message: C{str} |
|
83 |
@param redirection_url: (optionnel) URL de redirection |
|
84 |
@type redirection_url: C{str} |
|
85 |
""" |
|
86 |
LOGGER.error(message) |
|
87 |
flash(message, 'error') |
|
88 |
redirect(redirection_url) |
|
89 |
|
|
90 | 78 |
def process_form_errors(self, *argv, **kwargv): |
91 | 79 |
""" |
92 | 80 |
Gestion des erreurs de validation : on affiche les erreurs |
... | ... | |
175 | 163 |
else: |
176 | 164 |
msg = _("Another rule already exists for host '%s'.") % ( |
177 | 165 |
silence.supitem.name) |
178 |
self.handle_error_message(msg)
|
|
166 |
error_handler.handle_error_message(msg)
|
|
179 | 167 |
|
180 | 168 |
class IndexSchema(schema.Schema): |
181 | 169 |
"""Schéma de validation de la méthode index.""" |
... | ... | |
312 | 300 |
except InvalidRequestError, e: |
313 | 301 |
msg = _('An exception has been raised while ' \ |
314 | 302 |
'querying the database: %s') % str(e) |
315 |
self.handle_error_message(msg)
|
|
303 |
error_handler.handle_error_message(msg)
|
|
316 | 304 |
if not silence: |
317 | 305 |
msg = _("Silence rule #%s does not exist.") % id |
318 |
self.handle_error_message(msg)
|
|
306 |
error_handler.handle_error_message(msg)
|
|
319 | 307 |
|
320 | 308 |
# On s'assure que l'utilisateur dispose bien des permissions sur le |
321 | 309 |
# supitem considéré |
322 | 310 |
user = get_current_user() |
323 | 311 |
if not silence.supitem.is_allowed_for(user): |
324 | 312 |
msg = _("Silence rule #%s does not exist.") % id |
325 |
self.handle_error_message(msg)
|
|
313 |
error_handler.handle_error_message(msg)
|
|
326 | 314 |
|
327 | 315 |
if hasattr(silence.supitem, 'servicename'): |
328 | 316 |
hostname = silence.supitem.host.name |
... | ... | |
393 | 381 |
# TODO: Faire ce traitement dans le schéma de validation |
394 | 382 |
if not states: |
395 | 383 |
msg = _('No state specified for the silence rule.') |
396 |
self.handle_error_message(msg)
|
|
384 |
error_handler.handle_error_message(msg)
|
|
397 | 385 |
states = list(states) |
398 | 386 |
|
399 | 387 |
# On récupère le nom et l'IP de l'utilisateur. |
... | ... | |
411 | 399 |
except InvalidRequestError, e: |
412 | 400 |
msg = _('An exception has been raised while ' \ |
413 | 401 |
'querying the database: %s') % str(e) |
414 |
self.handle_error_message(msg)
|
|
402 |
error_handler.handle_error_message(msg)
|
|
415 | 403 |
if not idsupitem or not supitem.is_allowed_for(user): |
416 | 404 |
if not service: |
417 | 405 |
msg = _("Host '%s' does not exist.") % host |
418 |
self.handle_error_message(msg)
|
|
406 |
error_handler.handle_error_message(msg)
|
|
419 | 407 |
else: |
420 | 408 |
msg = _("Service '%s' does not exist for host '%s'." |
421 | 409 |
) % (service, host) |
422 |
self.handle_error_message(msg)
|
|
410 |
error_handler.handle_error_message(msg)
|
|
423 | 411 |
|
424 | 412 |
# On distingue mise à jour et création : |
425 | 413 |
|
... | ... | |
433 | 421 |
except InvalidRequestError, e: |
434 | 422 |
msg = _('An exception has been raised while ' \ |
435 | 423 |
'querying the database: %s') % str(e) |
436 |
self.handle_error_message(msg)
|
|
424 |
error_handler.handle_error_message(msg)
|
|
437 | 425 |
if not silence: |
438 | 426 |
msg = _("Silence rule #%s does not exist.") % idsilence |
439 |
self.handle_error_message(msg)
|
|
427 |
error_handler.handle_error_message(msg)
|
|
440 | 428 |
|
441 | 429 |
# - Si le supitem a été modifié, on vérifie qu'aucune |
442 | 430 |
# autre règle n'existe pour le nouveau supitem |
... | ... | |
471 | 459 |
except (IntegrityError, InvalidRequestError), e: |
472 | 460 |
msg = _('An exception has been raised while ' \ |
473 | 461 |
'updating the database: %s') % str(e) |
474 |
self.handle_error_message(msg)
|
|
462 |
error_handler.handle_error_message(msg)
|
|
475 | 463 |
|
476 | 464 |
# On notifie l'opération dans les logs, on affiche un message de |
477 | 465 |
# succès, et on redirige le navigateur vers la liste des règles de |
... | ... | |
572 | 560 |
# TODO: Faire ce traitement dans le schéma de validation |
573 | 561 |
if not id: |
574 | 562 |
msg = _('No silence rule id specified.') |
575 |
self.handle_error_message(msg)
|
|
563 |
error_handler.handle_error_message(msg)
|
|
576 | 564 |
id = list(id) |
577 | 565 |
|
578 | 566 |
# On recherche les règles dans la BDD. |
... | ... | |
582 | 570 |
except InvalidRequestError, e: |
583 | 571 |
msg = _('An exception has been raised while ' \ |
584 | 572 |
'querying the database: %s') % str(e) |
585 |
self.handle_error_message(msg)
|
|
573 |
error_handler.handle_error_message(msg)
|
|
586 | 574 |
|
587 | 575 |
# On s'assure que toutes les règles ont bien été trouvées dans la |
588 | 576 |
# base, faute de quoi on lève une erreur et on arrête le traitement |
... | ... | |
595 | 583 |
else: |
596 | 584 |
msg = _('Error: silence rule #%s does not exist.' |
597 | 585 |
) % ", ".join(str(i) for i in missing_ids) |
598 |
self.handle_error_message(msg)
|
|
586 |
error_handler.handle_error_message(msg)
|
|
599 | 587 |
|
600 | 588 |
# On s'assure que l'utilisateur dispose bien des permissions nécessaires |
601 | 589 |
# pour supprimer chacune des règles |
... | ... | |
603 | 591 |
for s in silences: |
604 | 592 |
if not s.supitem.is_allowed_for(user): |
605 | 593 |
msg = _("Silence rule #%s does not exist.") % s.idsilence |
606 |
self.handle_error_message(msg)
|
|
594 |
error_handler.handle_error_message(msg)
|
|
607 | 595 |
|
608 | 596 |
# On supprime les règles dans la BDD. |
609 | 597 |
try: |
... | ... | |
613 | 601 |
except InvalidRequestError, e: |
614 | 602 |
msg = _('An exception has been raised while ' \ |
615 | 603 |
'deleting the silence rules: %s') % str(e) |
616 |
self.handle_error_message(msg)
|
|
604 |
error_handler.handle_error_message(msg)
|
|
617 | 605 |
|
618 | 606 |
# On notifie l'opération dans les logs |
619 | 607 |
user_name = user.user_name |
vigiboard/i18n/de/LC_MESSAGES/vigiboard.po | ||
---|---|---|
8 | 8 |
"Project-Id-Version: vigiboard 2.0.0\n" |
9 | 9 |
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" |
10 | 10 |
"POT-Creation-Date: 2010-11-19 10:22+0100\n" |
11 |
"PO-Revision-Date: 2015-04-21 11:49+0200\n"
|
|
11 |
"PO-Revision-Date: 2015-04-23 18:04+0200\n"
|
|
12 | 12 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
13 | 13 |
"Language-Team: de_DE <LL@li.org>\n" |
14 | 14 |
"Plural-Forms: nplurals=2; plural=(n != 1)\n" |
... | ... | |
23 | 23 |
msgstr "" |
24 | 24 |
|
25 | 25 |
#: vigiboard/controllers/root.py:89 vigiboard/controllers/root.py:99 |
26 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:70
|
|
26 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:72
|
|
27 | 27 |
msgid "You need to be authenticated" |
28 | 28 |
msgstr "Sie müssen sich authentifizieren" |
29 | 29 |
|
... | ... | |
126 | 126 |
msgid "Next %(limit)s" |
127 | 127 |
msgstr "" |
128 | 128 |
|
129 |
#: vigiboard/controllers/silence.py:73
|
|
129 |
#: vigiboard/controllers/silence.py:75
|
|
130 | 130 |
msgid "Insufficient privileges for this action" |
131 | 131 |
msgstr "" |
132 | 132 |
|
133 |
#: vigiboard/controllers/silence.py:172
|
|
133 |
#: vigiboard/controllers/silence.py:160
|
|
134 | 134 |
#, python-format |
135 | 135 |
msgid "Another rule already exists for service '%s' on host '%s'." |
136 | 136 |
msgstr "" |
137 | 137 |
|
138 |
#: vigiboard/controllers/silence.py:176
|
|
138 |
#: vigiboard/controllers/silence.py:164
|
|
139 | 139 |
#, python-format |
140 | 140 |
msgid "Another rule already exists for host '%s'." |
141 | 141 |
msgstr "" |
142 | 142 |
|
143 |
#: vigiboard/controllers/silence.py:258
|
|
143 |
#: vigiboard/controllers/silence.py:246
|
|
144 | 144 |
#: vigiboard/controllers/plugins/hostname.py:38 |
145 | 145 |
msgid "Host" |
146 | 146 |
msgstr "Host" |
147 | 147 |
|
148 |
#: vigiboard/controllers/silence.py:259
|
|
148 |
#: vigiboard/controllers/silence.py:247
|
|
149 | 149 |
#: vigiboard/controllers/plugins/servicename.py:41 |
150 | 150 |
msgid "Service" |
151 | 151 |
msgstr "Service" |
152 | 152 |
|
153 |
#: vigiboard/controllers/silence.py:260
|
|
153 |
#: vigiboard/controllers/silence.py:248
|
|
154 | 154 |
msgid "States" |
155 | 155 |
msgstr "" |
156 | 156 |
|
157 |
#: vigiboard/controllers/silence.py:261
|
|
157 |
#: vigiboard/controllers/silence.py:249
|
|
158 | 158 |
msgid "Last modification" |
159 | 159 |
msgstr "" |
160 | 160 |
|
161 |
#: vigiboard/controllers/silence.py:262
|
|
161 |
#: vigiboard/controllers/silence.py:250
|
|
162 | 162 |
msgid "Author" |
163 | 163 |
msgstr "" |
164 | 164 |
|
165 |
#: vigiboard/controllers/silence.py:263
|
|
165 |
#: vigiboard/controllers/silence.py:251
|
|
166 | 166 |
msgid "Comment" |
167 | 167 |
msgstr "" |
168 | 168 |
|
169 |
#: vigiboard/controllers/silence.py:313 vigiboard/controllers/silence.py:412
|
|
170 |
#: vigiboard/controllers/silence.py:434 vigiboard/controllers/silence.py:583
|
|
169 |
#: vigiboard/controllers/silence.py:301 vigiboard/controllers/silence.py:400
|
|
170 |
#: vigiboard/controllers/silence.py:422 vigiboard/controllers/silence.py:571
|
|
171 | 171 |
#, python-format |
172 | 172 |
msgid "An exception has been raised while querying the database: %s" |
173 | 173 |
msgstr "" |
174 | 174 |
|
175 |
#: vigiboard/controllers/silence.py:317 vigiboard/controllers/silence.py:324
|
|
176 |
#: vigiboard/controllers/silence.py:438 vigiboard/controllers/silence.py:605
|
|
175 |
#: vigiboard/controllers/silence.py:305 vigiboard/controllers/silence.py:312
|
|
176 |
#: vigiboard/controllers/silence.py:426 vigiboard/controllers/silence.py:593
|
|
177 | 177 |
#, python-format |
178 | 178 |
msgid "Silence rule #%s does not exist." |
179 | 179 |
msgstr "" |
180 | 180 |
|
181 |
#: vigiboard/controllers/silence.py:395
|
|
181 |
#: vigiboard/controllers/silence.py:383
|
|
182 | 182 |
msgid "No state specified for the silence rule." |
183 | 183 |
msgstr "" |
184 | 184 |
|
185 |
#: vigiboard/controllers/silence.py:417
|
|
185 |
#: vigiboard/controllers/silence.py:405
|
|
186 | 186 |
#, python-format |
187 | 187 |
msgid "Host '%s' does not exist." |
188 | 188 |
msgstr "" |
189 | 189 |
|
190 |
#: vigiboard/controllers/silence.py:420
|
|
190 |
#: vigiboard/controllers/silence.py:408
|
|
191 | 191 |
#, python-format |
192 | 192 |
msgid "Service '%s' does not exist for host '%s'." |
193 | 193 |
msgstr "" |
194 | 194 |
|
195 |
#: vigiboard/controllers/silence.py:472
|
|
195 |
#: vigiboard/controllers/silence.py:460
|
|
196 | 196 |
#, python-format |
197 | 197 |
msgid "An exception has been raised while updating the database: %s" |
198 | 198 |
msgstr "" |
199 | 199 |
|
200 |
#: vigiboard/controllers/silence.py:482
|
|
200 |
#: vigiboard/controllers/silence.py:470
|
|
201 | 201 |
#, python-format |
202 | 202 |
msgid "" |
203 | 203 |
"User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for service " |
204 | 204 |
"%(service)s on host %(host)s." |
205 | 205 |
msgstr "" |
206 | 206 |
|
207 |
#: vigiboard/controllers/silence.py:492
|
|
207 |
#: vigiboard/controllers/silence.py:480
|
|
208 | 208 |
#, python-format |
209 | 209 |
msgid "" |
210 | 210 |
"Silence rule #%(id)s (host: %(host)s, service: %(service)s) has been " |
211 | 211 |
"successfully updated." |
212 | 212 |
msgstr "" |
213 | 213 |
|
214 |
#: vigiboard/controllers/silence.py:501
|
|
214 |
#: vigiboard/controllers/silence.py:489
|
|
215 | 215 |
#, python-format |
216 | 216 |
msgid "User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for host %(host)s." |
217 | 217 |
msgstr "" |
218 | 218 |
|
219 |
#: vigiboard/controllers/silence.py:509
|
|
219 |
#: vigiboard/controllers/silence.py:497
|
|
220 | 220 |
#, python-format |
221 | 221 |
msgid "Silence rule #%(id)s (host: %(host)s) has been successfully updated." |
222 | 222 |
msgstr "" |
223 | 223 |
|
224 |
#: vigiboard/controllers/silence.py:518
|
|
224 |
#: vigiboard/controllers/silence.py:506
|
|
225 | 225 |
#, python-format |
226 | 226 |
msgid "" |
227 | 227 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for service " |
228 | 228 |
"%(service)s on host %(host)s." |
229 | 229 |
msgstr "" |
230 | 230 |
|
231 |
#: vigiboard/controllers/silence.py:528
|
|
231 |
#: vigiboard/controllers/silence.py:516
|
|
232 | 232 |
#, python-format |
233 | 233 |
msgid "" |
234 | 234 |
"A new silence rule (#%(id)s) has been added for service \"%(service)s\" " |
235 | 235 |
"on host \"%(host)s\"." |
236 | 236 |
msgstr "" |
237 | 237 |
|
238 |
#: vigiboard/controllers/silence.py:536
|
|
238 |
#: vigiboard/controllers/silence.py:524
|
|
239 | 239 |
#, python-format |
240 | 240 |
msgid "" |
241 | 241 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for host " |
242 | 242 |
"%(host)s." |
243 | 243 |
msgstr "" |
244 | 244 |
|
245 |
#: vigiboard/controllers/silence.py:544
|
|
245 |
#: vigiboard/controllers/silence.py:532
|
|
246 | 246 |
#, python-format |
247 | 247 |
msgid "A new silence rule (#%(id)s) has been added for the host \"%(host)s\"." |
248 | 248 |
msgstr "" |
249 | 249 |
|
250 |
#: vigiboard/controllers/silence.py:574
|
|
250 |
#: vigiboard/controllers/silence.py:562
|
|
251 | 251 |
msgid "No silence rule id specified." |
252 | 252 |
msgstr "" |
253 | 253 |
|
254 |
#: vigiboard/controllers/silence.py:593
|
|
254 |
#: vigiboard/controllers/silence.py:581
|
|
255 | 255 |
#, python-format |
256 | 256 |
msgid "Error: the following silence rules do not exist: %s." |
257 | 257 |
msgstr "" |
258 | 258 |
|
259 |
#: vigiboard/controllers/silence.py:596
|
|
259 |
#: vigiboard/controllers/silence.py:584
|
|
260 | 260 |
#, python-format |
261 | 261 |
msgid "Error: silence rule #%s does not exist." |
262 | 262 |
msgstr "" |
263 | 263 |
|
264 |
#: vigiboard/controllers/silence.py:614
|
|
264 |
#: vigiboard/controllers/silence.py:602
|
|
265 | 265 |
#, python-format |
266 | 266 |
msgid "An exception has been raised while deleting the silence rules: %s" |
267 | 267 |
msgstr "" |
268 | 268 |
|
269 |
#: vigiboard/controllers/silence.py:624
|
|
269 |
#: vigiboard/controllers/silence.py:612
|
|
270 | 270 |
#, python-format |
271 | 271 |
msgid "" |
272 | 272 |
"User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for service " |
273 | 273 |
"%(service)s on host %(host)s" |
274 | 274 |
msgstr "" |
275 | 275 |
|
276 |
#: vigiboard/controllers/silence.py:636
|
|
276 |
#: vigiboard/controllers/silence.py:624
|
|
277 | 277 |
#, python-format |
278 | 278 |
msgid "User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for host %(host)s" |
279 | 279 |
msgstr "" |
280 | 280 |
|
281 |
#: vigiboard/controllers/silence.py:647
|
|
281 |
#: vigiboard/controllers/silence.py:635
|
|
282 | 282 |
#, python-format |
283 | 283 |
msgid "The following silence rules have been successfully deleted: %s." |
284 | 284 |
msgstr "" |
285 | 285 |
|
286 |
#: vigiboard/controllers/silence.py:650
|
|
286 |
#: vigiboard/controllers/silence.py:638
|
|
287 | 287 |
#, python-format |
288 | 288 |
msgid "Silence rule #%s has been successfully deleted." |
289 | 289 |
msgstr "" |
... | ... | |
311 | 311 |
msgid "And" |
312 | 312 |
msgstr "" |
313 | 313 |
|
314 |
#: vigiboard/controllers/plugins/date.py:109 |
|
315 |
msgid "Start date cannot be greater than current date" |
|
316 |
msgstr "" |
|
317 |
|
|
318 |
#: vigiboard/controllers/plugins/date.py:112 |
|
319 |
msgid "Start date cannot be greater than end date" |
|
320 |
msgstr "" |
|
321 |
|
|
322 |
#: vigiboard/controllers/plugins/date.py:120 |
|
323 |
msgid "End date cannot be greater than current date" |
|
324 |
msgstr "" |
|
325 |
|
|
314 | 326 |
#: vigiboard/controllers/plugins/details.py:195 |
315 | 327 |
#: vigiboard/controllers/plugins/state.py:47 |
316 | 328 |
msgid "Current state" |
vigiboard/i18n/en/LC_MESSAGES/vigiboard.po | ||
---|---|---|
8 | 8 |
msgstr "" |
9 | 9 |
"Project-Id-Version: vigilo-vigiboard 3.5\n" |
10 | 10 |
"Report-Msgid-Bugs-To: contact@projet-vigilo.org\n" |
11 |
"POT-Creation-Date: 2015-04-21 11:49+0200\n"
|
|
12 |
"PO-Revision-Date: 2015-04-21 11:49+0200\n"
|
|
11 |
"POT-Creation-Date: 2015-04-23 18:04+0200\n"
|
|
12 |
"PO-Revision-Date: 2015-04-23 18:04+0200\n"
|
|
13 | 13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
14 | 14 |
"Language-Team: en <LL@li.org>\n" |
15 | 15 |
"Plural-Forms: nplurals=2; plural=(n != 1)\n" |
... | ... | |
24 | 24 |
msgstr "Vigilo has detected a breakdown on the following collector(s): %(list)s" |
25 | 25 |
|
26 | 26 |
#: vigiboard/controllers/root.py:89 vigiboard/controllers/root.py:99 |
27 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:70
|
|
27 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:72
|
|
28 | 28 |
msgid "You need to be authenticated" |
29 | 29 |
msgstr "You need to be authenticated" |
30 | 30 |
|
... | ... | |
130 | 130 |
msgid "Next %(limit)s" |
131 | 131 |
msgstr "Next %(limit)s" |
132 | 132 |
|
133 |
#: vigiboard/controllers/silence.py:73
|
|
133 |
#: vigiboard/controllers/silence.py:75
|
|
134 | 134 |
msgid "Insufficient privileges for this action" |
135 | 135 |
msgstr "Insufficient privileges for this action" |
136 | 136 |
|
137 |
#: vigiboard/controllers/silence.py:172
|
|
137 |
#: vigiboard/controllers/silence.py:160
|
|
138 | 138 |
#, python-format |
139 | 139 |
msgid "Another rule already exists for service '%s' on host '%s'." |
140 | 140 |
msgstr "Another rule already exists for service '%s' on host '%s'." |
141 | 141 |
|
142 |
#: vigiboard/controllers/silence.py:176
|
|
142 |
#: vigiboard/controllers/silence.py:164
|
|
143 | 143 |
#, python-format |
144 | 144 |
msgid "Another rule already exists for host '%s'." |
145 | 145 |
msgstr "Another rule already exists for host '%s'." |
146 | 146 |
|
147 |
#: vigiboard/controllers/silence.py:258
|
|
147 |
#: vigiboard/controllers/silence.py:246
|
|
148 | 148 |
#: vigiboard/controllers/plugins/hostname.py:38 |
149 | 149 |
msgid "Host" |
150 | 150 |
msgstr "Host" |
151 | 151 |
|
152 |
#: vigiboard/controllers/silence.py:259
|
|
152 |
#: vigiboard/controllers/silence.py:247
|
|
153 | 153 |
#: vigiboard/controllers/plugins/servicename.py:41 |
154 | 154 |
msgid "Service" |
155 | 155 |
msgstr "Service" |
156 | 156 |
|
157 |
#: vigiboard/controllers/silence.py:260
|
|
157 |
#: vigiboard/controllers/silence.py:248
|
|
158 | 158 |
msgid "States" |
159 | 159 |
msgstr "States" |
160 | 160 |
|
161 |
#: vigiboard/controllers/silence.py:261
|
|
161 |
#: vigiboard/controllers/silence.py:249
|
|
162 | 162 |
msgid "Last modification" |
163 | 163 |
msgstr "Last modification" |
164 | 164 |
|
165 |
#: vigiboard/controllers/silence.py:262
|
|
165 |
#: vigiboard/controllers/silence.py:250
|
|
166 | 166 |
msgid "Author" |
167 | 167 |
msgstr "Author" |
168 | 168 |
|
169 |
#: vigiboard/controllers/silence.py:263
|
|
169 |
#: vigiboard/controllers/silence.py:251
|
|
170 | 170 |
msgid "Comment" |
171 | 171 |
msgstr "Comment" |
172 | 172 |
|
173 |
#: vigiboard/controllers/silence.py:313 vigiboard/controllers/silence.py:412
|
|
174 |
#: vigiboard/controllers/silence.py:434 vigiboard/controllers/silence.py:583
|
|
173 |
#: vigiboard/controllers/silence.py:301 vigiboard/controllers/silence.py:400
|
|
174 |
#: vigiboard/controllers/silence.py:422 vigiboard/controllers/silence.py:571
|
|
175 | 175 |
#, python-format |
176 | 176 |
msgid "An exception has been raised while querying the database: %s" |
177 | 177 |
msgstr "An exception has been raised while querying the database: %s" |
178 | 178 |
|
179 |
#: vigiboard/controllers/silence.py:317 vigiboard/controllers/silence.py:324
|
|
180 |
#: vigiboard/controllers/silence.py:438 vigiboard/controllers/silence.py:605
|
|
179 |
#: vigiboard/controllers/silence.py:305 vigiboard/controllers/silence.py:312
|
|
180 |
#: vigiboard/controllers/silence.py:426 vigiboard/controllers/silence.py:593
|
|
181 | 181 |
#, python-format |
182 | 182 |
msgid "Silence rule #%s does not exist." |
183 | 183 |
msgstr "Silence rule #%s does not exist." |
184 | 184 |
|
185 |
#: vigiboard/controllers/silence.py:395
|
|
185 |
#: vigiboard/controllers/silence.py:383
|
|
186 | 186 |
msgid "No state specified for the silence rule." |
187 | 187 |
msgstr "No state specified for the silence rule." |
188 | 188 |
|
189 |
#: vigiboard/controllers/silence.py:417
|
|
189 |
#: vigiboard/controllers/silence.py:405
|
|
190 | 190 |
#, python-format |
191 | 191 |
msgid "Host '%s' does not exist." |
192 | 192 |
msgstr "Host '%s' does not exist." |
193 | 193 |
|
194 |
#: vigiboard/controllers/silence.py:420
|
|
194 |
#: vigiboard/controllers/silence.py:408
|
|
195 | 195 |
#, python-format |
196 | 196 |
msgid "Service '%s' does not exist for host '%s'." |
197 | 197 |
msgstr "Service '%s' does not exist for host '%s'." |
198 | 198 |
|
199 |
#: vigiboard/controllers/silence.py:472
|
|
199 |
#: vigiboard/controllers/silence.py:460
|
|
200 | 200 |
#, python-format |
201 | 201 |
msgid "An exception has been raised while updating the database: %s" |
202 | 202 |
msgstr "An exception has been raised while updating the database: %s" |
203 | 203 |
|
204 |
#: vigiboard/controllers/silence.py:482
|
|
204 |
#: vigiboard/controllers/silence.py:470
|
|
205 | 205 |
#, python-format |
206 | 206 |
msgid "" |
207 | 207 |
"User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for service " |
... | ... | |
210 | 210 |
"User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for service " |
211 | 211 |
"%(service)s on host %(host)s." |
212 | 212 |
|
213 |
#: vigiboard/controllers/silence.py:492
|
|
213 |
#: vigiboard/controllers/silence.py:480
|
|
214 | 214 |
#, python-format |
215 | 215 |
msgid "" |
216 | 216 |
"Silence rule #%(id)s (host: %(host)s, service: %(service)s) has been " |
... | ... | |
219 | 219 |
"Silence rule #%(id)s (host: %(host)s, service: %(service)s) has been " |
220 | 220 |
"successfully updated." |
221 | 221 |
|
222 |
#: vigiboard/controllers/silence.py:501
|
|
222 |
#: vigiboard/controllers/silence.py:489
|
|
223 | 223 |
#, python-format |
224 | 224 |
msgid "User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for host %(host)s." |
225 | 225 |
msgstr "User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for host %(host)s." |
226 | 226 |
|
227 |
#: vigiboard/controllers/silence.py:509
|
|
227 |
#: vigiboard/controllers/silence.py:497
|
|
228 | 228 |
#, python-format |
229 | 229 |
msgid "Silence rule #%(id)s (host: %(host)s) has been successfully updated." |
230 | 230 |
msgstr "Silence rule #%(id)s (host: %(host)s) has been successfully updated." |
231 | 231 |
|
232 |
#: vigiboard/controllers/silence.py:518
|
|
232 |
#: vigiboard/controllers/silence.py:506
|
|
233 | 233 |
#, python-format |
234 | 234 |
msgid "" |
235 | 235 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for service " |
... | ... | |
238 | 238 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for service " |
239 | 239 |
"%(service)s on host %(host)s." |
240 | 240 |
|
241 |
#: vigiboard/controllers/silence.py:528
|
|
241 |
#: vigiboard/controllers/silence.py:516
|
|
242 | 242 |
#, python-format |
243 | 243 |
msgid "" |
244 | 244 |
"A new silence rule (#%(id)s) has been added for service \"%(service)s\" " |
... | ... | |
247 | 247 |
"A new silence rule (#%(id)s) has been added for service \"%(service)s\" " |
248 | 248 |
"on host \"%(host)s\"." |
249 | 249 |
|
250 |
#: vigiboard/controllers/silence.py:536
|
|
250 |
#: vigiboard/controllers/silence.py:524
|
|
251 | 251 |
#, python-format |
252 | 252 |
msgid "" |
253 | 253 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for host " |
... | ... | |
256 | 256 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for host " |
257 | 257 |
"%(host)s." |
258 | 258 |
|
259 |
#: vigiboard/controllers/silence.py:544
|
|
259 |
#: vigiboard/controllers/silence.py:532
|
|
260 | 260 |
#, python-format |
261 | 261 |
msgid "A new silence rule (#%(id)s) has been added for the host \"%(host)s\"." |
262 | 262 |
msgstr "A new silence rule (#%(id)s) has been added for the host \"%(host)s\"." |
263 | 263 |
|
264 |
#: vigiboard/controllers/silence.py:574
|
|
264 |
#: vigiboard/controllers/silence.py:562
|
|
265 | 265 |
msgid "No silence rule id specified." |
266 | 266 |
msgstr "No silence rule id specified." |
267 | 267 |
|
268 |
#: vigiboard/controllers/silence.py:593
|
|
268 |
#: vigiboard/controllers/silence.py:581
|
|
269 | 269 |
#, python-format |
270 | 270 |
msgid "Error: the following silence rules do not exist: %s." |
271 | 271 |
msgstr "Error: the following silence rules do not exist: %s." |
272 | 272 |
|
273 |
#: vigiboard/controllers/silence.py:596
|
|
273 |
#: vigiboard/controllers/silence.py:584
|
|
274 | 274 |
#, python-format |
275 | 275 |
msgid "Error: silence rule #%s does not exist." |
276 | 276 |
msgstr "Error: silence rule #%s does not exist." |
277 | 277 |
|
278 |
#: vigiboard/controllers/silence.py:614
|
|
278 |
#: vigiboard/controllers/silence.py:602
|
|
279 | 279 |
#, python-format |
280 | 280 |
msgid "An exception has been raised while deleting the silence rules: %s" |
281 | 281 |
msgstr "An exception has been raised while deleting the silence rules: %s" |
282 | 282 |
|
283 |
#: vigiboard/controllers/silence.py:624
|
|
283 |
#: vigiboard/controllers/silence.py:612
|
|
284 | 284 |
#, python-format |
285 | 285 |
msgid "" |
286 | 286 |
"User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for service " |
... | ... | |
289 | 289 |
"User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for service " |
290 | 290 |
"%(service)s on host %(host)s" |
291 | 291 |
|
292 |
#: vigiboard/controllers/silence.py:636
|
|
292 |
#: vigiboard/controllers/silence.py:624
|
|
293 | 293 |
#, python-format |
294 | 294 |
msgid "User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for host %(host)s" |
295 | 295 |
msgstr "User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for host %(host)s" |
296 | 296 |
|
297 |
#: vigiboard/controllers/silence.py:647
|
|
297 |
#: vigiboard/controllers/silence.py:635
|
|
298 | 298 |
#, python-format |
299 | 299 |
msgid "The following silence rules have been successfully deleted: %s." |
300 | 300 |
msgstr "The following silence rules have been successfully deleted: %s." |
301 | 301 |
|
302 |
#: vigiboard/controllers/silence.py:650
|
|
302 |
#: vigiboard/controllers/silence.py:638
|
|
303 | 303 |
#, python-format |
304 | 304 |
msgid "Silence rule #%s has been successfully deleted." |
305 | 305 |
msgstr "Silence rule #%s has been successfully deleted." |
... | ... | |
327 | 327 |
msgid "And" |
328 | 328 |
msgstr "And" |
329 | 329 |
|
330 |
#: vigiboard/controllers/plugins/date.py:109 |
|
331 |
msgid "Start date cannot be greater than current date" |
|
332 |
msgstr "Start date cannot be greater than current date" |
|
333 |
|
|
334 |
#: vigiboard/controllers/plugins/date.py:112 |
|
335 |
msgid "Start date cannot be greater than end date" |
|
336 |
msgstr "Start date cannot be greater than end date" |
|
337 |
|
|
338 |
#: vigiboard/controllers/plugins/date.py:120 |
|
339 |
msgid "End date cannot be greater than current date" |
|
340 |
msgstr "End date cannot be greater than current date" |
|
341 |
|
|
330 | 342 |
#: vigiboard/controllers/plugins/details.py:195 |
331 | 343 |
#: vigiboard/controllers/plugins/state.py:47 |
332 | 344 |
msgid "Current state" |
vigiboard/i18n/fr/LC_MESSAGES/vigiboard.po | ||
---|---|---|
8 | 8 |
"Project-Id-Version: vigiboard 0.1\n" |
9 | 9 |
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" |
10 | 10 |
"POT-Creation-Date: 2009-07-06 11:19+0200\n" |
11 |
"PO-Revision-Date: 2015-04-21 11:49+0200\n"
|
|
11 |
"PO-Revision-Date: 2015-04-23 18:04+0200\n"
|
|
12 | 12 |
"Last-Translator: Thomas ANDREJAK <thomas.andrejak@c-s.fr>\n" |
13 | 13 |
"Language-Team: fr_FR <LL@li.org>\n" |
14 | 14 |
"Plural-Forms: nplurals=2; plural=(n > 1)\n" |
... | ... | |
23 | 23 |
msgstr "Vigilo a détecté une panne sur le(s) collecteur(s) suivant(s) : %(list)s" |
24 | 24 |
|
25 | 25 |
#: vigiboard/controllers/root.py:89 vigiboard/controllers/root.py:99 |
26 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:70
|
|
26 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:72
|
|
27 | 27 |
msgid "You need to be authenticated" |
28 | 28 |
msgstr "Vous devez vous authentifier" |
29 | 29 |
|
... | ... | |
131 | 131 |
msgid "Next %(limit)s" |
132 | 132 |
msgstr "%(limit)s suivants" |
133 | 133 |
|
134 |
#: vigiboard/controllers/silence.py:73
|
|
134 |
#: vigiboard/controllers/silence.py:75
|
|
135 | 135 |
msgid "Insufficient privileges for this action" |
136 | 136 |
msgstr "Droits insuffisants pour cette action" |
137 | 137 |
|
138 |
#: vigiboard/controllers/silence.py:172
|
|
138 |
#: vigiboard/controllers/silence.py:160
|
|
139 | 139 |
#, python-format |
140 | 140 |
msgid "Another rule already exists for service '%s' on host '%s'." |
141 | 141 |
msgstr "Une autre règle existe déjà pour le service '%s' sur l'hôte '%s'." |
142 | 142 |
|
143 |
#: vigiboard/controllers/silence.py:176
|
|
143 |
#: vigiboard/controllers/silence.py:164
|
|
144 | 144 |
#, python-format |
145 | 145 |
msgid "Another rule already exists for host '%s'." |
146 | 146 |
msgstr "Une autre règle existe déjà pour l'hôte '%s'." |
147 | 147 |
|
148 |
#: vigiboard/controllers/silence.py:258
|
|
148 |
#: vigiboard/controllers/silence.py:246
|
|
149 | 149 |
#: vigiboard/controllers/plugins/hostname.py:38 |
150 | 150 |
msgid "Host" |
151 | 151 |
msgstr "Hôte" |
152 | 152 |
|
153 |
#: vigiboard/controllers/silence.py:259
|
|
153 |
#: vigiboard/controllers/silence.py:247
|
|
154 | 154 |
#: vigiboard/controllers/plugins/servicename.py:41 |
155 | 155 |
msgid "Service" |
156 | 156 |
msgstr "Service" |
157 | 157 |
|
158 |
#: vigiboard/controllers/silence.py:260
|
|
158 |
#: vigiboard/controllers/silence.py:248
|
|
159 | 159 |
msgid "States" |
160 | 160 |
msgstr "États" |
161 | 161 |
|
162 |
#: vigiboard/controllers/silence.py:261
|
|
162 |
#: vigiboard/controllers/silence.py:249
|
|
163 | 163 |
msgid "Last modification" |
164 | 164 |
msgstr "Dernière modification" |
165 | 165 |
|
166 |
#: vigiboard/controllers/silence.py:262
|
|
166 |
#: vigiboard/controllers/silence.py:250
|
|
167 | 167 |
msgid "Author" |
168 | 168 |
msgstr "Auteur" |
169 | 169 |
|
170 |
#: vigiboard/controllers/silence.py:263
|
|
170 |
#: vigiboard/controllers/silence.py:251
|
|
171 | 171 |
msgid "Comment" |
172 | 172 |
msgstr "Commentaire" |
173 | 173 |
|
174 |
#: vigiboard/controllers/silence.py:313 vigiboard/controllers/silence.py:412
|
|
175 |
#: vigiboard/controllers/silence.py:434 vigiboard/controllers/silence.py:583
|
|
174 |
#: vigiboard/controllers/silence.py:301 vigiboard/controllers/silence.py:400
|
|
175 |
#: vigiboard/controllers/silence.py:422 vigiboard/controllers/silence.py:571
|
|
176 | 176 |
#, python-format |
177 | 177 |
msgid "An exception has been raised while querying the database: %s" |
178 | 178 |
msgstr "" |
179 | 179 |
"Une exception a été levée lors de l'interrogation de la base de données :" |
180 | 180 |
" %s" |
181 | 181 |
|
182 |
#: vigiboard/controllers/silence.py:317 vigiboard/controllers/silence.py:324
|
|
183 |
#: vigiboard/controllers/silence.py:438 vigiboard/controllers/silence.py:605
|
|
182 |
#: vigiboard/controllers/silence.py:305 vigiboard/controllers/silence.py:312
|
|
183 |
#: vigiboard/controllers/silence.py:426 vigiboard/controllers/silence.py:593
|
|
184 | 184 |
#, python-format |
185 | 185 |
msgid "Silence rule #%s does not exist." |
186 | 186 |
msgstr "La règle de silence #%s n'existe pas." |
187 | 187 |
|
188 |
#: vigiboard/controllers/silence.py:395
|
|
188 |
#: vigiboard/controllers/silence.py:383
|
|
189 | 189 |
msgid "No state specified for the silence rule." |
190 | 190 |
msgstr "Aucun état n'a été spécifié pour la règle de silence." |
191 | 191 |
|
192 |
#: vigiboard/controllers/silence.py:417
|
|
192 |
#: vigiboard/controllers/silence.py:405
|
|
193 | 193 |
#, python-format |
194 | 194 |
msgid "Host '%s' does not exist." |
195 | 195 |
msgstr "L'hôte '%s' n'existe pas." |
196 | 196 |
|
197 |
#: vigiboard/controllers/silence.py:420
|
|
197 |
#: vigiboard/controllers/silence.py:408
|
|
198 | 198 |
#, python-format |
199 | 199 |
msgid "Service '%s' does not exist for host '%s'." |
200 | 200 |
msgstr "Le service '%s' n'existe pas pour l'hôte '%s'." |
201 | 201 |
|
202 |
#: vigiboard/controllers/silence.py:472
|
|
202 |
#: vigiboard/controllers/silence.py:460
|
|
203 | 203 |
#, python-format |
204 | 204 |
msgid "An exception has been raised while updating the database: %s" |
205 | 205 |
msgstr "" |
206 | 206 |
"Une exception a été levée lors de la mise à jour de la base de données : " |
207 | 207 |
"%s" |
208 | 208 |
|
209 |
#: vigiboard/controllers/silence.py:482
|
|
209 |
#: vigiboard/controllers/silence.py:470
|
|
210 | 210 |
#, python-format |
211 | 211 |
msgid "" |
212 | 212 |
"User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for service " |
... | ... | |
215 | 215 |
"L'utilisateur %(user)s (IP : %(ip)s) a mis à jour la règle de silence " |
216 | 216 |
"#%(id)s pour le service %(service)s sur l'hôte %(host)s." |
217 | 217 |
|
218 |
#: vigiboard/controllers/silence.py:492
|
|
218 |
#: vigiboard/controllers/silence.py:480
|
|
219 | 219 |
#, python-format |
220 | 220 |
msgid "" |
221 | 221 |
"Silence rule #%(id)s (host: %(host)s, service: %(service)s) has been " |
... | ... | |
224 | 224 |
"La règle de silence #%(id)s (hôte : %(host)s, service : %(service)s) a " |
225 | 225 |
"été mise à jour avec succès." |
226 | 226 |
|
227 |
#: vigiboard/controllers/silence.py:501
|
|
227 |
#: vigiboard/controllers/silence.py:489
|
|
228 | 228 |
#, python-format |
229 | 229 |
msgid "User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for host %(host)s." |
230 | 230 |
msgstr "" |
231 | 231 |
"L'utilisateur %(user)s (IP: %(ip)s) a mis à jour la règle de silence " |
232 | 232 |
"#%(id)s pour l'hôte %(host)s." |
233 | 233 |
|
234 |
#: vigiboard/controllers/silence.py:509
|
|
234 |
#: vigiboard/controllers/silence.py:497
|
|
235 | 235 |
#, python-format |
236 | 236 |
msgid "Silence rule #%(id)s (host: %(host)s) has been successfully updated." |
237 | 237 |
msgstr "La règle #%(id)s (hôte : %(host)s) a été mise à jour avec succès." |
238 | 238 |
|
239 |
#: vigiboard/controllers/silence.py:518
|
|
239 |
#: vigiboard/controllers/silence.py:506
|
|
240 | 240 |
#, python-format |
241 | 241 |
msgid "" |
242 | 242 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for service " |
... | ... | |
245 | 245 |
"L'utilisateur %(user)s (IP: %(ip)s) a ajouté une règle de silence " |
246 | 246 |
"(#%(id)s) pour le service %(service)s sur l'hôte %(host)s." |
247 | 247 |
|
248 |
#: vigiboard/controllers/silence.py:528
|
|
248 |
#: vigiboard/controllers/silence.py:516
|
|
249 | 249 |
#, python-format |
250 | 250 |
msgid "" |
251 | 251 |
"A new silence rule (#%(id)s) has been added for service \"%(service)s\" " |
... | ... | |
254 | 254 |
"Une nouvelle règle de silence (#%(id)s) a été ajoutée pour le service " |
255 | 255 |
"\"%(service)s\" sur l'hôte \"%(host)s\"." |
256 | 256 |
|
257 |
#: vigiboard/controllers/silence.py:536
|
|
257 |
#: vigiboard/controllers/silence.py:524
|
|
258 | 258 |
#, python-format |
259 | 259 |
msgid "" |
260 | 260 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for host " |
... | ... | |
263 | 263 |
"L'utilisateur %(user)s (IP: %(ip)s) a ajouté une règle de silence " |
264 | 264 |
"(#%(id)s) pour l'hôte %(host)s." |
265 | 265 |
|
266 |
#: vigiboard/controllers/silence.py:544
|
|
266 |
#: vigiboard/controllers/silence.py:532
|
|
267 | 267 |
#, python-format |
268 | 268 |
msgid "A new silence rule (#%(id)s) has been added for the host \"%(host)s\"." |
269 | 269 |
msgstr "" |
270 | 270 |
"Une nouvelle règle de silence (#%(id)s) a été ajoutée pour l'hôte " |
271 | 271 |
"\"%(host)s\"." |
272 | 272 |
|
273 |
#: vigiboard/controllers/silence.py:574
|
|
273 |
#: vigiboard/controllers/silence.py:562
|
|
274 | 274 |
msgid "No silence rule id specified." |
275 | 275 |
msgstr "Aucun identifiant de règle de silence spécifié." |
276 | 276 |
|
277 |
#: vigiboard/controllers/silence.py:593
|
|
277 |
#: vigiboard/controllers/silence.py:581
|
|
278 | 278 |
#, python-format |
279 | 279 |
msgid "Error: the following silence rules do not exist: %s." |
280 | 280 |
msgstr "Erreur : les règles de silence suivantes n'existent pas : %s." |
281 | 281 |
|
282 |
#: vigiboard/controllers/silence.py:596
|
|
282 |
#: vigiboard/controllers/silence.py:584
|
|
283 | 283 |
#, python-format |
284 | 284 |
msgid "Error: silence rule #%s does not exist." |
285 | 285 |
msgstr "Erreur : la règle de silence #%s n'existe pas." |
286 | 286 |
|
287 |
#: vigiboard/controllers/silence.py:614
|
|
287 |
#: vigiboard/controllers/silence.py:602
|
|
288 | 288 |
#, python-format |
289 | 289 |
msgid "An exception has been raised while deleting the silence rules: %s" |
290 | 290 |
msgstr "" |
291 | 291 |
"Une exception a été levée lors de la suppression des règles de silence : " |
292 | 292 |
"%s" |
293 | 293 |
|
294 |
#: vigiboard/controllers/silence.py:624
|
|
294 |
#: vigiboard/controllers/silence.py:612
|
|
295 | 295 |
#, python-format |
296 | 296 |
msgid "" |
297 | 297 |
"User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for service " |
... | ... | |
300 | 300 |
"L'utilisateur %(user)s (IP: %(ip)s) a supprimé la règle de silence " |
301 | 301 |
"#%(id)s pour le service %(service)s sur l'hôte %(host)s" |
302 | 302 |
|
303 |
#: vigiboard/controllers/silence.py:636
|
|
303 |
#: vigiboard/controllers/silence.py:624
|
|
304 | 304 |
#, python-format |
305 | 305 |
msgid "User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for host %(host)s" |
306 | 306 |
msgstr "" |
307 | 307 |
"L'utilisateur %(user)s (IP: %(ip)s) a supprimé la règle de silence " |
308 | 308 |
"#%(id)s pour l'hôte %(host)s" |
309 | 309 |
|
310 |
#: vigiboard/controllers/silence.py:647
|
|
310 |
#: vigiboard/controllers/silence.py:635
|
|
311 | 311 |
#, python-format |
312 | 312 |
msgid "The following silence rules have been successfully deleted: %s." |
313 | 313 |
msgstr "Les règles de silence suivantes ont été supprimées avec succès: %s." |
314 | 314 |
|
315 |
#: vigiboard/controllers/silence.py:650
|
|
315 |
#: vigiboard/controllers/silence.py:638
|
|
316 | 316 |
#, python-format |
317 | 317 |
msgid "Silence rule #%s has been successfully deleted." |
318 | 318 |
msgstr "La règle de silence #%s a été supprimée avec succès." |
... | ... | |
340 | 340 |
msgid "And" |
341 | 341 |
msgstr "Et" |
342 | 342 |
|
343 |
#: vigiboard/controllers/plugins/date.py:109 |
|
344 |
msgid "Start date cannot be greater than current date" |
|
345 |
msgstr "La date de début ne peut être supérieure à la date courante" |
|
346 |
|
|
347 |
#: vigiboard/controllers/plugins/date.py:112 |
|
348 |
msgid "Start date cannot be greater than end date" |
|
349 |
msgstr "La date de début ne peut être supérieure à la date de fin" |
|
350 |
|
|
351 |
#: vigiboard/controllers/plugins/date.py:120 |
|
352 |
msgid "End date cannot be greater than current date" |
|
353 |
msgstr "La date de fin ne peut être supérieure à la date courante" |
|
354 |
|
|
343 | 355 |
#: vigiboard/controllers/plugins/details.py:195 |
344 | 356 |
#: vigiboard/controllers/plugins/state.py:47 |
345 | 357 |
msgid "Current state" |
vigiboard/i18n/vigiboard.pot | ||
---|---|---|
9 | 9 |
msgstr "" |
10 | 10 |
"Project-Id-Version: vigilo-vigiboard 3.5\n" |
11 | 11 |
"Report-Msgid-Bugs-To: contact@projet-vigilo.org\n" |
12 |
"POT-Creation-Date: 2015-04-21 11:49+0200\n"
|
|
12 |
"POT-Creation-Date: 2015-04-23 18:04+0200\n"
|
|
13 | 13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" |
14 | 14 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" |
15 | 15 |
"Language-Team: LANGUAGE <LL@li.org>\n" |
... | ... | |
24 | 24 |
msgstr "" |
25 | 25 |
|
26 | 26 |
#: vigiboard/controllers/root.py:89 vigiboard/controllers/root.py:99 |
27 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:70
|
|
27 |
#: vigiboard/controllers/root.py:582 vigiboard/controllers/silence.py:72
|
|
28 | 28 |
msgid "You need to be authenticated" |
29 | 29 |
msgstr "" |
30 | 30 |
|
... | ... | |
124 | 124 |
msgid "Next %(limit)s" |
125 | 125 |
msgstr "" |
126 | 126 |
|
127 |
#: vigiboard/controllers/silence.py:73
|
|
127 |
#: vigiboard/controllers/silence.py:75
|
|
128 | 128 |
msgid "Insufficient privileges for this action" |
129 | 129 |
msgstr "" |
130 | 130 |
|
131 |
#: vigiboard/controllers/silence.py:172
|
|
131 |
#: vigiboard/controllers/silence.py:160
|
|
132 | 132 |
#, python-format |
133 | 133 |
msgid "Another rule already exists for service '%s' on host '%s'." |
134 | 134 |
msgstr "" |
135 | 135 |
|
136 |
#: vigiboard/controllers/silence.py:176
|
|
136 |
#: vigiboard/controllers/silence.py:164
|
|
137 | 137 |
#, python-format |
138 | 138 |
msgid "Another rule already exists for host '%s'." |
139 | 139 |
msgstr "" |
140 | 140 |
|
141 |
#: vigiboard/controllers/silence.py:258
|
|
141 |
#: vigiboard/controllers/silence.py:246
|
|
142 | 142 |
#: vigiboard/controllers/plugins/hostname.py:38 |
143 | 143 |
msgid "Host" |
144 | 144 |
msgstr "" |
145 | 145 |
|
146 |
#: vigiboard/controllers/silence.py:259
|
|
146 |
#: vigiboard/controllers/silence.py:247
|
|
147 | 147 |
#: vigiboard/controllers/plugins/servicename.py:41 |
148 | 148 |
msgid "Service" |
149 | 149 |
msgstr "" |
150 | 150 |
|
151 |
#: vigiboard/controllers/silence.py:260
|
|
151 |
#: vigiboard/controllers/silence.py:248
|
|
152 | 152 |
msgid "States" |
153 | 153 |
msgstr "" |
154 | 154 |
|
155 |
#: vigiboard/controllers/silence.py:261
|
|
155 |
#: vigiboard/controllers/silence.py:249
|
|
156 | 156 |
msgid "Last modification" |
157 | 157 |
msgstr "" |
158 | 158 |
|
159 |
#: vigiboard/controllers/silence.py:262
|
|
159 |
#: vigiboard/controllers/silence.py:250
|
|
160 | 160 |
msgid "Author" |
161 | 161 |
msgstr "" |
162 | 162 |
|
163 |
#: vigiboard/controllers/silence.py:263
|
|
163 |
#: vigiboard/controllers/silence.py:251
|
|
164 | 164 |
msgid "Comment" |
165 | 165 |
msgstr "" |
166 | 166 |
|
167 |
#: vigiboard/controllers/silence.py:313 vigiboard/controllers/silence.py:412
|
|
168 |
#: vigiboard/controllers/silence.py:434 vigiboard/controllers/silence.py:583
|
|
167 |
#: vigiboard/controllers/silence.py:301 vigiboard/controllers/silence.py:400
|
|
168 |
#: vigiboard/controllers/silence.py:422 vigiboard/controllers/silence.py:571
|
|
169 | 169 |
#, python-format |
170 | 170 |
msgid "An exception has been raised while querying the database: %s" |
171 | 171 |
msgstr "" |
172 | 172 |
|
173 |
#: vigiboard/controllers/silence.py:317 vigiboard/controllers/silence.py:324
|
|
174 |
#: vigiboard/controllers/silence.py:438 vigiboard/controllers/silence.py:605
|
|
173 |
#: vigiboard/controllers/silence.py:305 vigiboard/controllers/silence.py:312
|
|
174 |
#: vigiboard/controllers/silence.py:426 vigiboard/controllers/silence.py:593
|
|
175 | 175 |
#, python-format |
176 | 176 |
msgid "Silence rule #%s does not exist." |
177 | 177 |
msgstr "" |
178 | 178 |
|
179 |
#: vigiboard/controllers/silence.py:395
|
|
179 |
#: vigiboard/controllers/silence.py:383
|
|
180 | 180 |
msgid "No state specified for the silence rule." |
181 | 181 |
msgstr "" |
182 | 182 |
|
183 |
#: vigiboard/controllers/silence.py:417
|
|
183 |
#: vigiboard/controllers/silence.py:405
|
|
184 | 184 |
#, python-format |
185 | 185 |
msgid "Host '%s' does not exist." |
186 | 186 |
msgstr "" |
187 | 187 |
|
188 |
#: vigiboard/controllers/silence.py:420
|
|
188 |
#: vigiboard/controllers/silence.py:408
|
|
189 | 189 |
#, python-format |
190 | 190 |
msgid "Service '%s' does not exist for host '%s'." |
191 | 191 |
msgstr "" |
192 | 192 |
|
193 |
#: vigiboard/controllers/silence.py:472
|
|
193 |
#: vigiboard/controllers/silence.py:460
|
|
194 | 194 |
#, python-format |
195 | 195 |
msgid "An exception has been raised while updating the database: %s" |
196 | 196 |
msgstr "" |
197 | 197 |
|
198 |
#: vigiboard/controllers/silence.py:482
|
|
198 |
#: vigiboard/controllers/silence.py:470
|
|
199 | 199 |
#, python-format |
200 | 200 |
msgid "" |
201 | 201 |
"User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for service " |
202 | 202 |
"%(service)s on host %(host)s." |
203 | 203 |
msgstr "" |
204 | 204 |
|
205 |
#: vigiboard/controllers/silence.py:492
|
|
205 |
#: vigiboard/controllers/silence.py:480
|
|
206 | 206 |
#, python-format |
207 | 207 |
msgid "" |
208 | 208 |
"Silence rule #%(id)s (host: %(host)s, service: %(service)s) has been " |
209 | 209 |
"successfully updated." |
210 | 210 |
msgstr "" |
211 | 211 |
|
212 |
#: vigiboard/controllers/silence.py:501
|
|
212 |
#: vigiboard/controllers/silence.py:489
|
|
213 | 213 |
#, python-format |
214 | 214 |
msgid "User %(user)s (IP: %(ip)s) updated silence rule #%(id)s for host %(host)s." |
215 | 215 |
msgstr "" |
216 | 216 |
|
217 |
#: vigiboard/controllers/silence.py:509
|
|
217 |
#: vigiboard/controllers/silence.py:497
|
|
218 | 218 |
#, python-format |
219 | 219 |
msgid "Silence rule #%(id)s (host: %(host)s) has been successfully updated." |
220 | 220 |
msgstr "" |
221 | 221 |
|
222 |
#: vigiboard/controllers/silence.py:518
|
|
222 |
#: vigiboard/controllers/silence.py:506
|
|
223 | 223 |
#, python-format |
224 | 224 |
msgid "" |
225 | 225 |
"User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for service " |
226 | 226 |
"%(service)s on host %(host)s." |
227 | 227 |
msgstr "" |
228 | 228 |
|
229 |
#: vigiboard/controllers/silence.py:528
|
|
229 |
#: vigiboard/controllers/silence.py:516
|
|
230 | 230 |
#, python-format |
231 | 231 |
msgid "" |
232 | 232 |
"A new silence rule (#%(id)s) has been added for service \"%(service)s\" on " |
233 | 233 |
"host \"%(host)s\"." |
234 | 234 |
msgstr "" |
235 | 235 |
|
236 |
#: vigiboard/controllers/silence.py:536
|
|
236 |
#: vigiboard/controllers/silence.py:524
|
|
237 | 237 |
#, python-format |
238 | 238 |
msgid "User %(user)s (IP: %(ip)s) added a silence rule (#%(id)s) for host %(host)s." |
239 | 239 |
msgstr "" |
240 | 240 |
|
241 |
#: vigiboard/controllers/silence.py:544
|
|
241 |
#: vigiboard/controllers/silence.py:532
|
|
242 | 242 |
#, python-format |
243 | 243 |
msgid "A new silence rule (#%(id)s) has been added for the host \"%(host)s\"." |
244 | 244 |
msgstr "" |
245 | 245 |
|
246 |
#: vigiboard/controllers/silence.py:574
|
|
246 |
#: vigiboard/controllers/silence.py:562
|
|
247 | 247 |
msgid "No silence rule id specified." |
248 | 248 |
msgstr "" |
249 | 249 |
|
250 |
#: vigiboard/controllers/silence.py:593
|
|
250 |
#: vigiboard/controllers/silence.py:581
|
|
251 | 251 |
#, python-format |
252 | 252 |
msgid "Error: the following silence rules do not exist: %s." |
253 | 253 |
msgstr "" |
254 | 254 |
|
255 |
#: vigiboard/controllers/silence.py:596
|
|
255 |
#: vigiboard/controllers/silence.py:584
|
|
256 | 256 |
#, python-format |
257 | 257 |
msgid "Error: silence rule #%s does not exist." |
258 | 258 |
msgstr "" |
259 | 259 |
|
260 |
#: vigiboard/controllers/silence.py:614
|
|
260 |
#: vigiboard/controllers/silence.py:602
|
|
261 | 261 |
#, python-format |
262 | 262 |
msgid "An exception has been raised while deleting the silence rules: %s" |
263 | 263 |
msgstr "" |
264 | 264 |
|
265 |
#: vigiboard/controllers/silence.py:624
|
|
265 |
#: vigiboard/controllers/silence.py:612
|
|
266 | 266 |
#, python-format |
267 | 267 |
msgid "" |
268 | 268 |
"User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for service " |
269 | 269 |
"%(service)s on host %(host)s" |
270 | 270 |
msgstr "" |
271 | 271 |
|
272 |
#: vigiboard/controllers/silence.py:636
|
|
272 |
#: vigiboard/controllers/silence.py:624
|
|
273 | 273 |
#, python-format |
274 | 274 |
msgid "User %(user)s (IP: %(ip)s) deleted silence rule #%(id)s for host %(host)s" |
275 | 275 |
msgstr "" |
276 | 276 |
|
277 |
#: vigiboard/controllers/silence.py:647
|
|
277 |
#: vigiboard/controllers/silence.py:635
|
|
278 | 278 |
#, python-format |
279 | 279 |
msgid "The following silence rules have been successfully deleted: %s." |
280 | 280 |
msgstr "" |
281 | 281 |
|
282 |
#: vigiboard/controllers/silence.py:650
|
|
282 |
#: vigiboard/controllers/silence.py:638
|
|
283 | 283 |
#, python-format |
284 | 284 |
msgid "Silence rule #%s has been successfully deleted." |
285 | 285 |
msgstr "" |
... | ... | |
307 | 307 |
msgid "And" |
308 | 308 |
msgstr "" |
309 | 309 |
|
310 |
#: vigiboard/controllers/plugins/date.py:109 |
|
311 |
msgid "Start date cannot be greater than current date" |
|
312 |
msgstr "" |
|
313 |
|
|
314 |
#: vigiboard/controllers/plugins/date.py:112 |
|
315 |
msgid "Start date cannot be greater than end date" |
|
316 |
msgstr "" |
|
317 |
|
|
318 |
#: vigiboard/controllers/plugins/date.py:120 |
|
319 |
msgid "End date cannot be greater than current date" |
|
320 |
msgstr "" |
|
321 |
|
|
310 | 322 |
#: vigiboard/controllers/plugins/details.py:195 |
311 | 323 |
#: vigiboard/controllers/plugins/state.py:47 |
312 | 324 |
msgid "Current state" |
vigiboard/lib/error_handler.py | ||
---|---|---|
1 |
# vim: set fileencoding=utf-8 sw=4 ts=4 et : |
|
2 |
################################################################################ |
|
3 |
# |
|
4 |
# Copyright (C) 2007-2015 CS-SI |
|
5 |
# |
|
6 |
# This program is free software; you can redistribute it and/or modify |
|
7 |
# it under the terms of the GNU General Public License version 2 as |
|
8 |
# published by the Free Software Foundation. |
|
9 |
# |
|
10 |
# This program is distributed in the hope that it will be useful, |
|
11 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
12 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
13 |
# GNU General Public License for more details. |
|
14 |
# |
|
15 |
# You should have received a copy of the GNU General Public License |
|
16 |
# along with this program; if not, write to the Free Software |
|
17 |
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
|
18 |
################################################################################ |
|
19 |
|
|
20 |
"""Fonction de gestion des messages d'erreur""" |
|
21 |
|
|
22 |
import logging |
|
23 |
|
|
24 |
from tg import flash, redirect |
|
25 |
|
|
26 |
LOGGER = logging.getLogger(__name__) |
|
27 |
|
|
28 |
def handle_error_message(message, redirection_url='./'): |
|
29 |
""" |
|
30 |
Affiche le message dans l'IHM, l'enregistre dans les logs |
|
31 |
et renvoie le navigateur vers l'URL de redirection. |
|
32 |
|
|
33 |
@param message: message d'erreur à afficher |
|
34 |
@type message: C{str} |
|
35 |
@param redirection_url: (optionnel) URL de redirection |
|
36 |
@type redirection_url: C{str} |
|
37 |
""" |
|
38 |
LOGGER.error(message) |
|
39 |
flash(message, 'error') |
|
40 |
redirect(redirection_url) |
vigiboard/tests/functional/test_search_form_misc.py | ||
---|---|---|
7 | 7 |
""" |
8 | 8 |
from nose.tools import assert_true, assert_equal |
9 | 9 |
from datetime import datetime |
10 |
from datetime import timedelta |
|
10 | 11 |
import transaction |
11 | 12 |
|
12 | 13 |
from vigiboard.tests import TestController |
... | ... | |
17 | 18 |
|
18 | 19 |
def insert_deps(): |
19 | 20 |
"""Insère les dépendances nécessaires aux tests.""" |
20 |
timestamp = datetime.now() |
|
21 |
timestamp = datetime.now() + timedelta(seconds=-10)
|
|
21 | 22 |
|
22 | 23 |
host = Host( |
23 | 24 |
name=u'bar', |
... | ... | |
68 | 69 |
DBSession.flush() |
69 | 70 |
return timestamp |
70 | 71 |
|
71 |
|
|
72 | 72 |
class TestSearchFormMisc(TestController): |
73 | 73 |
"""Teste la récupération d'événements selon le nom d'hôte.""" |
74 | 74 |
def setUp(self): |
... | ... | |
86 | 86 |
DBSession.add(usergroup) |
87 | 87 |
DBSession.flush() |
88 | 88 |
|
89 |
def get_number_of_rows(self, from_date, to_date): |
|
90 |
"""Détermine le nombre de lignes parmi les résultats d'une recherche sur le formulaire.""" |
|
91 |
response = self.app.get( |
|
92 |
'/?from_date=%(from_date)s&to_date=%(to_date)s' % { |
|
93 |
'from_date': from_date, |
|
94 |
'to_date': to_date, |
|
95 |
}, |
|
96 |
extra_environ={'REMOTE_USER': 'user'}) |
|
97 |
rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr') |
|
98 |
print "There are %d rows in the result set" % len(rows) |
|
99 |
return len(rows) |
|
100 |
|
|
89 | 101 |
def test_search_by_output(self): |
90 | 102 |
"""Teste la recherche sur le message issu de Nagios.""" |
91 | 103 |
insert_deps() |
... | ... | |
134 | 146 |
|
135 | 147 |
# Préparation des dates/heures. |
136 | 148 |
from_date = timestamp.strftime("%Y-%m-%d %I:%M:%S %p") |
137 |
to_date = datetime.max.strftime("%Y-%m-%d %I:%M:%S %p")
|
|
149 |
to_date = datetime.now().strftime("%Y-%m-%d %I:%M:%S %p")
|
|
138 | 150 |
|
139 | 151 |
# Permet également de vérifier que la recherche |
140 | 152 |
# par date est inclusive. |
... | ... | |
154 | 166 |
cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td') |
155 | 167 |
print "There are %d columns in the result set" % len(cols) |
156 | 168 |
assert_true(len(cols) > 1) |
169 |
|
|
170 |
def test_future_begin_date(self): |
|
171 |
"""Contrôle des dates. Vérifie que date de début < date courante.""" |
|
172 |
timestamp = insert_deps() |
|
173 |
transaction.commit() |
|
174 |
|
|
175 |
# Préparation des dates/heures. |
|
176 |
from_date = datetime.now() + timedelta(seconds=60) |
|
177 |
from_date = from_date.strftime("%Y-%m-%d %I:%M:%S %p") |
|
178 |
to_date = datetime.now().strftime("%Y-%m-%d %I:%M:%S %p") |
|
179 |
|
|
180 |
# Démarrage du test |
|
181 |
rows = self.get_number_of_rows(from_date, to_date) |
|
182 |
|
|
183 |
# Aucun résultat. |
|
184 |
assert_equal(rows, 0) |
|
185 |
|
|
186 |
def test_future_end_date(self): |
|
187 |
"""Contrôle des dates. Vérifie que date de fin < date courante.""" |
|
188 |
timestamp = insert_deps() |
|
189 |
transaction.commit() |
|
190 |
|
|
191 |
# Préparation des dates/heures. |
|
192 |
from_date = timestamp.strftime("%Y-%m-%d %I:%M:%S %p") |
|
193 |
to_date = datetime.now() + timedelta(seconds=60) |
|
194 |
to_date = to_date.strftime("%Y-%m-%d %I:%M:%S %p") |
|
195 |
|
|
196 |
# Démarrage du test |
|
197 |
rows = self.get_number_of_rows(from_date, to_date) |
|
198 |
|
|
199 |
# Aucun résultat. |
|
200 |
assert_equal(rows, 0) |
|
201 |
|
|
202 |
def test_dates_inconsistency(self): |
|
203 |
"""Contrôle des dates. Vérifie date de début <= date de fin.""" |
|
204 |
timestamp = insert_deps() |
|
205 |
transaction.commit() |
|
206 |
|
|
207 |
# Préparation des dates/heures. |
|
208 |
from_date = timestamp + timedelta(seconds=5) |
|
209 |
from_date = from_date.strftime("%Y-%m-%d %I:%M:%S %p") |
|
210 |
to_date = timestamp.strftime("%Y-%m-%d %I:%M:%S %p") |
|
211 |
|
|
212 |
# Démarrage du test |
|
213 |
rows = self.get_number_of_rows(from_date, to_date) |
|
214 |
|
|
215 |
# Aucun résultat. |
|
216 |
assert_equal(rows, 0) |
Also available in: Unified diff