diff options
author | Will Kahn-Greene <willg@bluesock.org> | 2012-06-10 14:51:13 -0400 |
---|---|---|
committer | Will Kahn-Greene <willg@bluesock.org> | 2012-07-16 09:26:28 -0400 |
commit | 4bd65f69c710268404e1b1fdaac68db069558584 (patch) | |
tree | e812e6473a2a5b8011e657a1c2f8b6701cc1ab43 /mediagoblin/plugins/flatpagesfile/main.py | |
parent | 8545dd50f0cd588d505c217d367450198199a2b0 (diff) | |
download | mediagoblin-4bd65f69c710268404e1b1fdaac68db069558584.tar.lz mediagoblin-4bd65f69c710268404e1b1fdaac68db069558584.tar.xz mediagoblin-4bd65f69c710268404e1b1fdaac68db069558584.zip |
Finish flatpagesplugin; add plugin docs
Diffstat (limited to 'mediagoblin/plugins/flatpagesfile/main.py')
-rw-r--r-- | mediagoblin/plugins/flatpagesfile/main.py | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/mediagoblin/plugins/flatpagesfile/main.py b/mediagoblin/plugins/flatpagesfile/main.py index b73f9b90..b0f5ea42 100644 --- a/mediagoblin/plugins/flatpagesfile/main.py +++ b/mediagoblin/plugins/flatpagesfile/main.py @@ -17,7 +17,10 @@ import logging import os +from routes.route import Route + from mediagoblin.tools import pluginapi +from mediagoblin.tools.response import render_to_response PLUGIN_DIR = os.path.dirname(__file__) @@ -26,16 +29,45 @@ PLUGIN_DIR = os.path.dirname(__file__) _log = logging.getLogger(__name__) -class FlatpagesPlugin(pluginapi.Plugin): +def flatpage_handler(template): + """Flatpage view generator + + Given a template, generates the controller function for handling that + route. + + """ + def _flatpage_handler(request, *args, **kwargs): + return render_to_response( + request, 'flatpagesfile/%s' % template, + {'args': args, 'kwargs': kwargs}) + return _flatpage_handler + + +class FlatpagesFilePlugin(pluginapi.Plugin): """ This is the flatpages plugin class. See the README for how to use flatpages. """ - def __init__(self): - self._setup_plugin_called = 0 - def setup_plugin(self): self.config = pluginapi.get_config('mediagoblin.plugins.flatpagesfile') - _log.info('Setting up flatpages....') + _log.info('Setting up flatpagesfile....') + + # Register the template path. pluginapi.register_template_path(os.path.join(PLUGIN_DIR, 'templates')) + + # Set up and register routes. + pages = [(int(key.replace('page', '')), val) + for key, val in self.config.items() + if key.startswith('page')] + + pages = [mapping for index, mapping in sorted(pages)] + routes = [] + for name, url, template in pages: + name = 'flatpagesfile.%s' % name.strip() + controller = flatpage_handler(template) + routes.append( + Route(name, url, controller=controller)) + + pluginapi.register_routes(routes) + _log.info('Done setting up flatpagesfile!') |