# HG changeset patch # User Jeff Hammel # Date 1292392390 28800 # Node ID 51b49bc484ff53a3981f6e175a03fee5cc43fb34 # Parent 4df927b0d847ed7943494f2def108a8ca93e2cb9 partial refactor of factories; really, i dont know what im doing diff -r 4df927b0d847 -r 51b49bc484ff bitsyblog/bitsyblog.py --- a/bitsyblog/bitsyblog.py Sat Oct 23 16:54:36 2010 -0700 +++ b/bitsyblog/bitsyblog.py Tue Dec 14 21:53:10 2010 -0800 @@ -4,8 +4,6 @@ else can claim to be """ -### global variables - ### imports import dateutil.parser @@ -58,7 +56,6 @@ 'post_handlers': '' # post handlers } - cooked_bodies = {} def __init__(self, kw, handler_args): @@ -788,6 +785,13 @@ class BitsierBlog(BitsyBlog): """single user version of bitsyblog""" + defaults = BitsyBlog.defaults.copy() + defaults['user'] = None + + def __init__(self, kw, handler_args): + BitsyBlog.__init__(self, kw, handler_args) + assert self.user, 'BitsierBlog: no user given' + def get(self, request): ### user space diff -r 4df927b0d847 -r 51b49bc484ff bitsyblog/factory.py --- a/bitsyblog/factory.py Sat Oct 23 16:54:36 2010 -0700 +++ b/bitsyblog/factory.py Tue Dec 14 21:53:10 2010 -0800 @@ -3,32 +3,27 @@ from getpass import getpass from paste.httpexceptions import HTTPExceptionHandler -# accepted configuration keys, e.g. 'bitsyblog.file_dir' -config = set(BitsyBlog.defaults.keys()) -# config = set(['file_dir', -# 'date_format', -# 'subject', -# 'n_links', -# 'help_file', -# 'header', -# 'template_directories', -# 'feed_items', -# ]) +def get_args(app_conf, app=BitsyBlog): + """return arguments for bitsyblog and its handlers""" -def get_args(app_conf): - """return arguments for bitsyblog and its handlers""" - key_str = 'bitsyblog.' + # accepted configuration keys, e.g. 'bitsyblog.file_dir' + config = set(app.defaults.keys()) + + key_str = app_conf.get('namespace', '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_str: + key = key.split(key_str, 1)[-1] if key in config: bitsyblog_args[key] = value - else: - if '.' in key: - section, key = key.split('.', 1) - handler_args.setdefault(section, {})[key] = value + continue + + # handler args + 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): @@ -43,21 +38,23 @@ '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 +def basebitsierfactory(global_conf, bitsyblog_args, handler_args): + user = bitsyblog_args['user'] # ensure this exists app = BitsierBlog(bitsyblog_args, handler_args) - app.user = user - secret = app_conf.get('secret', 'secret') + secret = bitsyblog_args.get('secret', 'secret') auth = BitsyAuth(HTTPExceptionHandler(app), global_conf, app.passwords, newuser=None, - site=app_conf.get('site', 'bitsyblog'), + site=bitsyblog_args.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 + +def bitsierfactory(global_conf, **app_conf): + """make single-user bitsyblog""" + bitsyblog_args, handler_args = get_args(app_conf, BitsierBlog) + app = basebitsierfactory(global_conf, bitsyblog_args, handler_args) + return app