""", path, filename, author.uid, address, mimetype, blob.id, len(data),
)
- def render(self, path, text):
- return WikiRenderer(self.backend, path, text)
+ def render(self, path, text, **kwargs):
+ return WikiRenderer(self.backend, path, text, **kwargs)
class Page(misc.Object):
lines.append(line)
- renderer = self.backend.wiki.render(self.page, "\n".join(lines))
+ renderer = self.backend.wiki.render(self.page, "\n".join(lines), revision=self.timestamp)
return renderer.html
@property
def files(self):
- renderer = self.backend.wiki.render(self.page, self.markdown)
+ renderer = self.backend.wiki.render(self.page, self.markdown, revision=self.timestamp)
return renderer.files
def created_at(self):
return self.data.created_at
+ timestamp = created_at
+
def delete(self, author=None):
if not self.can_be_deleted():
raise RuntimeError("Cannot delete %s" % self)
# Images
_images = re.compile(r"<img alt(?:=\"(.*?)\")? src=\"(.*?)\" (?:title=\"(.*?)\" )?/>")
- def init(self, path, text):
+ def init(self, path, text, revision=None):
self.path = path
self.text = text
+ # Optionally, the revision of the rendered page
+ self.revision = revision
+
# Markdown Renderer
self.renderer = markdown.Markdown(
extensions=[
"""
# Skip any absolute and external URLs
- if url.startswith("/") or url.startswith("https://") or url.startswith("http://"):
+ if url.startswith("https://") or url.startswith("http://"):
return html % {
"caption" : caption or "",
"id" : id,
args = urllib.parse.parse_qs(qs)
# Build absolute path
- plain_url = url = self.backend.wiki.make_path(self.path, url)
+ url = self.backend.wiki.make_path(self.path, url)
# Find image
- file = self.backend.wiki.get_file_by_path(url)
+ file = self.backend.wiki.get_file_by_path(url, revision=self.revision)
if not file or not file.is_image():
return "<!-- Could not find image %s in %s -->" % (url, self.path)
if "s" in args:
del args["s"]
- # Append arguments to the URL
- if args:
- url = "%s?%s" % (url, urllib.parse.urlencode(args))
+ # Link the image that has been the current version at the time of the page edit
+ if file:
+ args["revision"] = file.timestamp
return html % {
"caption" : caption or "",
"id" : id,
- "plain_url" : plain_url,
"url" : url,
+ "args" : urllib.parse.urlencode(args),
}
def _render(self):