annotate MoinMoin/app.py @ 2931:a6bb853c740b

fix logon with openid 2.0, fixes #345
author RogerHaase <haaserd@gmail.com>
date Tue, 21 Apr 2015 15:22:02 -0700
parents da84a2c42a92
children 4ab27780d078
rev   line source
26
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
1 # Copyright: 2000-2006 by Juergen Hermann <jh@web.de>
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
2 # Copyright: 2002-2011 MoinMoin:ThomasWaldmann
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
3 # Copyright: 2008 MoinMoin:FlorianKrupicka
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
4 # Copyright: 2010 MoinMoin:DiogenesAugusto
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
5 # License: GNU GPL v2 (or any later version), see LICENSE.txt for details.
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
6
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
7 """
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
8 MoinMoin - wsgi application setup and related code
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
9
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
10 Use create_app(config) to create the WSGI application (using Flask).
26
4cd8edde9e94 automatically transform module docstrings, moving legal stuff to comments
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 24
diff changeset
11 """
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
12
134
901bd4e1861e import absolute_import, division from __future__ in every module
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 109
diff changeset
13 from __future__ import absolute_import, division
901bd4e1861e import absolute_import, division from __future__ in every module
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 109
diff changeset
14
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
15 # do this early, but not in MoinMoin/__init__.py because we need to be able to
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
16 # "import MoinMoin" from setup.py even before flask, werkzeug, ... is installed.
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
17 from MoinMoin.util import monkeypatch
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
18
109
e4c332436733 remove flask monkeypatch, use 'from flask import g as flaskg'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 83
diff changeset
19 from flask import Flask, request, session
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
20 from flask import current_app as app
109
e4c332436733 remove flask monkeypatch, use 'from flask import g as flaskg'
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 83
diff changeset
21 from flask import g as flaskg
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
22
2931
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
23 # workaround Flask 0.10. incompatibility with openid - see #345, #515
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
24 try:
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
25 from flask_oldsessions import OldSecureCookieSessionInterface
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
26 except ImportError:
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
27 OldSecureCookieSessionInterface = None
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
28
1767
54be46b8a0b4 flask ext import change
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 1397
diff changeset
29 from flask.ext.cache import Cache
54be46b8a0b4 flask ext import change
Reimar Bauer <rb.proj AT googlemail DOT com>
parents: 1397
diff changeset
30 from flask.ext.themes import setup_themes
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
31
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
32 from jinja2 import ChoiceLoader, FileSystemLoader
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
33
1992
d06e56e20b91 use more constants: ANON for anonymous
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1983
diff changeset
34 from MoinMoin.constants.misc import ANON
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
35 from MoinMoin.i18n import i18n_init
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
36 from MoinMoin.i18n import _, L_, N_
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
37 from MoinMoin.themes import setup_jinja_env, themed_error
2925
da84a2c42a92 fix #492 pep8 1.6.2 breaks 83 additional tests
RogerHaase <haaserd@gmail.com>
parents: 2570
diff changeset
38 from MoinMoin.util.clock import Clock
da84a2c42a92 fix #492 pep8 1.6.2 breaks 83 additional tests
RogerHaase <haaserd@gmail.com>
parents: 2570
diff changeset
39 from MoinMoin.storage.middleware import protecting, indexing, routing
da84a2c42a92 fix #492 pep8 1.6.2 breaks 83 additional tests
RogerHaase <haaserd@gmail.com>
parents: 2570
diff changeset
40 from MoinMoin import auth, config, user
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
41
2925
da84a2c42a92 fix #492 pep8 1.6.2 breaks 83 additional tests
RogerHaase <haaserd@gmail.com>
parents: 2570
diff changeset
42 from MoinMoin import log
da84a2c42a92 fix #492 pep8 1.6.2 breaks 83 additional tests
RogerHaase <haaserd@gmail.com>
parents: 2570
diff changeset
43 logging = log.getLogger(__name__)
287
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
44
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
45
854
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
46 def create_app(config=None, create_index=False, create_storage=False):
287
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
47 """
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
48 simple wrapper around create_app_ext() for flask-script
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
49 """
854
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
50 return create_app_ext(flask_config_file=config,
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
51 create_index=create_index,
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
52 create_storage=create_storage)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
53
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
54
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
55 def create_app_ext(flask_config_file=None, flask_config_dict=None,
2011
791bdedb0c20 fix lots of pep8 issues, mainly E12x
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1992
diff changeset
56 moin_config_class=None, warn_default=True, **kwargs):
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
57 """
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
58 Factory for moin wsgi apps
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
59
38
1d8e9b1153d6 docstrings: convert epydoc fields to rst/sphinx fields
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 36
diff changeset
60 :param flask_config_file: a flask config file name (may have a MOINCFG class),
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
61 if not given, a config pointed to by MOINCFG env var
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
62 will be loaded (if possible).
38
1d8e9b1153d6 docstrings: convert epydoc fields to rst/sphinx fields
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 36
diff changeset
63 :param flask_config_dict: a dict used to update flask config (applied after
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
64 flask_config_file was loaded [if given])
38
1d8e9b1153d6 docstrings: convert epydoc fields to rst/sphinx fields
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 36
diff changeset
65 :param moin_config_class: if you give this, it'll be instantiated as app.cfg,
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
66 otherwise it'll use MOINCFG from flask config. If that
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
67 also is not there, it'll use the DefaultConfig built
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
68 into MoinMoin.
38
1d8e9b1153d6 docstrings: convert epydoc fields to rst/sphinx fields
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 36
diff changeset
69 :param warn_default: emit a warning if moin falls back to its builtin default
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
70 config (maybe user forgot to specify MOINCFG?)
50
8102f92d21b8 docstrings: fix some rst markup warnings of sphinx
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 38
diff changeset
71 :param kwargs: if you give additional keyword args, the keys/values will get patched
8102f92d21b8 docstrings: fix some rst markup warnings of sphinx
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 38
diff changeset
72 into the moin configuration class (before its instance is created)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
73 """
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
74 clock = Clock()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
75 clock.start('create_app total')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
76 app = Flask('MoinMoin')
2931
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
77
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
78 if OldSecureCookieSessionInterface:
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
79 app.session_interface = OldSecureCookieSessionInterface()
a6bb853c740b fix logon with openid 2.0, fixes #345
RogerHaase <haaserd@gmail.com>
parents: 2925
diff changeset
80
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
81 clock.start('create_app load config')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
82 if flask_config_file:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
83 app.config.from_pyfile(flask_config_file)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
84 else:
83
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
85 if not app.config.from_envvar('MOINCFG', silent=True):
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
86 # no MOINCFG env variable set, try stuff in cwd:
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
87 from os import path
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
88 flask_config_file = path.abspath('wikiconfig_local.py')
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
89 if not path.exists(flask_config_file):
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
90 flask_config_file = path.abspath('wikiconfig.py')
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
91 if not path.exists(flask_config_file):
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
92 flask_config_file = None
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
93 if flask_config_file:
8a5be4814a48 use console_script entry point - setup.py now installs a "moin" script for the platform
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 50
diff changeset
94 app.config.from_pyfile(flask_config_file)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
95 if flask_config_dict:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
96 app.config.update(flask_config_dict)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
97 Config = moin_config_class
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
98 if not Config:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
99 Config = app.config.get('MOINCFG')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
100 if not Config:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
101 if warn_default:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
102 logging.warning("using builtin default configuration")
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
103 from MoinMoin.config.default import DefaultConfig as Config
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
104 for key, value in kwargs.iteritems():
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
105 setattr(Config, key, value)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
106 if Config.secrets is None:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
107 # reuse the secret configured for flask (which is required for sessions)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
108 Config.secrets = app.config.get('SECRET_KEY')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
109 app.cfg = Config()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
110 clock.stop('create_app load config')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
111 clock.start('create_app register')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
112 # register converters
1899
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
113 from werkzeug.routing import BaseConverter
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
114
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
115 class ItemNameConverter(BaseConverter):
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
116 """Like the default :class:`UnicodeConverter`, but it also matches
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
117 slashes (except at the beginning AND end).
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
118 This is useful for wikis and similar applications::
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
119
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
120 Rule('/<itemname:wikipage>')
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
121 Rule('/<itemname:wikipage>/edit')
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
122 """
1919
20867923566a fix ItemNameConverter regex, fixes #316
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1899
diff changeset
123 regex = '[^/]+?(/[^/]+?)*'
1899
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
124 weight = 200
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
125
f38a893334b5 new ItemNameConverter that does not match trailing slashes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1780
diff changeset
126 app.url_map.converters['itemname'] = ItemNameConverter
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
127 # register modules, before/after request functions
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
128 from MoinMoin.apps.frontend import frontend
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
129 frontend.before_request(before_wiki)
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
130 frontend.teardown_request(teardown_wiki)
266
7a6b116afa20 upgrade to flask 0.7.1 (not compatible to older flasks)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 180
diff changeset
131 app.register_blueprint(frontend)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
132 from MoinMoin.apps.admin import admin
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
133 admin.before_request(before_wiki)
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
134 admin.teardown_request(teardown_wiki)
266
7a6b116afa20 upgrade to flask 0.7.1 (not compatible to older flasks)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 180
diff changeset
135 app.register_blueprint(admin, url_prefix='/+admin')
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
136 from MoinMoin.apps.feed import feed
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
137 feed.before_request(before_wiki)
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
138 feed.teardown_request(teardown_wiki)
266
7a6b116afa20 upgrade to flask 0.7.1 (not compatible to older flasks)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 180
diff changeset
139 app.register_blueprint(feed, url_prefix='/+feed')
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
140 from MoinMoin.apps.misc import misc
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
141 misc.before_request(before_wiki)
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
142 misc.teardown_request(teardown_wiki)
266
7a6b116afa20 upgrade to flask 0.7.1 (not compatible to older flasks)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 180
diff changeset
143 app.register_blueprint(misc, url_prefix='/+misc')
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
144 from MoinMoin.apps.serve import serve
266
7a6b116afa20 upgrade to flask 0.7.1 (not compatible to older flasks)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 180
diff changeset
145 app.register_blueprint(serve, url_prefix='/+serve')
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
146 clock.stop('create_app register')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
147 clock.start('create_app flask-cache')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
148 cache = Cache()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
149 cache.init_app(app)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
150 app.cache = cache
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
151 clock.stop('create_app flask-cache')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
152 # init storage
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
153 clock.start('create_app init backends')
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
154 init_backends(app)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
155 clock.stop('create_app init backends')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
156 clock.start('create_app flask-babel')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
157 i18n_init(app)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
158 clock.stop('create_app flask-babel')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
159 # configure templates
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
160 clock.start('create_app flask-themes')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
161 setup_themes(app)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
162 if app.cfg.template_dirs:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
163 app.jinja_env.loader = ChoiceLoader([
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
164 FileSystemLoader(app.cfg.template_dirs),
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
165 app.jinja_env.loader,
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
166 ])
266
7a6b116afa20 upgrade to flask 0.7.1 (not compatible to older flasks)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 180
diff changeset
167 app.register_error_handler(403, themed_error)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
168 clock.stop('create_app flask-themes')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
169 clock.stop('create_app total')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
170 del clock
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
171 return app
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
172
950
57ac61f78053 MoinMoin.app: remove unneeded imports, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 913
diff changeset
173
177
9cc75ad9d6d1 infrastructure to shutdown / close resources of the app, storage, etc.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 135
diff changeset
174 def destroy_app(app):
9cc75ad9d6d1 infrastructure to shutdown / close resources of the app, storage, etc.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 135
diff changeset
175 deinit_backends(app)
9cc75ad9d6d1 infrastructure to shutdown / close resources of the app, storage, etc.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 135
diff changeset
176
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
177
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
178 def init_backends(app):
287
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
179 """
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
180 initialize the backends
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
181 """
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
182 # A ns_mapping consists of several lines, where each line is made up like this:
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
183 # mountpoint, unprotected backend
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
184 # Just initialize with unprotected backends.
1037
1aa200340d17 New routing middleware based on namespaces, details see below.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 975
diff changeset
185 app.router = routing.Backend(app.cfg.namespace_mapping, app.cfg.backend_mapping)
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
186 if app.cfg.create_storage:
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
187 app.router.create()
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
188 app.router.open()
1780
4a054063fbb0 make whoosh storage type and params configurable, updated docs
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1767
diff changeset
189 app.storage = indexing.IndexingMiddleware(app.cfg.index_storage, app.router,
862
e1a68b3721cc use the right tokenizers/analyzers in the schema, use name_exact for 1:1 matching
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 854
diff changeset
190 wiki_name=app.cfg.interwikiname,
e1a68b3721cc use the right tokenizers/analyzers in the schema, use name_exact for 1:1 matching
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 854
diff changeset
191 acl_rights_contents=app.cfg.acl_rights_contents)
854
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
192 if app.cfg.create_index:
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
193 app.storage.create()
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
194 app.storage.open()
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
195
950
57ac61f78053 MoinMoin.app: remove unneeded imports, cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 913
diff changeset
196
177
9cc75ad9d6d1 infrastructure to shutdown / close resources of the app, storage, etc.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 135
diff changeset
197 def deinit_backends(app):
9cc75ad9d6d1 infrastructure to shutdown / close resources of the app, storage, etc.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 135
diff changeset
198 app.storage.close()
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
199 app.router.close()
854
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
200 if app.cfg.destroy_index:
c9a78e5a58c4 fix script startup deadlock, add script params to create storage and index, fix fs store
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 852
diff changeset
201 app.storage.destroy()
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
202 if app.cfg.destroy_storage:
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
203 app.router.destroy()
177
9cc75ad9d6d1 infrastructure to shutdown / close resources of the app, storage, etc.
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 135
diff changeset
204
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
205
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
206 def setup_user():
287
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
207 """
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
208 Try to retrieve a valid user object from the request, be it
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
209 either through the session or through a login.
a4461b58fba3 app: cosmetic changes
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 267
diff changeset
210 """
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
211 # init some stuff for auth processing:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
212 flaskg._login_multistage = None
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
213 flaskg._login_multistage_name = None
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
214 flaskg._login_messages = []
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
215
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
216 # first try setting up from session
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
217 userobj = auth.setup_from_session()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
218
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
219 # then handle login/logout forms
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
220 form = request.values.to_dict()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
221 if 'login_submit' in form:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
222 # this is a real form, submitted by POST
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
223 userobj = auth.handle_login(userobj, **form)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
224 elif 'logout_submit' in form:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
225 # currently just a GET link
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
226 userobj = auth.handle_logout(userobj)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
227 else:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
228 userobj = auth.handle_request(userobj)
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
229
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
230 # if we still have no user obj, create a dummy:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
231 if not userobj:
1992
d06e56e20b91 use more constants: ANON for anonymous
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1983
diff changeset
232 userobj = user.User(name=ANON, auth_method='invalid')
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
233 # if we have a valid user we store it in the session
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
234 if userobj.valid:
889
4cac830aca1e user obj: use .itemid consistently
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 862
diff changeset
235 session['user.itemid'] = userobj.itemid
1277
f0d1cbe58e53 refactored "trusted" user handling
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 1274
diff changeset
236 session['user.trusted'] = userobj.trusted
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
237 session['user.auth_method'] = userobj.auth_method
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
238 session['user.auth_attribs'] = userobj.auth_attribs
1339
8109d2d763d1 Fix for #94 password change should invalidate sessions
"Miks Kalnins <MiksKalnins@MaikuMori.com>"
parents: 1277
diff changeset
239 session['user.session_token'] = userobj.get_session_token()
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
240 return userobj
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
241
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
242
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
243 def before_wiki():
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
244 """
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
245 Setup environment for wiki requests, start timers.
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
246 """
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
247 logging.debug("running before_wiki")
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
248 flaskg.clock = Clock()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
249 flaskg.clock.start('total')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
250 flaskg.clock.start('init')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
251 try:
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
252 flaskg.unprotected_storage = app.storage
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
253
267
e969c9318772 remove HTTPException handler for setup_user that is not needed any more for flask >= 0.7
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 266
diff changeset
254 flaskg.user = setup_user()
852
5ad4ae0b1e09 lots of fixes / adaptions for storage-ng code
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 846
diff changeset
255 flaskg.storage = protecting.ProtectingMiddleware(app.storage, flaskg.user, app.cfg.acl_mapping)
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
256
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
257 flaskg.dicts = app.cfg.dicts()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
258 flaskg.groups = app.cfg.groups()
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
259
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
260 flaskg.content_lang = app.cfg.language_default
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
261 flaskg.current_lang = app.cfg.language_default
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
262
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
263 setup_jinja_env()
2570
89563f058bb2 rework auto-scroll edit textarea, support docbook, minor enhancements
RogerHaase <haaserd@gmail.com>
parents: 2011
diff changeset
264
89563f058bb2 rework auto-scroll edit textarea, support docbook, minor enhancements
RogerHaase <haaserd@gmail.com>
parents: 2011
diff changeset
265 # request.user_agent == '' if this is pytest
89563f058bb2 rework auto-scroll edit textarea, support docbook, minor enhancements
RogerHaase <haaserd@gmail.com>
parents: 2011
diff changeset
266 flaskg.add_lineno_attr = request.user_agent and flaskg.user.edit_on_doubleclick
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
267 finally:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
268 flaskg.clock.stop('init')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
269
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
270 # if return value is not None, it is the final response
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
271
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
272
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
273 def teardown_wiki(response):
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
274 """
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
275 Teardown environment of wiki requests, stop timers.
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
276 """
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
277 logging.debug("running teardown_wiki")
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
278 try:
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
279 flaskg.clock.stop('total')
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
280 del flaskg.clock
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
281 except AttributeError:
288
e6f585ac9766 use teardown_request (teardown_wiki) instead of after_request (after_wiki), because it is called when an exception happened
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents: 287
diff changeset
282 # can happen if teardown_wiki() is called twice, e.g. by unit tests.
0
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
283 pass
5568cf133caf create moin/2.0 repo, drop all history (see notes below)
Thomas Waldmann <tw AT waldmann-edv DOT de>
parents:
diff changeset
284 return response