Пример #1
0
def web_tiddler_url(environ, tiddler, container='bags', full=True):
    """
    Override default tiddler_url to be space+host aware.

    If the bag or recipe of the tiddler is of a space, switch to
    that space's host for the duration of uri creation.

    Do this all the time, so that we get the right URIs even
    when working around ControlView.

    If the bag does not fit in a space, then make is URI be at
    the server_host domain. If/when auxbags are made to work this
    will need to be reviewed.
    """
    if '_canonical_uri' in tiddler.fields:
        return tiddler.fields['_canonical_uri']

    saved_host = environ.get('HTTP_HOST', '')
    try:
        if container == 'recipes':
            space_name = Space.name_from_recipe(tiddler.recipe)
        else:
            space_name = Space.name_from_bag(tiddler.bag)
        space_name = space_name + '.'
    except ValueError, exc:
        space_name = ''
Пример #2
0
def web_tiddler_url(environ,
                    tiddler,
                    container='bags',
                    full=True,
                    friendly=False):
    """
    Override default tiddler_url to be space+host aware.

    If the bag or recipe of the tiddler is of a space, switch to
    that space's host for the duration of uri creation.

    Do this all the time, so that we get the right URIs even
    when working around ControlView.

    If the bag does not fit in a space, then make is URI be at
    the server_host domain. If/when auxbags are made to work this
    will need to be reviewed.
    """
    saved_host = environ.get('HTTP_HOST', '')
    try:
        if container == 'recipes':
            space_name = Space.name_from_recipe(tiddler.recipe)
        else:
            space_name = Space.name_from_bag(tiddler.bag)
        space_name = space_name + '.'
    except ValueError:
        space_name = ''

    host = environ['tiddlyweb.config']['server_host']['host']
    port = environ['tiddlyweb.config']['server_host']['port']
    if port is '443' or port is '80':
        port = ''
    else:
        port = ':%s' % port
    environ['HTTP_HOST'] = '%s%s%s' % (space_name.encode('utf-8'), host, port)

    if friendly and space_name:
        url = '%s/%s' % (tiddlyweb.web.util.server_base_url(environ),
                         tiddlyweb.web.util.encode_name(tiddler.title))
    else:
        url = original_tiddler_url(environ, tiddler, container, full)
    if saved_host:
        environ['HTTP_HOST'] = saved_host
    elif 'HTTP_HOST' in environ:
        del environ['HTTP_HOST']
    return url
Пример #3
0
def web_tiddler_url(environ, tiddler, container='bags', full=True,
        friendly=False):
    """
    Override default tiddler_url to be space+host aware.

    If the bag or recipe of the tiddler is of a space, switch to
    that space's host for the duration of uri creation.

    Do this all the time, so that we get the right URIs even
    when working around ControlView.

    If the bag does not fit in a space, then make is URI be at
    the server_host domain. If/when auxbags are made to work this
    will need to be reviewed.
    """
    saved_host = environ.get('HTTP_HOST', '')
    try:
        if container == 'recipes':
            space_name = Space.name_from_recipe(tiddler.recipe)
        else:
            space_name = Space.name_from_bag(tiddler.bag)
        space_name = space_name + '.'
    except ValueError:
        space_name = ''

    host = environ['tiddlyweb.config']['server_host']['host']
    port = environ['tiddlyweb.config']['server_host']['port']
    if port is '443' or port is '80':
        port = ''
    else:
        port = ':%s' % port
    environ['HTTP_HOST'] = '%s%s%s' % (space_name.encode('utf-8'),
        host, port)

    if friendly and space_name:
        url = '%s/%s' % (tiddlyweb.web.util.server_base_url(environ),
                tiddlyweb.web.util.encode_name(tiddler.title))
    else:
        url = original_tiddler_url(environ, tiddler, container, full)
    if saved_host:
        environ['HTTP_HOST'] = saved_host
    elif 'HTTP_HOST' in environ:
        del environ['HTTP_HOST']
    return url
Пример #4
0
def web_tiddler_url(environ, tiddler, container='bags', full=True):
    """
    Override default tiddler_url to be space+host aware.

    If the bag or recipe of the tiddler is of a space, switch to
    that space's host for the duration of uri creation.

    Do this all the time, so that we get the right URIs even
    when working around ControlView.
    """
    if '_canonical_uri' in tiddler.fields:
        return tiddler.fields['_canonical_uri']

    saved_host = environ.get('HTTP_HOST', '')
    try:
        if container == 'recipes':
            space_name = Space.name_from_recipe(tiddler.recipe)
        else:
            space_name = Space.name_from_bag(tiddler.bag)

        host = environ['tiddlyweb.config']['server_host']['host']
        port = environ['tiddlyweb.config']['server_host']['port']
        if port is '443' or port is '80':
            port = ''
        else:
            port = ':%s' % port
        environ['HTTP_HOST'] = '%s.%s%s' % (space_name.encode('utf-8'),
            host, port)
    except ValueError:
        pass
    url = original_tiddler_url(environ, tiddler, container, full)
    if saved_host:
        environ['HTTP_HOST'] = saved_host
    elif 'HTTP_HOST' in environ:
        del environ['HTTP_HOST']
    return url
Пример #5
0
def test_name_from_bag():
    assert Space.name_from_bag('cat_private') == 'cat'
    py.test.raises(ValueError, 'Space.name_from_bag("cat_ball")')
Пример #6
0
def test_name_from_bag():
    assert Space.name_from_bag('cat_private') == 'cat'
    py.test.raises(ValueError, 'Space.name_from_bag("cat_ball")')