Project

General

Profile

Revision 4dd2035e

ID4dd2035ec9ee9b2de156e69d496a2c57d8b78ede
Parent 67c8e59e
Child 021bf397

Added by Francois POIROTTE over 14 years ago

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

View differences:

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