Пример #1
0
    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)
            })
Пример #2
0
    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)})
Пример #3
0
def testspace_uri():
    environ = {}
    environ['tiddlyweb.config'] = {}
    environ['tiddlyweb.config']['server_host'] = {
        'host': 'example.com',
        'scheme': 'http',
        'port': '8080',
    }

    server_host = environ['tiddlyweb.config']['server_host']

    space_name = 'howdy'

    assert space_uri(environ, space_name) == 'http://howdy.example.com:8080/'

    server_host['port'] = '80'
    assert space_uri(environ, space_name) == 'http://howdy.example.com/'

    server_host['port'] = '443'
    server_host['scheme'] = 'https'
    assert space_uri(environ, space_name) == 'https://howdy.example.com/'

    server_host['port'] = '9443'
    assert space_uri(environ, space_name) == 'https://howdy.example.com:9443/'
Пример #4
0
    def _space_link(self, tiddler):
        """
        Create a link back to this tiddler in its space.
        """
        if tiddler.recipe:
            link = _encode_space_link(tiddler)
        elif _space_bag(tiddler.bag):
            space_name = tiddler.bag.split('_', 1)[0]
            space_link_uri = space_uri(self.environ, space_name).rstrip('/')
            link = _encode_space_link(tiddler)
            link = '%s%s' % (space_link_uri, link)
        else:
            return ''

        return '%s%s' % (self._server_prefix(), link)
Пример #5
0
    def _space_link(self, tiddler):
        """
        Create a link back to this tiddler in its space.
        """
        if tiddler.recipe:
            link = _encode_space_link(tiddler)
        elif space_bag(tiddler.bag):
            space_name = tiddler.bag.split('_', 1)[0]
            space_link_uri = space_uri(self.environ, space_name).rstrip('/')
            link = _encode_space_link(tiddler)
            link = '%s%s' % (space_link_uri, link)
        else:
            return ''

        return '%s%s' % (self._server_prefix(), link)
Пример #6
0
def testspace_uri():
    environ = {}
    environ['tiddlyweb.config'] = {}
    environ['tiddlyweb.config']['server_host'] = {
            'host': 'example.com',
            'scheme': 'http',
            'port': '8080',
            }

    server_host = environ['tiddlyweb.config']['server_host']

    space_name = 'howdy'

    assert space_uri(environ, space_name) == 'http://howdy.example.com:8080/'

    server_host['port'] = '80'
    assert space_uri(environ, space_name) == 'http://howdy.example.com/'

    server_host['port'] = '443'
    server_host['scheme'] = 'https'
    assert space_uri(environ, space_name) == 'https://howdy.example.com/'

    server_host['port'] = '9443'
    assert space_uri(environ, space_name) == 'https://howdy.example.com:9443/'
Пример #7
0
    def _space_link(self, tiddler):
        """
        Create a link back to this tiddler in its space.
        """

        if tiddler.recipe:
            link = self._encode_space_link(tiddler)
        elif self._space_bag(tiddler.bag):
            space_name = tiddler.bag.split('_', 1)[0]
            space_link_uri = space_uri(self.environ, space_name).rstrip('/')
            link = self._encode_space_link(tiddler)
            link = '%s%s' % (space_link_uri, link)
        else:
            return ''

        space_link = """
<div class="tiddlerslink">
<a href="%s%s" title="space link">%s in space</a>
</div>
""" % (self._server_prefix(), link, tiddler.title)
        return space_link
Пример #8
0
    def _space_link(self, tiddler):
        """
        Create a link back to this tiddler in its space.
        """

        if tiddler.recipe:
            link = self._encode_space_link(tiddler)
        elif self._space_bag(tiddler.bag):
            space_name = tiddler.bag.split('_', 1)[0]
            space_link_uri = space_uri(self.environ, space_name).rstrip('/')
            link = self._encode_space_link(tiddler)
            link = '%s%s' % (space_link_uri, link)
        else:
            return ''

        space_link = """
<div class="tiddlerslink">
<a href="%s%s" title="space link">%s in space</a>
</div>
""" % (self._server_prefix(), link, tiddler.title)
        return space_link
Пример #9
0
    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)
Пример #10
0
                bag.policy.allows(usersign, 'read')
                tiddlers_list.append(_tiddler_in_list(tiddler))
                bag_readable[tiddler.bag] = True
            except(ForbiddenError, UserRequiredError):
                bag_readable[tiddler.bag] = False

    profile_tiddlers = '\n'.join(tiddlers_list)

    avatar_path = '/recipes/%s_public/tiddlers/SiteIcon' % username

    start_response('200 OK', [
        ('Content-Type', 'text/html; charset=UTF-8')])

    environ['tiddlyweb.title'] = 'Profile for %s' % username
    return [PROFILE_TEMPLATE % {'username': username,
        'avatar_path': avatar_path, 'space_uri': space_uri(environ, username),
        'profile': profile_text, 'tiddlers': profile_tiddlers}]


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')])
Пример #11
0
    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)
Пример #12
0
    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})
Пример #13
0
 def call_space_uri(tiddler):
     space_name = tiddler.recipe.split('_', 1)[0]
     return space_uri(self.environ, space_name)