本文整理汇总了Python中tiddlyweb.model.collections.Tiddlers.link方法的典型用法代码示例。如果您正苦于以下问题:Python Tiddlers.link方法的具体用法?Python Tiddlers.link怎么用?Python Tiddlers.link使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tiddlyweb.model.collections.Tiddlers
的用法示例。
在下文中一共展示了Tiddlers.link方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_tiddlers
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def get_tiddlers(environ, start_response):
"""
Get a list representation of the tiddlers in a
bag. The information sent is dependent on the
serialization chosen.
"""
store = environ['tiddlyweb.store']
filters = environ['tiddlyweb.filters']
bag_name = web.get_route_value(environ, 'bag_name')
bag = _get_bag(environ, bag_name)
title = 'Tiddlers From Bag %s' % bag.name
title = environ['tiddlyweb.query'].get('title', [title])[0]
usersign = environ['tiddlyweb.usersign']
# will raise exception if there are problems
bag.policy.allows(usersign, 'read')
tiddlers = Tiddlers(title=title)
if not filters:
tiddlers.store = store
tiddlers.bag = bag_name
for tiddler in store.list_bag_tiddlers(bag):
tiddlers.add(tiddler)
tiddlers.link = '%s/tiddlers' % web.bag_url(environ, bag, full=False)
return send_tiddlers(environ, start_response, tiddlers=tiddlers)
示例2: _send_tiddler_revisions
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def _send_tiddler_revisions(environ, start_response, tiddler):
"""
Push the list of tiddler revisions out the network.
"""
store = environ['tiddlyweb.store']
title = 'Revisions of Tiddler %s' % tiddler.title
title = environ['tiddlyweb.query'].get('title', [title])[0]
container = 'recipes' if tiddler.recipe else 'bags'
if environ['tiddlyweb.filters']:
tiddlers = Tiddlers(title=title)
else:
tiddlers = Tiddlers(title=title, store=store)
tiddlers.is_revisions = True
tiddlers.link = '%s/revisions' % web.tiddler_url(environ, tiddler,
container=container, full=False)
recipe = tiddler.recipe
try:
for revision in store.list_tiddler_revisions(tiddler):
tmp_tiddler = Tiddler(title=tiddler.title, bag=tiddler.bag)
tmp_tiddler.revision = revision
if recipe:
tmp_tiddler.recipe = recipe
tiddlers.add(tmp_tiddler)
except NoTiddlerError, exc:
# If a tiddler is not present in the store.
raise HTTP404('tiddler %s not found, %s' % (tiddler.title, exc))
示例3: send_tiddlers
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def send_tiddlers(environ, start_response, tiddlers=None):
"""
Output the tiddlers contained in the provided
Tiddlers collection in a Negotiated representation.
Often, but not always, a wiki.
"""
last_modified = None
etag = None
download = environ['tiddlyweb.query'].get('download', [None])[0]
filters = environ['tiddlyweb.filters']
store = environ['tiddlyweb.store']
if tiddlers.store is None and not filters:
logging.warn('Incoming tiddlers no store set %s', inspect.stack()[1])
if filters:
candidate_tiddlers = Tiddlers(store=store)
try:
candidate_tiddlers.title = tiddlers.title
candidate_tiddlers.link = tiddlers.link
candidate_tiddlers.is_search = tiddlers.is_search
candidate_tiddlers.is_revisions = tiddlers.is_revisions
except AttributeError:
pass
try:
for tiddler in recursive_filter(filters, tiddlers):
candidate_tiddlers.add(tiddler)
except FilterError, exc:
raise HTTP400('malformed filter: %s' % exc)
示例4: list_tiddlers
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def list_tiddlers(self, tiddlers):
"""
Turn the contents of a Tiddlers into an Atom Feed.
"""
authors = set()
try:
from tiddlyweb.model.collections import Tiddlers
config = self.environ['tiddlyweb.config']
default_filter = config['atom.default_filter']
filters, _ = parse_for_filters(default_filter, self.environ)
new_tiddlers = Tiddlers()
new_tiddlers.is_search = tiddlers.is_search
new_tiddlers.is_revisions = tiddlers.is_revisions
new_tiddlers.bag = tiddlers.bag
new_tiddlers.recipe = tiddlers.recipe
new_tiddlers.link = tiddlers.link
for tiddler in recursive_filter(filters, tiddlers):
new_tiddlers.add(tiddler)
authors.add(tiddler.modifier)
new_tiddlers.title = tiddlers.title
new_tiddlers.is_search = tiddlers.is_search
new_tiddlers.is_revisions = tiddlers.is_revisions
tiddlers = new_tiddlers
except (KeyError, ImportError):
pass
author_name = None
author_link = None
author_avatar = None
if len(authors) == 1:
author_name = authors.pop()
author_link = self._get_author_link(author_name)
author_avatar = self._get_author_avatar(author_name)
hub = self.environ.get('tiddlyweb.config', {}).get('atom.hub', None)
if tiddlers.link:
link = tiddlers.link
else:
link = self._current_url()
if not link.startswith('http'):
link = u'%s%s' % (self._host_url(), link)
feed = AtomFeed(link=link,
language=u'en',
hub=hub,
author_name=author_name,
author_link=author_link,
author_avatar=author_avatar,
title=tiddlers.title,
description=tiddlers.title)
for tiddler in tiddlers:
self._add_tiddler_to_feed(feed, tiddler)
# can we avoid sending utf-8 and let the wrapper handle it?
return feed.writeString('utf-8')
示例5: get_tiddlers
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def get_tiddlers(environ, start_response):
"""
Handle ``GET`` on a tiddlers-within-a-recipe URI.
Get a list representation of the :py:class:`tiddlers
<tiddlyweb.model.tiddler.Tiddler>` generated from a :py:class:`recipe
<tiddlyweb.model.recipe.Recipe>`.
The information sent is dependent on the serialization chosen
via :py:mod:`tiddlyweb.web.negotiate`.
"""
usersign = environ['tiddlyweb.usersign']
store = environ['tiddlyweb.store']
filters = environ['tiddlyweb.filters']
recipe = _determine_recipe(environ)
title = 'Tiddlers From Recipe %s' % recipe.name
title = environ['tiddlyweb.query'].get('title', [title])[0]
# check the recipe can be read
recipe.policy.allows(usersign, 'read')
# check the bags in the recipe can be read
try:
template = control.recipe_template(environ)
for bag_name, _ in recipe.get_recipe(template):
bag = Bag(bag_name)
bag = store.get(bag)
bag.policy.allows(usersign, 'read')
except NoBagError as exc:
raise HTTP404('recipe %s lists an unknown bag: %s' %
(recipe.name, exc))
# from this point forward we know the tiddlers are
# readable
# get the tiddlers from the recipe and uniquify them
try:
candidate_tiddlers = control.get_tiddlers_from_recipe(recipe, environ)
except NoBagError as exc:
raise HTTP404('recipe %s lists an unknown bag: %s' %
(recipe.name, exc))
except FilterError as exc:
raise HTTP400('malformed filter: %s' % exc)
tiddlers = Tiddlers(title=title)
if not filters:
tiddlers.store = store
tiddlers.recipe = recipe.name
for tiddler in candidate_tiddlers:
tiddler.recipe = recipe.name
tiddlers.add(tiddler)
tiddlers.link = '%s/tiddlers' % web.recipe_url(environ, recipe,
full=False)
return send_tiddlers(environ, start_response, tiddlers=tiddlers)
示例6: tiddler_as
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def tiddler_as(self, tiddler):
"""
Take the single tiddler provided and inject it into
a TiddlyWiki.
"""
tiddlers = Tiddlers(title=tiddler.title, bag=tiddler.bag,
recipe=tiddler.recipe)
tiddlers.add(tiddler)
tiddlers.link = tiddler_url(self.environ, tiddler, full=False)
# Join with '' to return a string not generator.
return ''.join(self._put_tiddlers_in_tiddlywiki(tiddlers))
示例7: _filter_tiddlers
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def _filter_tiddlers(filters, store, tiddlers):
"""
Filter the tiddlers by filters provided by the enviornment.
"""
candidate_tiddlers = Tiddlers(store=store)
try:
candidate_tiddlers.title = tiddlers.title
candidate_tiddlers.link = tiddlers.link
candidate_tiddlers.is_search = tiddlers.is_search
candidate_tiddlers.is_revisions = tiddlers.is_revisions
candidate_tiddlers.bag = tiddlers.bag
candidate_tiddlers.recipe = tiddlers.recipe
except AttributeError:
pass
try:
for tiddler in recursive_filter(filters, tiddlers):
candidate_tiddlers.add(tiddler)
except FilterError, exc:
raise HTTP400('malformed filter: %s' % exc)
示例8: _send_tiddler_revisions
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def _send_tiddler_revisions(environ, start_response, tiddler):
"""
Push the list of tiddler revisions out the network.
"""
store = environ['tiddlyweb.store']
title = 'Revisions of Tiddler %s' % tiddler.title
title = environ['tiddlyweb.query'].get('title', [title])[0]
container = 'recipes' if tiddler.recipe else 'bags'
if environ['tiddlyweb.filters']:
tiddlers = Tiddlers(title=title)
else:
tiddlers = Tiddlers(title=title, store=store)
tiddlers.is_revisions = True
tiddlers.link = '%s/revisions' % tiddler_url(environ, tiddler,
container=container, full=False)
# Set the container on the tiddlers. Since tiddler.recipe
# defaults to None, we're "safe" here.
tiddlers.recipe = tiddler.recipe
tiddlers.bag = tiddler.bag
try:
for revision in store.list_tiddler_revisions(tiddler):
tmp_tiddler = Tiddler(title=tiddler.title, bag=tiddler.bag)
tmp_tiddler.revision = revision
tmp_tiddler.recipe = tiddler.recipe
tiddlers.add(tmp_tiddler)
except NoTiddlerError as exc:
# If a tiddler is not present in the store.
raise HTTP404('tiddler %s not found, %s' % (tiddler.title, exc))
except NoBagError as exc:
raise HTTP404('tiddler %s not found, bag %s does not exist, %s'
% (tiddler.title, tiddler.bag, exc))
except StoreMethodNotImplemented:
raise HTTP400('no revision support')
return send_tiddlers(environ, start_response, tiddlers=tiddlers)
示例9: test_content_type
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def test_content_type():
bag = Bag('holder')
bag = store.get(bag)
tiddlers = Tiddlers(store=store)
# duplicate what the handler would do
tiddlers.link = bag_url({'tiddlyweb.config': config}, bag,
full=False) + '/tiddlers'
for tiddler in store.list_bag_tiddlers(bag):
tiddlers.add(tiddler)
serializer = Serializer('tiddlywebwiki.serialization',
{'tiddlyweb.config': config})
output = ''.join(serializer.list_tiddlers(tiddlers))
# we are expecting an img link to the image tiddler
assert 'server.content-type="image/png"' in output
# but we want just an html anchor link to the zero
assert 'server.content-type="application/octet-stream"' in output
assert 'server.content-type="text/html"' in output
assert ('you may still <a href="/bags/holder/tiddlers">browse' in output)
示例10: get_tiddlers
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
def get_tiddlers(environ, start_response):
"""
Handle ``GET`` on a tiddlers-within-a-bag URI.
Get a list representation of the :py:class:`tiddlers
<tiddlyweb.model.tiddler.Tiddler>` in a :py:class:`bag
<tiddlyweb.model.bag.Bag>`.
The information sent is dependent on the serialization chosen
via :py:mod:`tiddlyweb.web.negotiate`.
"""
store = environ['tiddlyweb.store']
filters = environ['tiddlyweb.filters']
bag_name = web.get_route_value(environ, 'bag_name')
bag = _get_bag(environ, bag_name)
title = 'Tiddlers From Bag %s' % bag.name
title = environ['tiddlyweb.query'].get('title', [title])[0]
usersign = environ['tiddlyweb.usersign']
# will raise exception if there are problems
bag.policy.allows(usersign, 'read')
tiddlers = Tiddlers(title=title)
if not filters:
tiddlers.store = store
tiddlers.bag = bag_name
# A special bag can raise NoBagError here.
try:
for tiddler in store.list_bag_tiddlers(bag):
tiddlers.add(tiddler)
except NoBagError as exc:
raise HTTP404('%s not found, %s' % (bag.name, exc))
tiddlers.link = '%s/tiddlers' % web.bag_url(environ, bag, full=False)
return send_tiddlers(environ, start_response, tiddlers=tiddlers)
示例11: HTTP404
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
except StoreError, exc:
raise HTTP404('No such tiddler: %s:%s, %s' % (host_tiddler.bag,
host_tiddler.title, exc))
links_manager = LinksManager(environ)
try:
links = getattr(links_manager, 'read_%s' % linktype)(host_tiddler)
except AttributeError, exc:
raise HTTP400('invalid links type: %s' % exc)
if filters:
tiddlers = Tiddlers(title=collection_title)
else:
tiddlers = Tiddlers(title=collection_title, store=store)
tiddlers.link = link
# continue over entries in database from previous format
for link in links:
if is_link(link): # external link
continue
else:
container, title = link.split(':', 1)
if not title: # plain space link
continue
elif title:
if container != bag_name:
if container.endswith('_public'):
try:
recipe = Recipe(container)
recipe = store.get(recipe)
示例12: HTTP404
# 需要导入模块: from tiddlyweb.model.collections import Tiddlers [as 别名]
# 或者: from tiddlyweb.model.collections.Tiddlers import link [as 别名]
except NoBagError, exc:
raise HTTP404('recipe %s lists an unknown bag: %s' %
(recipe.name, exc))
except FilterError, exc:
raise HTTP400('malformed filter: %s' % exc)
if filters:
tiddlers = Tiddlers(title=title)
else:
tiddlers = Tiddlers(title=title, store=store)
for tiddler in candidate_tiddlers:
tiddler.recipe = recipe.name
tiddlers.add(tiddler)
tiddlers.link = '%s/tiddlers' % web.recipe_url(environ, recipe,
full=False)
return send_tiddlers(environ, start_response, tiddlers=tiddlers)
def list_recipes(environ, start_response):
"""
Get a list of all recipes the current user can read.
"""
store = environ['tiddlyweb.store']
serialize_type, mime_type = web.get_serialize_type(environ)
serializer = Serializer(serialize_type, environ)
return list_entities(environ, start_response, mime_type,
store.list_recipes, serializer.list_recipes)