Changeset 4997
- Timestamp:
- 16/05/08 17:33:13 (2 months ago)
- Files:
-
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/UPGRADE (added)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/test/test_web_tiddler_revisions.py (added)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/bag.py (modified) (1 diff)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/serializers/html.py (modified) (1 diff)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/serializers/json.py (modified) (1 diff)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/serializers/text.py (modified) (1 diff)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/web/tiddler.py (modified) (2 diffs)
- Trunk/contributors/ChrisDent/experimental/TiddlyWeb/urls.map (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/bag.py
r4995 r4997 14 14 15 15 class Bag(dict): 16 """ 17 XXX: We should subclass for tmpbag and revbag. 18 """ 16 19 17 def __init__(self, name, policy=default_policy, tmpbag=False ):20 def __init__(self, name, policy=default_policy, tmpbag=False, revbag=False): 18 21 dict.__init__(self) 19 22 self.name = name 20 23 self.policy = policy 21 24 self.tmpbag = tmpbag 25 self.revbag = revbag 22 26 self.order = [] 23 27 # reference to the store which 'got' us Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/serializers/html.py
r4957 r4997 59 59 lines = [] 60 60 output = '<ul>\n' 61 # XXX we are encoding an absolute url here, which is not such a good thing62 61 for tiddler in bag.list_tiddlers(): 63 line = '<li><a href="/bags/%s/tiddlers/%s">%s</a></li>' % (urllib.quote(tiddler.bag), urllib.quote(tiddler.title), tiddler.title) 62 if bag.revbag: 63 line = '<li><a href="/bags/%s/tiddlers/%s/revisions/%s">%s:%s</a></li>' % (urllib.quote(tiddler.bag), urllib.quote(tiddler.title), tiddler.revision, tiddler.title, tiddler.revision) 64 else: 65 line = '<li><a href="/bags/%s/tiddlers/%s">%s</a></li>' % (urllib.quote(tiddler.bag), urllib.quote(tiddler.title), tiddler.title) 64 66 lines.append(line) 65 67 output += "\n".join(lines) Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/serializers/json.py
r4957 r4997 32 32 """ 33 33 List the tiddlers in a bag as text. 34 We will likely want to expand this someday. 34 35 """ 35 return simplejson.dumps([tiddler.title for tiddler in bag.list_tiddlers()]) 36 if bag.revbag: 37 return simplejson.dumps([(tiddler.title, tiddler.revision) for tiddler in bag.list_tiddlers()]) 38 else: 39 return simplejson.dumps([tiddler.title for tiddler in bag.list_tiddlers()]) 36 40 37 41 def as_bag(bag, input): Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/serializers/text.py
r4109 r4997 52 52 List the tiddlers in a bag as text. 53 53 """ 54 return "\n".join([tiddler.title for tiddler in bag.list_tiddlers()]) 54 if bag.revbag: 55 return "\n".join(["%s:%s" % (tiddler.title, tiddler.revision) for tiddler in bag.list_tiddlers()]) 56 else: 57 return "\n".join([tiddler.title for tiddler in bag.list_tiddlers()]) 55 58 56 59 def as_bag(bag, input): Trunk/contributors/ChrisDent/experimental/TiddlyWeb/tiddlyweb/web/tiddler.py
r4981 r4997 2 2 from tiddlyweb.tiddler import Tiddler 3 3 from tiddlyweb.recipe import Recipe 4 from tiddlyweb.bag import Bag 4 5 from tiddlyweb.store import Store, NoTiddlerError, NoBagError 5 6 from tiddlyweb.serializer import Serializer, TiddlerFormatError … … 17 18 18 19 def _send_tiddler_revisions(environ, start_response, tiddler): 19 content = 'no done' 20 start_response("200 OK", 21 [('Content-Type', mime_type)]) 20 store = environ['tiddlyweb.store'] 22 21 23 return [content] 22 tmp_bag = Bag('tmp', tmpbag=True, revbag=True) 23 for revision in store.list_tiddler_revisions(tiddler): 24 tmp_tiddler = Tiddler(title=tiddler.title, revision=revision, bag=tiddler.bag) 25 try: 26 store.get(tmp_tiddler) 27 except NoTiddlerError, e: 28 raise HTTP404, 'tiddler %s at revision % not found, %s' % (tiddler.title, revision, e) 29 tmp_bag.add_tiddler(tmp_tiddler) 30 31 serialize_type, mime_type = web.get_serialize_type(environ) 32 serializer = Serializer(serialize_type) 33 serializer.object = tmp_bag 34 35 start_response("200 OK", [('Content-Type', mime_type), 36 ('Set-Cookie', 'chkHttpReadOnly=false')]) 37 return [serializer.to_string()] 24 38 25 39 def _send_tiddler(environ, start_response, tiddler): Trunk/contributors/ChrisDent/experimental/TiddlyWeb/urls.map
r4957 r4997 54 54 # text/x-tiddlywiki: this tiddler wrapped up as a TiddlyWiki 55 55 /recipes/{recipe_name:segment}/tiddlers/{tiddler_name:segment} 56 GET tiddlyweb.web.tiddler:get _by_recipe57 PUT tiddlyweb.web.tiddler:put _by_recipe56 GET tiddlyweb.web.tiddler:get 57 PUT tiddlyweb.web.tiddler:put 58 58 59 59 /recipes/{recipe_name:segment}/tiddlers/{tiddler_name:segment}/revisions/{revision:segment} 60 GET tiddlyweb.web.tiddler:get_by_recipe 60 GET tiddlyweb.web.tiddler:get 61 62 /recipes/{recipe_name:segment}/tiddlers/{tiddler_name:segment}/revisions[.{format}] 63 GET tiddlyweb.web.tiddler:get_revisions 61 64 62 65 # list of bags … … 111 114 GET tiddlyweb.web.tiddler:get 112 115 116 /bags/{bag_name:segment}/tiddlers/{tiddler_name:segment}/revisions[.{format}] 117 GET tiddlyweb.web.tiddler:get_revisions 118 119