Mercurial > hg > bitsyblog
view bitsyblog/factory.py @ 70:f6a6a4b072e7
complete overhaul to allow event handlers
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Wed, 07 Jul 2010 16:18:19 -0700 |
parents | 0af1f4ae328d |
children | 0c98d1c2c6df |
line wrap: on
line source
from bitsyauth import BitsyAuth from bitsyblog import BitsyBlog, BitsierBlog from getpass import getpass from paste.httpexceptions import HTTPExceptionHandler # accepted configuration keys, e.g. 'bitsyblog.file_dir' config = set(['file_dir', 'date_format', 'subject', 'n_links', 'help_file', 'header', 'template_directories', 'feed_items', ]) def get_args(app_conf): """return arguments for bitsyblog and its handlers""" key_str = 'bitsyblog.' bitsyblog_args = {} handler_args = {} for key, value in app_conf.items(): if key.startswith(key_str): key = key.split(key_str, 1)[-1] if key in config: bitysblog_args[key] = value else: if '.' in key: section, key = key.split('.', 1) handler_args.setdefault(section, {})[key] = value return bitsyblog_args, handler_args def factory(global_conf, **app_conf): """make bitsyauth app and wrap it in middleware""" bitsyblog_args, handler_args = get_args(app_conf) app = BitsyBlog(**args) secret = app_conf.get('secret', 'secret') return BitsyAuth(HTTPExceptionHandler(app), global_conf, app.passwords, app.newuser, 'bitsyblog', secret) def bitsierfactory(global_conf, **app_conf): """make single-user bitsyblog""" bitsyblog_args, handler_args = get_args(app_conf) user = app_conf['bitsyblog.user'] # ensure this exist app = BitsierBlog(**args) app.user = user secret = app_conf.get('secret', 'secret') auth = BitsyAuth(HTTPExceptionHandler(app), global_conf, app.passwords, newuser=None, site=app_conf.get('site', 'bitsyblog'), secret=secret) if not user in app.users: pw = getpass('Enter password for %s: ' % user) app.newuser(user, auth.hash(app.user, pw)) return auth