Revision 4dd2035e
Vérification des permissions pour l'accès à get_plugin_value() dans le contrôleur principal de VigiBoard.
Corrections de divers éléments pour la documentation de VigiBoard.
git-svn-id: https://vigilo-dev.si.c-s.fr/svn@1743 b22e2e97-25c9-44ff-b637-2e5ceca36478
vigiboard/controllers/root.py | ||
---|---|---|
2 | 2 |
# vim:set expandtab tabstop=4 shiftwidth=4: |
3 | 3 |
"""Vigiboard Controller""" |
4 | 4 |
|
5 |
from tg.exceptions import HTTPNotFound |
|
5 | 6 |
from tg import expose, validate, require, flash, \ |
6 | 7 |
tmpl_context, request, config, session, redirect, url |
7 | 8 |
from tw.forms import validators |
... | ... | |
408 | 409 |
])}, error_handler=process_form_errors) |
409 | 410 |
@require(Any(not_anonymous(), msg=l_("You need to be authenticated"))) |
410 | 411 |
def update(self,**krgv): |
411 |
|
|
412 | 412 |
""" |
413 | 413 |
Mise à jour d'un événement suivant les arguments passés. |
414 | 414 |
Cela peut être un changement de ticket ou un changement de statut. |
... | ... | |
441 | 441 |
|
442 | 442 |
if len(ids) > 1 : |
443 | 443 |
ids = ids[:-1] |
444 |
|
|
444 |
|
|
445 | 445 |
username = request.environ['repoze.who.identity']['repoze.who.userid'] |
446 | 446 |
events = VigiboardRequest(User.by_user_name(username)) |
447 | 447 |
events.add_table(CorrEvent) |
... | ... | |
499 | 499 |
[i for [i, j] in config.get('vigiboard_plugins', [])])}, |
500 | 500 |
error_handler = process_form_errors) |
501 | 501 |
@expose('json') |
502 |
def get_plugin_value(self, plugin_name, *arg, **krgv): |
|
502 |
@require(Any(not_anonymous(), msg=l_("You need to be authenticated"))) |
|
503 |
def get_plugin_value(self, idcorrevent, plugin_name, *arg, **krgv): |
|
503 | 504 |
""" |
504 |
Permet aux plugins de pouvoir récupérer des valeurs Json |
|
505 |
Permet de récupérer la valeur d'un plugin associée à un CorrEvent |
|
506 |
donné via JSON. |
|
505 | 507 |
""" |
506 | 508 |
plugins = config['vigiboard_plugins'] |
507 | 509 |
if plugins is None: |
508 |
return |
|
510 |
raise HTTPNotFound() |
|
511 |
|
|
512 |
# Permet de vérifier si l'utilisateur a bien les permissions |
|
513 |
# pour accéder à cet événement et si l'événement existe. |
|
514 |
username = request.environ['repoze.who.identity']['repoze.who.userid'] |
|
515 |
events = VigiboardRequest(User.by_user_name(username)) |
|
516 |
events.add_table(CorrEvent.idcorrevent) |
|
517 |
events.add_join((Event, CorrEvent.idcause == Event.idevent)) |
|
518 |
events.add_filter(CorrEvent.idcorrevent == idcorrevent) |
|
519 |
|
|
520 |
# Pas d'événement ou permission refusée. On ne distingue pas |
|
521 |
# les 2 cas afin d'éviter la divulgation d'informations. |
|
522 |
if not events.num_rows(): |
|
523 |
raise HTTPNotFound() |
|
509 | 524 |
|
510 | 525 |
plugin = [i for i in plugins if i[0] == plugin_name][0] |
511 | 526 |
try: |
... | ... | |
513 | 528 |
'vigiboard.controllers.vigiboard_plugin.' + plugin[0], |
514 | 529 |
globals(), locals(), [plugin[1]], -1) |
515 | 530 |
plug = getattr(mypac, plugin[1])() |
516 |
return plug.controller(*arg, **krgv) |
|
517 |
except: |
|
518 |
raise |
|
531 |
return plug.controller(idcorrevent, *arg, **krgv)
|
|
532 |
except ImportError:
|
|
533 |
raise HTTPNotFound()
|
|
519 | 534 |
|
520 | 535 |
@validate(validators={ |
521 | 536 |
"fontsize": validators.Regex( |
... | ... | |
524 | 539 |
)}, error_handler = process_form_errors) |
525 | 540 |
@expose('json') |
526 | 541 |
def set_fontsize(self, fontsize): |
527 |
""" |
|
528 |
Save font size |
|
529 |
""" |
|
542 |
"""Enregistre la taille de la police dans les préférences.""" |
|
530 | 543 |
session['fontsize'] = fontsize |
531 | 544 |
session.save() |
532 | 545 |
return dict() |
... | ... | |
535 | 548 |
error_handler=process_form_errors) |
536 | 549 |
@expose('json') |
537 | 550 |
def set_refresh(self, refresh): |
538 |
""" |
|
539 |
Save refresh time |
|
540 |
""" |
|
551 |
"""Enregistre le temps de rafraichissement dans les préférences.""" |
|
541 | 552 |
session['refresh'] = refresh |
542 | 553 |
session.save() |
543 | 554 |
return dict() |
544 | 555 |
|
545 | 556 |
@expose('json') |
546 | 557 |
def set_theme(self, theme): |
547 |
""" |
|
548 |
Save theme to use time |
|
549 |
""" |
|
558 |
"""Enregistre le thème à utiliser dans les préférences.""" |
|
559 |
# On sauvegarde l'ID du thème sans vérifications |
|
560 |
# car les thèmes (styles CSS) sont définies dans |
|
561 |
# les packages de thèmes (ex: vigilo-themes-default). |
|
562 |
# La vérification de la valeur est faite dans les templates. |
|
550 | 563 |
session['theme'] = theme |
551 | 564 |
session.save() |
552 | 565 |
return dict() |
553 | 566 |
|
554 | 567 |
def get_last_modification_timestamp(event_id_list, |
555 |
value_if_none=datetime.now()):
|
|
568 |
value_if_none=datetime.now()): |
|
556 | 569 |
""" |
557 | 570 |
Récupère le timestamp de la dernière modification |
558 | 571 |
opérée sur l'un des événements dont l'identifiant |
vigiboard/controllers/vigiboard_plugin/__init__.py | ||
---|---|---|
1 | 1 |
# -*- coding: utf-8 -*- |
2 | 2 |
# vim:set expandtab tabstop=4 shiftwidth=4: |
3 | 3 |
""" |
4 |
Generic plugin
|
|
4 |
Module complémentaire générique.
|
|
5 | 5 |
""" |
6 | 6 |
|
7 | 7 |
from pylons.i18n import ugettext as _ |
8 | 8 |
|
9 | 9 |
class VigiboardRequestPlugin(object): |
10 |
|
|
11 | 10 |
""" |
12 |
Classe dont les plugins utilisé dans VigiboardRequest doivent étendre.
|
|
11 |
Classe que les plugins de VigiBoard doivent étendre.
|
|
13 | 12 |
""" |
14 | 13 |
|
15 | 14 |
def __init__ (self, table = None, join = None, outerjoin = None, |
... | ... | |
27 | 26 |
self.object_name = object_name |
28 | 27 |
|
29 | 28 |
def __show__ (self, aggregate): |
30 |
|
|
31 | 29 |
""" |
32 | 30 |
Permet d'éviter toutes erreurs d'affichage. |
33 | 31 |
C'est la fonction appelée par le formateur d'événements. |
... | ... | |
42 | 40 |
return _('Error') |
43 | 41 |
|
44 | 42 |
def show(self, aggregate): |
45 |
|
|
46 | 43 |
""" |
47 | 44 |
Fonction qui affichera par défaut une chaîne de |
48 | 45 |
caractères vide dans la colonne attribuée au plugin. |
... | ... | |
54 | 51 |
return '' |
55 | 52 |
|
56 | 53 |
def context(self, context): |
57 |
|
|
58 | 54 |
""" |
59 |
Fonction permettant de rajouter du context à la page d'événements,
|
|
60 |
comme par exemple un css ou une fonction Javascript
|
|
55 |
Fonction permettant d'ajouter un contexte dans la page d'événements,
|
|
56 |
comme par exemple un fichier CSS ou une fonction Javascript.
|
|
61 | 57 |
""" |
62 | 58 |
|
63 | 59 |
pass |
64 | 60 |
|
65 | 61 |
|
66 | 62 |
def controller(self): |
67 |
|
|
68 | 63 |
""" |
69 |
Fonction permettant de rajouter un pseudo controller pour le plugin.
|
|
70 |
Ceci permet par exemple de faire de appels json
|
|
64 |
Fonction permettant de rajouter un pseudo-contrôleur pour le plugin.
|
|
65 |
Ceci permet par exemple d'exécuter des requêtes JSON.
|
|
71 | 66 |
""" |
72 | 67 |
|
73 | 68 |
pass |
Also available in: Unified diff