def test_etag_generation():
    from tiddlyweb.web.handler.tiddler import _tiddler_etag
    from tiddlyweb.model.bag import Bag
    from tiddlyweb.model.tiddler import Tiddler

    tiddler = Tiddler('monkey', 'bar')
    etag = _tiddler_etag(tiddler)

    assert etag == 'bar/monkey/0'

    bag = Bag('bar')
    store.put(bag)
    store.put(tiddler)
    etag = _tiddler_etag(tiddler)
    assert etag == 'bar/monkey/1'
def test_etag_generation():
    from tiddlyweb.web.handler.tiddler import _tiddler_etag
    from tiddlyweb.model.bag import Bag
    from tiddlyweb.model.tiddler import Tiddler

    tiddler = Tiddler("monkey", "bar")
    etag = _tiddler_etag(tiddler)

    assert etag == "bar/monkey/0"

    bag = Bag("bar")
    store.put(bag)
    store.put(tiddler)
    etag = _tiddler_etag(tiddler)
    assert etag == "bar/monkey/1"
def test_etag_generation():
    from tiddlyweb.web.handler.tiddler import _tiddler_etag
    from tiddlyweb.model.bag import Bag
    from tiddlyweb.model.tiddler import Tiddler
    from tiddlyweb.config import config

    tiddler = Tiddler('monkey', 'bar')
    etag = _tiddler_etag({'tiddlyweb.config': config}, tiddler)

    etag_hash = sha(':').hexdigest()
    assert etag == '"bar/monkey/0;%s"' % etag_hash

    bag = Bag('bar')
    store.put(bag)
    store.put(tiddler)
    etag = _tiddler_etag({'tiddlyweb.config': config}, tiddler)
    assert etag == '"bar/monkey/1;%s"' % etag_hash
Beispiel #4
0
def test_etag_generation():
    from tiddlyweb.web.handler.tiddler import _tiddler_etag
    from tiddlyweb.model.bag import Bag
    from tiddlyweb.model.tiddler import Tiddler
    from tiddlyweb.config import config

    tiddler = Tiddler('monkey', 'bar')
    etag = _tiddler_etag({'tiddlyweb.config': config}, tiddler)

    etag_hash = sha(':').hexdigest()
    assert etag == '"bar/monkey/0;%s"' % etag_hash

    bag = Bag('bar')
    store.put(bag)
    store.put(tiddler)
    etag = _tiddler_etag({'tiddlyweb.config': config}, tiddler)
    assert etag == '"bar/monkey/1;%s"' % etag_hash
Beispiel #5
0
    def _tiddler_as_div(self, tiddler):
        """
        Read in the tiddler from a div.
        """
        recipe_name = ''
        if tiddler.recipe:
            recipe_name = tiddler.recipe
        try:
            host = server_base_url(self.environ)
        except KeyError:
            host = ''
        host = '%s/' % host

        if binary_tiddler(tiddler):
            tiddler_output = self._binary_tiddler(tiddler)
        else:
            tiddler_output = tiddler.text

        if tiddler.type == 'None' or not tiddler.type:
            tiddler.type = ''

        return ('<div title="%s" server.title="%s" server.page.revision="%s" '
                'server.etag="%s" '
                'modifier="%s" creator="%s" server.workspace="bags/%s" '
                'server.type="tiddlyweb" server.host="%s" '
                'server.recipe="%s" server.bag="%s" server.permissions="%s" '
                'server.content-type="%s" '
                'modified="%s" created="%s" tags="%s" %s>\n'
                '<pre>%s</pre>\n</div>\n' %
                    (escape_attribute_value(tiddler.title),
                        escape_attribute_value(tiddler.title),
                        tiddler.revision,
                        escape_attribute_value(_tiddler_etag(
                            self.environ, tiddler)),
                        escape_attribute_value(tiddler.modifier),
                        escape_attribute_value(tiddler.creator),
                        escape_attribute_value(tiddler.bag),
                        host,
                        escape_attribute_value(recipe_name),
                        escape_attribute_value(tiddler.bag),
                        self._tiddler_permissions(tiddler),
                        tiddler.type,
                        tiddler.modified,
                        tiddler.created,
                        escape_attribute_value(self.tags_as(tiddler.tags)),
                        self._tiddler_fields(tiddler.fields),
                        html_encode(tiddler_output)))
    def _tiddler_as_div(self, tiddler):
        """
        Read in the tiddler from a div.
        """
        recipe_name = ''
        if tiddler.recipe:
            recipe_name = tiddler.recipe
        try:
            host = server_base_url(self.environ)
        except KeyError:
            host = ''
        host = '%s/' % host

        if binary_tiddler(tiddler):
            tiddler_output = self._binary_tiddler(tiddler)
        else:
            tiddler_output = tiddler.text

        if tiddler.type == 'None' or not tiddler.type:
            tiddler.type = ''

        return ('<div title="%s" server.title="%s" server.page.revision="%s" '
                'server.etag="%s" '
                'modifier="%s" creator="%s" server.workspace="bags/%s" '
                'server.type="tiddlyweb" server.host="%s" '
                'server.recipe="%s" server.bag="%s" server.permissions="%s" '
                'server.content-type="%s" '
                'modified="%s" created="%s" tags="%s" %s>\n'
                '<pre>%s</pre>\n</div>\n' %
                (escape_attribute_value(tiddler.title),
                 escape_attribute_value(tiddler.title), tiddler.revision,
                 escape_attribute_value(_tiddler_etag(self.environ, tiddler)),
                 escape_attribute_value(
                     tiddler.modifier), escape_attribute_value(
                         tiddler.creator), escape_attribute_value(tiddler.bag),
                 host, escape_attribute_value(recipe_name),
                 escape_attribute_value(
                     tiddler.bag), self._tiddler_permissions(tiddler),
                 tiddler.type, tiddler.modified, tiddler.created,
                 escape_attribute_value(self.tags_as(
                     tiddler.tags)), self._tiddler_fields(
                         tiddler.fields), html_encode(tiddler_output)))
        if not user == 'GUEST':
            tiddler.modifier = user
                
        try:
            _check_bag_constraint(environ, bag, 'accept')
        except (PermissionsError), exc:
            _validate_tiddler_content(environ, tiddler)
        store.put(tiddler)
    except NoBagError, exc:
        raise HTTP409("Unable to put tiddler, %s. There is no bag named: " \
                "%s (%s). Create the bag." %
                (tiddler.title, tiddler.bag, exc))
    except NoTiddlerError, exc:
        raise HTTP404('Unable to put tiddler, %s. %s' % (tiddler.title, exc))
        
    etag = ('Etag', _tiddler_etag(environ, tiddler))
    if etag:
        response = [etag]
        
    if redirect:
        response.append(('Location', str(redirect[0])))
        start_response('303 See Other', response)
    else:
        response.append(('Location', web.tiddler_url(environ, tiddler)))
        start_response("204 No Content", response)
    
    return []

class Serialization(SerializationInterface):
    def as_tiddler(self, tiddler, form):
        """