Преглед на файлове

convert webdav as plaster pastedeploy app

Guénaël Muller преди 6 години
родител
ревизия
ed1db2f320
променени са 7 файла, в които са добавени 37 реда и са изтрити 10 реда
  1. 9 1
      development.ini.sample
  2. 2 1
      setup.py
  3. 13 1
      tracim/__init__.py
  4. 4 1
      tracim/lib/webdav/__init__.py
  5. 4 1
      tracim/lib/webdav/middlewares.py
  6. 5 4
      wsgi/__init__.py
  7. 0 1
      wsgi/webdav.py

+ 9 - 1
development.ini.sample Целия файл

2
 # app configuration
2
 # app configuration
3
 # https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
3
 # https://docs.pylonsproject.org/projects/pyramid/en/latest/narr/environment.html
4
 ###
4
 ###
5
-[app:main]
5
+[pipeline:main]
6
+pipeline = tracim_web
7
+[app:tracim_web]
6
 use = egg:tracim_backend
8
 use = egg:tracim_backend
7
 
9
 
8
 pyramid.reload_templates = true
10
 pyramid.reload_templates = true
13
 pyramid.includes =
15
 pyramid.includes =
14
     pyramid_debugtoolbar
16
     pyramid_debugtoolbar
15
 
17
 
18
+[pipeline:webdav]
19
+pipeline = tracim_webdav
20
+[app:tracim_webdav]
21
+use = egg:tracim_backend#webdav
22
+
23
+[DEFAULT]
16
 sqlalchemy.url = sqlite:///%(here)s/tracim.sqlite
24
 sqlalchemy.url = sqlite:///%(here)s/tracim.sqlite
17
 
25
 
18
 retry.attempts = 3
26
 retry.attempts = 3

+ 2 - 1
setup.py Целия файл

89
     install_requires=requires,
89
     install_requires=requires,
90
     entry_points={
90
     entry_points={
91
         'paste.app_factory': [
91
         'paste.app_factory': [
92
-            'main = tracim:main',
92
+            'main = tracim:web',
93
+            'webdav = tracim:webdav'
93
         ],
94
         ],
94
         'console_scripts': [
95
         'console_scripts': [
95
             'tracimcli = tracim.command:main',
96
             'tracimcli = tracim.command:main',

+ 13 - 1
tracim/__init__.py Целия файл

13
 from tracim.lib.utils.authentification import BASIC_AUTH_WEBUI_REALM
13
 from tracim.lib.utils.authentification import BASIC_AUTH_WEBUI_REALM
14
 from tracim.lib.utils.authorization import AcceptAllAuthorizationPolicy
14
 from tracim.lib.utils.authorization import AcceptAllAuthorizationPolicy
15
 from tracim.lib.utils.authorization import TRACIM_DEFAULT_PERM
15
 from tracim.lib.utils.authorization import TRACIM_DEFAULT_PERM
16
+from tracim.lib.webdav import WebdavAppFactory
16
 from tracim.views import BASE_API_V2
17
 from tracim.views import BASE_API_V2
17
 from tracim.views.core_api.session_controller import SessionController
18
 from tracim.views.core_api.session_controller import SessionController
18
 from tracim.views.errors import ErrorSchema
19
 from tracim.views.errors import ErrorSchema
19
 from tracim.lib.utils.cors import add_cors_support
20
 from tracim.lib.utils.cors import add_cors_support
20
 
21
 
21
 
22
 
22
-def main(global_config, **settings):
23
+def web(global_config, **local_settings):
23
     """ This function returns a Pyramid WSGI application.
24
     """ This function returns a Pyramid WSGI application.
24
     """
25
     """
26
+    settings = global_config
27
+    settings.update(local_settings)
25
     # set CFG object
28
     # set CFG object
26
     app_config = CFG(settings)
29
     app_config = CFG(settings)
27
     app_config.configure_filedepot()
30
     app_config.configure_filedepot()
64
         'API of Tracim v2',
67
         'API of Tracim v2',
65
     )
68
     )
66
     return configurator.make_wsgi_app()
69
     return configurator.make_wsgi_app()
70
+
71
+
72
+def webdav(global_config, **local_settings):
73
+    settings = global_config
74
+    settings.update(local_settings)
75
+    app_factory = WebdavAppFactory(
76
+        tracim_config_file_path=settings['__file__'],
77
+    )
78
+    return app_factory.get_wsgi_app()

+ 4 - 1
tracim/lib/webdav/__init__.py Целия файл

48
         # Get pyramid Env
48
         # Get pyramid Env
49
         tracim_config_file_path = os.path.abspath(tracim_config_file_path)
49
         tracim_config_file_path = os.path.abspath(tracim_config_file_path)
50
         config['tracim_config'] = tracim_config_file_path
50
         config['tracim_config'] = tracim_config_file_path
51
-        settings = get_appsettings(config['tracim_config'])
51
+        global_conf = get_appsettings(config['tracim_config']).global_conf
52
+        local_conf = get_appsettings(config['tracim_config'], 'tracim_web')
53
+        settings = global_conf
54
+        settings.update(local_conf)
52
         app_config = CFG(settings)
55
         app_config = CFG(settings)
53
 
56
 
54
         default_config_file = os.path.abspath(settings['wsgidav.config_path'])
57
         default_config_file = os.path.abspath(settings['wsgidav.config_path'])

+ 4 - 1
tracim/lib/webdav/middlewares.py Целия файл

256
         super().__init__(application, config)
256
         super().__init__(application, config)
257
         self._application = application
257
         self._application = application
258
         self._config = config
258
         self._config = config
259
-        self.settings = get_appsettings(config['tracim_config'])
259
+        global_conf = get_appsettings(config['tracim_config']).global_conf
260
+        local_conf = get_appsettings(config['tracim_config'], 'tracim_web')
261
+        self.settings = global_conf
262
+        self.settings.update(local_conf)
260
         self.engine = get_engine(self.settings)
263
         self.engine = get_engine(self.settings)
261
         self.session_factory = get_session_factory(self.engine)
264
         self.session_factory = get_session_factory(self.engine)
262
         self.app_config = CFG(self.settings)
265
         self.app_config = CFG(self.settings)

+ 5 - 4
wsgi/__init__.py Целия файл

1
 # coding=utf-8
1
 # coding=utf-8
2
+import plaster
2
 import pyramid.paster
3
 import pyramid.paster
3
 
4
 
4
 from tracim.lib.webdav import WebdavAppFactory
5
 from tracim.lib.webdav import WebdavAppFactory
10
 
11
 
11
 
12
 
12
 def webdav_app(config_uri):
13
 def webdav_app(config_uri):
13
-    app_factory = WebdavAppFactory(
14
-        tracim_config_file_path=config_uri,
15
-    )
16
-    return app_factory.get_wsgi_app()
14
+    config_uri = '{}#webdav'.format(config_uri)
15
+    plaster.setup_logging(config_uri)
16
+    loader = plaster.get_loader(config_uri, protocols=['wsgi'])
17
+    return loader.get_wsgi_app()

+ 0 - 1
wsgi/webdav.py Целия файл

1
 # coding=utf-8
1
 # coding=utf-8
2
 # Runner for uwsgi
2
 # Runner for uwsgi
3
 import os
3
 import os
4
-
5
 from wsgi import webdav_app
4
 from wsgi import webdav_app
6
 
5
 
7
 config_uri = os.environ['TRACIM_CONF_PATH']
6
 config_uri = os.environ['TRACIM_CONF_PATH']