Project

General

Profile

Revision 10848680

ID10848680d71b0a3628154af8cf7e5d628973cbe6
Parent ee3ae8c8
Child e2ae110e

Added by Francois POIROTTE over 14 years ago

Utilsation des fonctionnalités fournies par vigilo-turbogears pour la config et la création des tables.
Quelques corrections mineures.

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@950 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

setup.py
34 34
        "PasteDeploy",
35 35
        "Paste",
36 36
        "decorator != 3.1.0", # Blacklist bad version
37
        "vigilo-turbogears",
37 38
        ],
38 39
    paster_plugins=['PasteScript', 'Pylons', 'TurboGears2', 'tg.devtools'],
39 40
    packages=find_packages(exclude=['ez_setup']),
vigiboard/config/app_cfg.py
14 14
 
15 15
"""
16 16

  
17
from tg.configuration import AppConfig
18

  
19
class MyAppConfig(AppConfig):
20
    """We overload AppConfig for our needs."""
21

  
22
    def __init__(self, app_name):
23
        super(MyAppConfig, self).__init__()
24
        self.__app_name = app_name
25
        self.__tpl_translator = None
26

  
27
    def __setup_template_translator(self):
28
        from pkg_resources import resource_filename
29
        import gettext
30
        from tg.i18n import get_lang
31

  
32
        if self.__tpl_translator is None:
33
            i18n_dir = resource_filename('vigilo.themes', 'i18n')
34
            lang = get_lang()
35

  
36
            # During unit tests, no language is defined
37
            # which results in an error if gettext.translation
38
            # is used to retrieve translations.
39
            if lang is None:
40
                self.__tpl_translator = gettext.NullTranslations()
41
            else:                
42
                self.__tpl_translator = gettext.translation(
43
                    'theme', i18n_dir, get_lang())
44

  
45
    def setup_paths(self):
46
        """Add egg-aware search path to genshi."""
47
        super(MyAppConfig, self).setup_paths()
48
        from pkg_resources import resource_filename
49

  
50
        app_templates = resource_filename(
51
            'vigilo.themes.templates', self.__app_name)
52
        common_templates = resource_filename(
53
            'vigilo.themes.templates', 'common')
54
        self.paths['templates'] = [app_templates, common_templates]
55

  
56
    def setup_genshi_renderer(self):
57
        """Setup templates to use an alternate translator."""
58
        # On reprend plusieurs éléments de "tg.configuration".
59
        from genshi.template import TemplateLoader
60
        from genshi.filters import Translator
61
        from tg.render import render_genshi
62
        from pkg_resources import resource_filename
63
        from tg.configuration import config
64

  
65
        def template_loaded(template):
66
            """Called when a template is done loading."""
67
            self.__setup_template_translator()
68
            template.filters.insert(0, Translator(self.__tpl_translator.ugettext))
69

  
70
        def my_render_genshi(template_name, template_vars, **kwargs):
71
            self.__setup_template_translator()
72
            template_vars['l_'] = self.__tpl_translator.ugettext
73
            return render_genshi(template_name, template_vars, **kwargs)
74

  
75
        loader = TemplateLoader(search_path=self.paths.templates,
76
                                auto_reload=self.auto_reload_templates,
77
                                callback=template_loaded)
78

  
79
        config['pylons.app_globals'].genshi_loader = loader
80
        self.render_functions.genshi = my_render_genshi
81

  
82
    def setup_sqlalchemy(self):
83
        """
84
        TG2 needs to configure the DB session before anything else, then it
85
        calls init_model(). In our case, the DB session is already configured
86
        so the function call is unnecessary. We suppress TG2's behaviour here.
87
        """
88
        pass
17
from vigilo.turbogears import VigiloAppConfig
89 18

  
90 19
import vigiboard
91 20
from vigiboard import model
92 21
from vigiboard.lib import app_globals, helpers
93 22

  
94
base_config = MyAppConfig('vigiboard')
23
base_config = VigiloAppConfig('vigiboard')
95 24
base_config.renderers = []
96 25

  
97 26
# Pour gérer les thèmes, la notation "pointée" n'est pas utilisée.
vigiboard/controllers/root.py
315 315
        # Si l'utilisateur édite plusieurs évènements à la fois,
316 316
        # il nous faut chacun des identifiants
317 317

  
318
        if krgv['id'] is None:
319
            flash(_('No event has been selected'), 'warning')
320
            raise redirect(request.environ.get('HTTP_REFERER', url('/')))
321

  
318 322
        ids = krgv['id'].split(',')
319 323
       
320 324
        if len(ids) > 1 :
......
368 372
                DBSession.add(history)
369 373
                event.status = krgv['status']
370 374

  
371
        DBSession.flush()       
375
        DBSession.flush()
372 376
        flash(_('Updated successfully'))
373 377
        redirect(request.environ.get('HTTP_REFERER', url('/')))
374 378

  
......
416 420
        session['refresh'] = refresh
417 421
        session.save()
418 422
        return dict(ret= 'ok')
423

  
vigiboard/controllers/vigiboard_controller.py
10 10
from repoze.what import predicates
11 11

  
12 12
from vigiboard.lib.base import BaseController
13
from vigiboard.model import DBSession 
13
from vigiboard.model import DBSession, Access
14 14
from vigiboard.controllers.error import ErrorController
15
from vigiboard import model
16 15

  
17 16
class VigiboardRootController(BaseController):
18 17
    """
