Mercurial > hg > bitsyblog
annotate bitsyblog/factory.py @ 133:ce478807848e default tip
py3
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Mon, 28 Dec 2020 21:18:19 +0000 |
parents | e2f7dccbac26 |
children |
rev | line source |
---|---|
103 | 1 """ |
2 factories for bistyblog | |
3 """ | |
4 | |
45 | 5 from bitsyauth import BitsyAuth |
103 | 6 from getpass import getpass |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
7 from paste.httpexceptions import HTTPExceptionHandler |
108 | 8 from .bitsyblog import BitsyBlog, BitsierBlog |
9 | |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
10 |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
11 def get_args(app_conf, app=BitsyBlog): |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
12 """return arguments for bitsyblog and its handlers""" |
70
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
13 |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
14 # accepted configuration keys, e.g. 'bitsyblog.file_dir' |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
15 config = set(app.defaults.keys()) |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
16 key_str = app_conf.get('namespace', 'bitsyblog.') |
70
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
17 bitsyblog_args = {} |
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
18 handler_args = {} |
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
19 for key, value in app_conf.items(): |
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
20 if key.startswith(key_str): |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
21 if key_str: |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
22 key = key.split(key_str, 1)[-1] |
70
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
23 if key in config: |
71 | 24 bitsyblog_args[key] = value |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
25 continue |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
26 |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
27 # handler args |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
28 if '.' in key: |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
29 section, key = key.split('.', 1) |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
30 handler_args.setdefault(section, {})[key] = value |
70
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
31 return bitsyblog_args, handler_args |
52
3ddb2ca12178
allow for multiple template directories
k0s <k0scist@gmail.com>
parents:
50
diff
changeset
|
32 |
103 | 33 |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
34 def factory(global_conf, **app_conf): |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
35 """make bitsyauth app and wrap it in middleware""" |
103 | 36 |
70
f6a6a4b072e7
complete overhaul to allow event handlers
Jeff Hammel <jhammel@mozilla.com>
parents:
59
diff
changeset
|
37 bitsyblog_args, handler_args = get_args(app_conf) |
71 | 38 app = BitsyBlog(bitsyblog_args, handler_args) |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
39 secret = app_conf.get('secret', 'secret') |
103 | 40 return BitsyAuth(HTTPExceptionHandler(app), |
59 | 41 global_conf, |
42 app.passwords, | |
43 app.newuser, | |
103 | 44 'bitsyblog', |
59 | 45 secret) |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
46 |
103 | 47 |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
48 def basebitsierfactory(global_conf, bitsyblog_args, handler_args): |
103 | 49 """make single-user bitsyblog, base function""" |
50 | |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
51 user = bitsyblog_args['user'] # ensure this exists |
71 | 52 app = BitsierBlog(bitsyblog_args, handler_args) |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
53 secret = bitsyblog_args.get('secret', 'secret') |
59 | 54 auth = BitsyAuth(HTTPExceptionHandler(app), |
55 global_conf, | |
56 app.passwords, | |
57 newuser=None, | |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
58 site=bitsyblog_args.get('site', 'bitsyblog'), |
59 | 59 secret=secret) |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
60 if not user in app.users: |
105
67e01fc5e360
STUB: bitsyblog/bitsyblog.py bitsyblog/factory.py bitsyblog/user.py
Jeff Hammel <k0scist@gmail.com>
parents:
104
diff
changeset
|
61 # create a new user |
67e01fc5e360
STUB: bitsyblog/bitsyblog.py bitsyblog/factory.py bitsyblog/user.py
Jeff Hammel <k0scist@gmail.com>
parents:
104
diff
changeset
|
62 # really, should go in CLI or what not |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
63 pw = getpass('Enter password for %s: ' % user) |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
64 app.newuser(user, auth.hash(app.user, pw)) |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
65 return auth |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
66 |
104 | 67 |
80
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
68 def bitsierfactory(global_conf, **app_conf): |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
69 """make single-user bitsyblog""" |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
70 bitsyblog_args, handler_args = get_args(app_conf, BitsierBlog) |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
71 app = basebitsierfactory(global_conf, bitsyblog_args, handler_args) |
51b49bc484ff
partial refactor of factories; really, i dont know what im doing
Jeff Hammel <jhammel@mozilla.com>
parents:
73
diff
changeset
|
72 return app |