diff options
author | Sascha Silbe <sascha-pgp@silbe.org> | 2013-06-22 07:56:08 (GMT) |
---|---|---|
committer | Sascha Silbe <sascha-pgp@silbe.org> | 2013-06-22 07:56:08 (GMT) |
commit | ff40ca8abf23d228c4bf15d45aa7e7a5c810c33b (patch) | |
tree | 30b61e342e55748199178cef287d2a0c57e9d22d | |
parent | 0a344a41852f14deb3f8023a892f205344bafc01 (diff) |
ObjectListHtmlResource: factor out BufferResource from, add footer support
Factor out a generic BufferResource from ObjectListHtmlResource and
add support for including a footer in the HTML (to be used by search
support later).
-rwxr-xr-x | journal2webdav | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/journal2webdav b/journal2webdav index 3de7e63..e3ebabc 100755 --- a/journal2webdav +++ b/journal2webdav @@ -194,26 +194,32 @@ class JournalObjectResource(object): return self._file.read(length or self._size) -class ObjectListHtmlResource(object): - - def __init__(self, directory): - self._html = self._generate_html(directory) +class BufferResource(object): + def __init__(self): self._position = 0 + self._buffer = '' def __len__(self): - return len(self._html) + return len(self._buffer) def __iter__(self): - while self._position < len(self._html): - yield self._html[self._position:self._position + CHUNK_SIZE] + while self._position < len(self._buffer): + yield self._buffer[self._position:self._position + CHUNK_SIZE] self._position += CHUNK_SIZE def read(self, length=0): old_position = self._position - self._position += length or len(self._html) - return self._html[old_position:self._position] + self._position += length or len(self._buffer) + return self._buffer[old_position:self._position] + + +class ObjectListHtmlResource(BufferResource): - def _generate_html(self, directory): + def __init__(self, directory, footer=None): + super(ObjectListHtmlResource, self).__init__() + self._buffer = self._generate_html(directory, footer) + + def _generate_html(self, directory, footer=None): lines = ['<html>', '<head><title>Journal listing</title></head>', '<body>','<table>', '<tr><th>Name</th></tr>'] @@ -223,7 +229,14 @@ class ObjectListHtmlResource(object): lines.append(self._generate_html_entry(name, fs_object)) - lines += ['</table>', '</html>'] + lines += ['</table>'] + + if isinstance(footer, list): + lines += footer + elif isinstance(footer, basestring): + lines += [footer] + + lines += ['</html>'] return '\n'.join(lines) def _generate_html_entry(self, name, fs_object): |