Revision 10848680
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
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