def list_bags(self, bags): """ Send bags out bags.html template. """ return send_template(self.environ, 'bags.html', { 'bags': bags, 'title': 'Bags'})
def tiddler_as(self, tiddler): """ Transform the provided tiddler into an HTML representation of the tiddler packaged in a DIV. Render the content using the render_wikitext subsystem. Links to the tiddler in the wiki are provided. """ user = self.environ['tiddlyweb.usersign'] store = self.environ['tiddlyweb.store'] if tiddler.recipe: list_link = '/recipes/%s/tiddlers' % encode_name(tiddler.recipe) list_title = 'Tiddlers in Recipe %s' % tiddler.recipe else: list_link = '/bags/%s/tiddlers' % encode_name(tiddler.bag) list_title = 'Tiddlers in Bag %s' % tiddler.bag try: store.get(Bag(tiddler.bag)).policy.allows(user, 'manage') container_policy = True except PermissionsError: container_policy = False space_link = self._space_link(tiddler) html = render_wikitext(tiddler, self.environ) return send_template(self.environ, 'tiddler.html', { 'title': '%s' % tiddler.title, 'tags': tiddler.tags, 'fields': tiddler.fields, 'html': html, 'list_link': list_link, 'list_title': list_title, 'space_link': space_link, 'tiddler': tiddler, 'container_policy': container_policy, 'tiddler_url': tiddler_url(self.environ, tiddler)})
def list_recipes(self, recipes): """ Send recipes out recipes.html template. """ return send_template(self.environ, 'recipes.html', { 'recipes': recipes, 'title': 'Recipes'})
def recipe_as(self, recipe): """ Send a recipe out the recipe.html template. """ return send_template(self.environ, 'recipe.html', { 'recipe': recipe, 'title': 'Recipe %s' % recipe.name})
def list_recipes(self, recipes): """ Send recipes out recipes.html template. """ return send_template(self.environ, 'recipes.html', { 'meta_keywords': 'recipes, tiddlyspace', 'meta_description': 'A list of recipes on TiddlySpace', 'recipes': recipes, 'title': 'Recipes'})
def recipe_as(self, recipe): """ Send a recipe out the recipe.html template. """ return send_template(self.environ, 'recipe.html', { 'meta_keywords': 'recipe, tiddlyspace', 'meta_description': 'A recipe on TiddlySpace', 'recipe': recipe, 'title': 'Recipe %s' % recipe.name})
def list_bags(self, bags): """ Send bags out bags.html template. """ return send_template(self.environ, 'bags.html', { 'meta_keywords': 'bags, tiddlyspace', 'meta_description': 'A list of bags on TiddlySpace', 'bags': bags, 'title': 'Bags'})
def recipe_as(self, recipe): """ Send a recipe out the recipe.html template. """ return send_template( self.environ, 'recipe.html', { 'meta_keywords': 'recipe, tiddlyspace', 'meta_description': 'A recipe on TiddlySpace', 'recipe': recipe, 'title': 'Recipe %s' % recipe.name })
def list_bags(self, bags): """ Send bags out bags.html template. """ return send_template( self.environ, 'bags.html', { 'meta_keywords': 'bags, tiddlyspace', 'meta_description': 'A list of bags on TiddlySpace', 'bags': bags, 'title': 'Bags' })
def list_recipes(self, recipes): """ Send recipes out recipes.html template. """ return send_template( self.environ, 'recipes.html', { 'meta_keywords': 'recipes, tiddlyspace', 'meta_description': 'A list of recipes on TiddlySpace', 'recipes': recipes, 'title': 'Recipes' })
def host_meta(environ, start_response): """ Send the host_meta information, so webfinger info can be found. """ http_host, host_url = determine_host(environ) if http_host != host_url: # Or should it be a 302? raise HTTP404('No host-meta at this host: %s' % http_host) start_response('200 OK', [('Content-Type', 'application/xrd+xml')]) return send_template(environ, 'hostmeta.xml', {'host': http_host})
def tiddler_as(self, tiddler): """ Transform the provided tiddler into an HTML representation of the tiddler packaged in a DIV. Render the content using the render_wikitext subsystem. Links to the tiddler in the wiki are provided. """ user = self.environ['tiddlyweb.usersign'] store = self.environ['tiddlyweb.store'] if tiddler.recipe: list_link = '/recipes/%s/tiddlers' % encode_name(tiddler.recipe) list_title = 'Tiddlers in Recipe %s' % tiddler.recipe else: list_link = '/bags/%s/tiddlers' % encode_name(tiddler.bag) list_title = 'Tiddlers in Bag %s' % tiddler.bag try: store.get(Bag(tiddler.bag)).policy.allows(user, 'manage') container_policy = True except PermissionsError: container_policy = False if not self.environ['tiddlyweb.space_settings'].get('index', None): space_link = self._space_link(tiddler) else: space_link = '' try: modifier_link = space_uri(self.environ, tiddler.modifier) except AttributeError: modifier_link = "" try: creator_link = space_uri(self.environ, tiddler.creator) except AttributeError: creator_link = "" html = render_wikitext(tiddler, self.environ) return send_template( self.environ, 'tiddler.html', { 'meta_keywords': ', '.join(tiddler.tags), 'meta_description': tiddler.title, 'title': '%s' % tiddler.title, 'tags': tiddler.tags, 'modifier_link': modifier_link, 'creator_link': creator_link, 'fields': tiddler.fields, 'html': html, 'list_link': list_link, 'list_title': list_title, 'space_link': space_link, 'tiddler': tiddler, 'container_policy': container_policy, 'tiddler_url': tiddler_url(self.environ, tiddler) })
def host_meta(environ, start_response): """ Send the host_meta information, so webfinger info can be found. """ http_host, host_url = determine_host(environ) if http_host != host_url: # Or should it be a 302? raise HTTP404('No host-meta at this host: %s' % http_host) start_response('200 OK', [ ('Content-Type', 'application/xrd+xml')]) return send_template(environ, 'hostmeta.xml', {'host': http_host})
def tiddler_as(self, tiddler): """ Transform the provided tiddler into an HTML representation of the tiddler packaged in a DIV. Render the content using the render_wikitext subsystem. Links to the tiddler in the wiki are provided. """ user = self.environ['tiddlyweb.usersign'] store = self.environ['tiddlyweb.store'] if tiddler.recipe: list_link = '/recipes/%s/tiddlers' % encode_name(tiddler.recipe) list_title = 'Tiddlers in Recipe %s' % tiddler.recipe else: list_link = '/bags/%s/tiddlers' % encode_name(tiddler.bag) list_title = 'Tiddlers in Bag %s' % tiddler.bag try: store.get(Bag(tiddler.bag)).policy.allows(user, 'manage') container_policy = True except PermissionsError: container_policy = False if not self.environ['tiddlyweb.space_settings'].get('index', None): space_link = self._space_link(tiddler) else: space_link = '' try: modifier_link = space_uri(self.environ, tiddler.modifier) except AttributeError: modifier_link = "" try: creator_link = space_uri(self.environ, tiddler.creator) except AttributeError: creator_link = "" html = render_wikitext(tiddler, self.environ) return send_template(self.environ, 'tiddler.html', { 'meta_keywords': ', '.join(tiddler.tags), 'meta_description': tiddler.title, 'title': '%s' % tiddler.title, 'tags': tiddler.tags, 'modifier_link': modifier_link, 'creator_link': creator_link, 'fields': tiddler.fields, 'html': html, 'list_link': list_link, 'list_title': list_title, 'space_link': space_link, 'tiddler': tiddler, 'container_policy': container_policy, 'tiddler_url': tiddler_url(self.environ, tiddler)})
def bag_as(self, bag): """ Send a bag out as HTML via the bag.html template. Report on the permissions and policy for this bag for the viewing user. """ user = self.environ['tiddlyweb.usersign'] policy = bag.policy policy.owner = [policy.owner] user_perms = bag.policy.user_perms(user) return send_template(self.environ, 'bag.html', { 'policy': policy, 'user_perms': user_perms, 'bag': bag, 'title': 'Bag %s' % bag.name})
def bag_as(self, bag): """ Send a bag out as HTML via the bag.html template. Report on the permissions and policy for this bag for the viewing user. """ user = self.environ['tiddlyweb.usersign'] policy = bag.policy policy.owner = [policy.owner] user_perms = bag.policy.user_perms(user) return send_template( self.environ, 'bag.html', { 'meta_keywords': 'bag, tiddlyspace', 'meta_description': 'A bag on TiddlySpace', 'policy': policy, 'user_perms': user_perms, 'bag': bag, 'title': 'Bag %s' % bag.name })
def webfinger(environ, start_response): """ Display the webfinger information for a given user. """ http_host, host_url = determine_host(environ) if http_host != host_url: raise HTTP404('No webfinger at this host: %s' % http_host) username = environ['tiddlyweb.query'].get('q', [None])[0] if not username: raise HTTP400('No account provided to webfinger query') if username.startswith('acct:'): username = username.split(':', 1)[1] username = username.split('@', 1)[0] start_response('200 OK', [ ('Content-Type', 'application/xrd+xml')]) return send_template(environ, 'webfinger.xml', { 'username': username, 'host': http_host})
def webfinger(environ, start_response): """ Display the webfinger information for a given user. """ http_host, host_url = determine_host(environ) if http_host != host_url: raise HTTP404('No webfinger at this host: %s' % http_host) username = environ['tiddlyweb.query'].get('q', [None])[0] if not username: raise HTTP400('No account provided to webfinger query') if username.startswith('acct:'): username = username.split(':', 1)[1] username = username.split('@', 1)[0] start_response('200 OK', [('Content-Type', 'application/xrd+xml')]) return send_template(environ, 'webfinger.xml', { 'username': username, 'host': http_host })
def list_tiddlers(self, tiddlers): """ List the tiddlers from a container. Include a link to the container if it can be viewed by the current user. List the available serializations for the tiddlers. """ tiddlers_url = (self.environ.get('SCRIPT_NAME', '') + self.environ.get('PATH_INFO', '')) title = tiddlers.title revisions = tiddlers.is_revisions routing_args = self.environ.get('wsgiorg.routing_args', ([], {}))[1] container_name = '' container_url = '' container_policy = False store = self.environ['tiddlyweb.store'] user = self.environ['tiddlyweb.usersign'] if routing_args and not tiddlers.is_search: if 'recipe_name' in routing_args: name = get_route_value(self.environ, 'recipe_name') container_name = 'Recipe %s' % name try: store.get(Recipe(name)).policy.allows(user, 'read') container_url = '/recipes/%s' % name container_policy = True except PermissionsError: pass elif 'bag_name' in routing_args: name = get_route_value(self.environ, 'bag_name') container_url = '/bags/%s' % name container_name = 'Bag %s' % name try: store.get(Bag(name)).policy.allows(user, 'manage') container_policy = True except PermissionsError: pass if revisions: container_policy = True try: query_string = self.environ.get('QUERY_STRING', '').decode('utf-8') except UnicodeDecodeError: query_string = u'invalid+query+string+encoding' links = self.environ.get('tiddlyweb.config', {}).get('extension_types', {}).keys() if query_string: query_string = '?%s' % query_string # chop off the possible trailing .html tiddlers_url = tiddlers_url.rsplit('.html')[0] return send_template(self.environ, 'tiddlers.html', { 'title': title, 'revisions': revisions, 'tiddlers_url': tiddlers_url.decode('utf-8', 'replace'), 'query_string': query_string, 'container_name': container_name, 'container_url': container_url, 'container_policy': container_policy, 'links': links, 'tiddlers': tiddlers})
def list_tiddlers(self, tiddlers): """ List the tiddlers from a container. Include a link to the container if it can be viewed by the current user. List the available serializations for the tiddlers. """ tiddlers_url = (self.environ.get('SCRIPT_NAME', '') + self.environ.get('PATH_INFO', '')) container_name = '' container_type = 'bags' container_url = '' container_policy = False store = self.environ['tiddlyweb.store'] user = self.environ['tiddlyweb.usersign'] if not tiddlers.is_search: if tiddlers.recipe: name = tiddlers.recipe container_url = '/recipes/%s' % name container_name = 'Recipe %s' % name container_type = 'recipes' try: store.get(Recipe(name)).policy.allows(user, 'read') container_policy = True except PermissionsError: pass elif tiddlers.bag: name = tiddlers.bag container_url = '/bags/%s' % name container_name = 'Bag %s' % name try: store.get(Bag(name)).policy.allows(user, 'manage') container_policy = True except PermissionsError: pass if tiddlers.is_revisions: container_policy = True try: query_string = self.environ.get('QUERY_STRING', '').decode('utf-8') except UnicodeDecodeError: query_string = u'invalid+query+string+encoding' links = self.environ.get('tiddlyweb.config', {}).get('extension_types', {}).keys() if query_string: query_string = '?%s' % query_string # chop off the possible trailing .html tiddlers_url = tiddlers_url.rsplit('.html')[0] friendly = False if tiddlers_url.count('/') <= 1: friendly = True if tiddlers.is_search: template = 'search.html' if 'tiddlyweb.query.original' in self.environ: tiddlers.title = ('Search for %s' % self.environ['tiddlyweb.query.original']) else: template = 'tiddlers.html' return send_template( self.environ, template, { 'meta_keywords': 'tiddlers, tiddlyspace', 'meta_description': 'A list of tiddlers on TiddlySpace', 'title': tiddlers.title, 'tiddler_url': tiddler_url, 'environ': self.environ, 'revisions': tiddlers.is_revisions, 'friendly': friendly, 'tiddlers_url': tiddlers_url.decode('utf-8', 'replace'), 'space_uri': space_uri, 'space_bag': space_bag, 'query_string': query_string, 'container_type': container_type, 'container_name': container_name, 'container_url': container_url, 'container_policy': container_policy, 'links': links, 'tiddlers': tiddlers })
profile_text = render_wikitext(profile_tiddler, environ) tiddlers = store.search(_search_string(username)) tiddlers_list = readable_tiddlers_by_bag(store, tiddlers, usersign) avatar_path = '/recipes/%s_public/tiddlers/SiteIcon' % username start_response('200 OK', [ ('Content-Type', 'text/html; charset=UTF-8')]) return send_template(environ, 'tsprofile.html', { 'css': ['/bags/common/tiddlers/profile.css'], 'title': 'Profile for %s' % username, 'username': username, 'activity_feed': activity_feed, 'avatar_path': avatar_path, 'space_uri': space_uri(environ, username), 'profile': profile_text, 'tiddler_url': tiddler_url, 'environ': environ, 'tiddlers': tiddlers_list}) def host_meta(environ, start_response): """ Send the host_meta information, so webfinger info can be found. """ http_host, host_url = determine_host(environ) if http_host != host_url: # Or should it be a 302? raise HTTP404('No host-meta at this host: %s' % http_host)
def tiddler_as(self, tiddler): """ Transform the provided tiddler into an HTML representation of the tiddler packaged in a DIV. Render the content using the render_wikitext subsystem. Links to the tiddler in the wiki are provided. """ tiddlers_url = (self.environ.get('SCRIPT_NAME', '') + self.environ.get('PATH_INFO', '')) template_name = 'friendlytiddler.html' if '/tiddlers/' in tiddlers_url: template_name = 'tiddler.html' revision = False if '/revisions/' in tiddlers_url: revision = True user = self.environ['tiddlyweb.usersign'] store = self.environ['tiddlyweb.store'] if tiddler.recipe: list_link = '/recipes/%s/tiddlers' % encode_name(tiddler.recipe) list_title = 'Tiddlers in Recipe %s' % tiddler.recipe else: list_link = '/bags/%s/tiddlers' % encode_name(tiddler.bag) list_title = 'Tiddlers in Bag %s' % tiddler.bag tiddlerurl = tiddler_url(self.environ, tiddler) if revision: list_link = '%s/%s/revisions' % (list_link, encode_name(tiddler.title)) list_title = 'Revisions of %s' % tiddler.title tiddlerurl = '%s/revisions/%s' % (tiddlerurl, encode_name('%s' % tiddler.revision)) try: store.get(Bag(tiddler.bag)).policy.allows(user, 'manage') container_policy = True except PermissionsError: container_policy = False if not self.environ['tiddlyweb.space_settings'].get('index', None): space_link, space_name = self._space_link(tiddler) else: space_link = '' space_name = '' try: modifier_link = space_uri(self.environ, tiddler.modifier) except AttributeError: modifier_link = "" try: creator_link = space_uri(self.environ, tiddler.creator) except AttributeError: creator_link = "" links = self.environ.get('tiddlyweb.config', {}).get('extension_types', {}).keys() html = render_wikitext(tiddler, self.environ) return send_template(self.environ, template_name, { 'meta_keywords': ', '.join(tiddler.tags), 'meta_description': tiddler.title, 'title': '%s' % tiddler.title, 'tags': tiddler.tags, 'modifier_link': modifier_link, 'creator_link': creator_link, 'fields': tiddler.fields, 'html': html, 'list_link': list_link, 'list_title': list_title, 'space_link': space_link, 'space_name': space_name, 'tiddler': tiddler, 'container_policy': container_policy, 'links': links, 'tiddler_url': tiddlerurl})
profile_text = render_wikitext(profile_tiddler, environ) tiddlers = store.search(_search_string(username)) tiddlers_list = readable_tiddlers_by_bag(store, tiddlers, usersign) avatar_path = '/recipes/%s_public/tiddlers/SiteIcon' % username start_response('200 OK', [('Content-Type', 'text/html; charset=UTF-8')]) return send_template( environ, 'tsprofile.html', { 'css': ['/bags/common/tiddlers/profile.css'], 'title': 'Profile for %s' % username, 'username': username, 'activity_feed': activity_feed, 'avatar_path': avatar_path, 'space_uri': space_uri(environ, username), 'profile': profile_text, 'tiddler_url': tiddler_url, 'environ': environ, 'tiddlers': tiddlers_list }) def host_meta(environ, start_response): """ Send the host_meta information, so webfinger info can be found. """ http_host, host_url = determine_host(environ) if http_host != host_url: # Or should it be a 302?
def list_tiddlers(self, tiddlers): """ List the tiddlers from a container. Include a link to the container if it can be viewed by the current user. List the available serializations for the tiddlers. """ tiddlers_url = (self.environ.get('SCRIPT_NAME', '') + self.environ.get('PATH_INFO', '')) if tiddlers_url.startswith('/tiddlers'): tiddlers.link = '/tiddlers' template_name = 'friendlytiddlers.html' if '/bags/' in tiddlers.link or '/recipes/' in tiddlers.link: template_name = 'tiddlers.html' container_name = '' container_type = 'bags' container_url = '' container_policy = False store = self.environ['tiddlyweb.store'] user = self.environ['tiddlyweb.usersign'] space_name = '' if not (tiddlers.is_search or tiddlers.is_revisions): if tiddlers.recipe: name = tiddlers.recipe try: space_name = Space.name_from_recipe(name) tiddlers.title = 'Tiddlers in %s' % space_name except ValueError: pass container_url = '/recipes/%s' % name container_name = 'Recipe %s' % name container_type = 'recipes' try: store.get(Recipe(name)).policy.allows(user, 'read') container_policy = True except PermissionsError: pass elif tiddlers.bag: name = tiddlers.bag try: space_name = Space.name_from_recipe(name) tiddlers.title = 'Tiddlers in %s' % space_name except ValueError: pass container_url = '/bags/%s' % name container_name = 'Bag %s' % name try: store.get(Bag(name)).policy.allows(user, 'manage') container_policy = True except PermissionsError: pass if tiddlers.is_revisions: container_policy = True container_url = tiddlers.link.rsplit('/revisions')[0] container_name = 'Head' try: query_string = self.environ.get('QUERY_STRING', '').decode('utf-8') except UnicodeDecodeError: query_string = u'invalid+query+string+encoding' links = self.environ.get('tiddlyweb.config', {}).get('extension_types', {}).keys() if query_string: query_string = '?%s' % query_string if tiddlers.is_search: template_name = 'search.html' if 'tiddlyweb.query.original' in self.environ: tiddlers.title = ('Search for %s' % self.environ['tiddlyweb.query.original']) return send_template(self.environ, template_name, { 'meta_keywords': 'tiddlers, tiddlyspace', 'meta_description': 'A list of tiddlers on TiddlySpace', 'title': tiddlers.title, 'tiddler_url': tiddler_url, 'environ': self.environ, 'revisions': tiddlers.is_revisions, 'tiddlers_url': tiddlers.link, 'space_uri': space_uri, 'space_bag': space_bag, 'query_string': query_string, 'container_type': container_type, 'container_name': container_name, 'container_url': container_url, 'container_policy': container_policy, 'links': links, 'space_name': space_name, 'tiddlers': tiddlers})