......
49 48
            login_counter = request.environ['repoze.who.logins'] + 1
50 49
            redirect(url('/login', came_from=came_from, __logins=login_counter))
51 50
        userid = request.identity['repoze.who.userid']
51
        Access.add_login(userid, request.remote_addr, 'Vigiboard')
52 52
        flash(_('Welcome back, %s!') % userid)
53 53
        redirect(came_from)
54 54

  
......
58 58
        Redirect the user to the initially requested page on logout and say
59 59
        goodbye as well.
60 60
        """
61
        # XXX Ne fonctionne pas, l'identité est déjà oubliée arrivé ici.
62
#        userid = request.identity['repoze.who.userid']
63
#        Access.add_logout(userid, request.remote_addr, 'Vigiboard')
61 64
        flash(_('We hope to see you soon!'))
62 65
        redirect(came_from)
63 66

  
vigiboard/controllers/vigiboard_plugin/shn.py
48 48
        # de l'espace occupé par la croix permettant de fermer le dialogue.
49 49
        # Du coup, elle se retrouve superposée au titre de la boîte.
50 50
        tmpl_context.shndialog = JQueryUIDialog(id='SHNDialog',
51
                autoOpen=False, title='%s%s' % (_(u'High-Level Service'),
51
                autoOpen=False, title='%s%s' % (_(u'High-Level Services'),
52 52
                ' ' * 10))
53 53
        context.append([tmpl_context.shndialog, self.object_name])
54 54

  
vigiboard/model/__init__.py
13 13
from vigilo.models import Version, PerfDataSource, Group
14 14
from vigilo.models import Host, HostGroup
15 15
from vigilo.models import Service, ServiceGroup, HighLevelService
16
from vigilo.models import Access
16 17

  
vigiboard/websetup.py
7 7
from tg import config
8 8

  
9 9
from vigiboard.config.environment import load_environment
10
from vigilo.turbogears import populate_db
10 11

  
11 12
__all__ = ['setup_app']
12 13

  
......
16 17
def setup_app(command, conf, variables):
17 18
    """Place any commands to setup vigiboard here"""
18 19
    load_environment(conf.global_conf, conf.local_conf)
20
    populate_db()
19 21

  
20
    # Load the models
21
    from vigiboard import model
22

  
23
    # Create tables
24
    print "Creating tables"
25
    model.metadata.create_all()
26

  
27
    # Create a test used called "manager".
28
    manager = model.User()
29
    manager.user_name = u'manager'
30
    manager.email = u'manager@somedomain.com'
31
    model.DBSession.add(manager)
32

  
33
    # Create a test group called "managers"
34
    # and add "manager" to that group.
35
    group = model.UserGroup()
36
    group.group_name = u'managers'
37
    group.users.append(manager)
38
    model.DBSession.add(group)
39

  
40
    # Create a test permission called "manage"
41
    # and give it to the group of "managers".
42
    permission = model.Permission()
43
    permission.permission_name = u'manage'
44
    permission.usergroups.append(group)
45
    model.DBSession.add(permission)
46

  
47
    # Create a test user called "editor".
48
    editor = model.User()
49
    editor.user_name = u'editor'
50
    editor.email = u'editor@somedomain.com'
51
    model.DBSession.add(editor)
52

  
53
    # Create a test group called "editors"
54
    # and add "editor" to that group.
55
    group = model.UserGroup()
56
    group.group_name = u'editors'
57
    group.users.append(editor)
58
    model.DBSession.add(group)
59

  
60
    # Create a test permission called "edit"
61
    # and give it to the group of "editors".
62
    permission = model.Permission()
63
    permission.permission_name = u'edit'
64
    permission.usergroups.append(group)
65
    model.DBSession.add(permission)
66

  
67
    version = model.Version()
68
    version.name = u'vigiboard'
69
    version.version = config['vigiboard_version']
70
    model.DBSession.add(version)
71

  
72
    model.DBSession.flush()
73
    transaction.commit()
74
    print "Successfully setup"

Also available in: Unified diff