Commit | Line | Data |
---|---|---|
8545dd50 WKG |
1 | # GNU MediaGoblin -- federated, autonomous media hosting |
2 | # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS. | |
3 | # | |
4 | # This program is free software: you can redistribute it and/or modify | |
5 | # it under the terms of the GNU Affero General Public License as published by | |
6 | # the Free Software Foundation, either version 3 of the License, or | |
7 | # (at your option) any later version. | |
8 | # | |
9 | # This program is distributed in the hope that it will be useful, | |
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 | # GNU Affero General Public License for more details. | |
13 | # | |
14 | # You should have received a copy of the GNU Affero General Public License | |
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
16 | ||
17 | ||
54b42ee5 WKG |
18 | import logging |
19 | import os | |
20 | ||
21 | import jinja2 | |
54b42ee5 WKG |
22 | |
23 | from mediagoblin.tools import pluginapi | |
24 | from mediagoblin.tools.response import render_to_response | |
25 | ||
26 | ||
27 | PLUGIN_DIR = os.path.dirname(__file__) | |
28 | ||
29 | ||
30 | _log = logging.getLogger(__name__) | |
31 | ||
32 | ||
33 | @jinja2.contextfunction | |
34 | def print_context(c): | |
35 | s = [] | |
36 | for key, val in c.items(): | |
37 | s.append('%s: %s' % (key, repr(val))) | |
38 | return '\n'.join(s) | |
39 | ||
40 | ||
41 | def flatpage_handler_builder(template): | |
42 | """Flatpage view generator | |
43 | ||
44 | Given a template, generates the controller function for handling that | |
45 | route. | |
46 | ||
47 | """ | |
48 | def _flatpage_handler_builder(request): | |
49 | return render_to_response( | |
50 | request, 'flatpagesfile/%s' % template, | |
51 | {'request': request}) | |
52 | return _flatpage_handler_builder | |
53 | ||
54 | ||
05e007c1 WKG |
55 | def setup_plugin(): |
56 | config = pluginapi.get_config('mediagoblin.plugins.flatpagesfile') | |
57 | ||
58 | _log.info('Setting up flatpagesfile....') | |
59 | ||
60 | # Register the template path. | |
61 | pluginapi.register_template_path(os.path.join(PLUGIN_DIR, 'templates')) | |
54b42ee5 | 62 | |
05e007c1 | 63 | pages = config.items() |
54b42ee5 | 64 | |
05e007c1 WKG |
65 | routes = [] |
66 | for name, (url, template) in pages: | |
67 | name = 'flatpagesfile.%s' % name.strip() | |
68 | controller = flatpage_handler_builder(template) | |
69 | routes.append( | |
5b60ec41 | 70 | (name, url, controller)) |
54b42ee5 | 71 | |
05e007c1 WKG |
72 | pluginapi.register_routes(routes) |
73 | _log.info('Done setting up flatpagesfile!') | |
54b42ee5 | 74 | |
54b42ee5 | 75 | |
05e007c1 WKG |
76 | hooks = { |
77 | 'setup': setup_plugin | |
78 | } |