vigiboard / vigiboard / config / middleware.py @ 57f7cb3f
History | View | Annotate | Download (2.36 KB)
1 | 57f7cb3f | Gabriel DE PERTHUIS | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | # vim:set expandtab tabstop=4 shiftwidth=4:
|
||
3 | |||
4 | """WSGI middleware initialization for the vigiboard application."""
|
||
5 | from vigiboard.config.app_cfg import base_config |
||
6 | from vigiboard.config.environment import load_environment |
||
7 | from vigiboard.config.vigiboard_conf import vigiboard_config |
||
8 | from paste.cascade import Cascade |
||
9 | from paste.urlparser import StaticURLParser |
||
10 | |||
11 | __all__ = ['make_app']
|
||
12 | |||
13 | # Use base_config to setup the necessary PasteDeploy application factory.
|
||
14 | # make_base_app will wrap the TG2 app with all the middleware it needs.
|
||
15 | make_base_app = base_config.setup_tg_wsgi_app(load_environment) |
||
16 | |||
17 | |||
18 | def make_app(global_conf, full_stack=True, **app_conf): |
||
19 | """
|
||
20 | Set vigiboard up with the settings found in the PasteDeploy configuration
|
||
21 | file used.
|
||
22 |
|
||
23 | :param global_conf: The global settings for vigiboard (those
|
||
24 | defined under the ``[DEFAULT]`` section).
|
||
25 | :type global_conf: dict
|
||
26 | :param full_stack: Should the whole TG2 stack be set up?
|
||
27 | :type full_stack: str or bool
|
||
28 | :return: The vigiboard application with all the relevant middleware
|
||
29 | loaded.
|
||
30 |
|
||
31 | This is the PasteDeploy factory for the vigiboard application.
|
||
32 |
|
||
33 | ``app_conf`` contains all the application-specific settings (those defined
|
||
34 | under ``[app:main]``.
|
||
35 |
|
||
36 |
|
||
37 | """
|
||
38 | # Petit hack permettant d'importer la configuration de vigiboard
|
||
39 | try:
|
||
40 | # chargement de l'application
|
||
41 | |||
42 | myapp = __import__(app_conf['appname'] ,globals(), locals(), [],-1) |
||
43 | base_config.package = myapp |
||
44 | |||
45 | # chargement de la conf de l'application
|
||
46 | myconf = __import__(
|
||
47 | app_conf['appname'] + '.config.' + app_conf['appname'] ,globals(), locals(), [app_conf['appname'] + '_config'],-1) |
||
48 | myconf = getattr(myconf,app_conf['appname'] + '_config') |
||
49 | for conf in myconf: |
||
50 | app_conf[conf] = myconf[conf] |
||
51 | except:
|
||
52 | print "vigilo-core runing without application" |
||
53 | |||
54 | for i in vigiboard_config: |
||
55 | app_conf[i] = vigiboard_config[i] |
||
56 | |||
57 | # on cré l'application de base
|
||
58 | app = make_base_app(global_conf, full_stack=True, **app_conf)
|
||
59 | |||
60 | # on rajoute le path public de l'application
|
||
61 | import vigiboard |
||
62 | app = Cascade([ |
||
63 | StaticURLParser(global_conf['here'] + '/' + app_conf['appname'] + '/public'), |
||
64 | StaticURLParser(vigiboard.__file__.rsplit('/',1)[0] + '/public'),app] |
||
65 | ) |
||
66 | |||
67 | return app |