if res:
return Page(self.backend, res.id, data=res)
+ def __iter__(self):
+ return self._get_pages(
+ "SELECT wiki.* FROM wiki_current current \
+ LEFT JOIN wiki ON current.id = wiki.id \
+ WHERE current.deleted IS FALSE \
+ ORDER BY page",
+ )
+
def make_path(self, page, path):
# Nothing to do for absolute links
if path.startswith("/"):
self.backend.messages.send_template("wiki/messages/page-changed",
account=watcher, page=self, priority=-10)
- def restore(self, author, address):
+ def restore(self, author, address, comment=None):
changes = "Restore to revision from %s" % self.timestamp.isoformat()
+ # Append comment
+ if comment:
+ changes = "%s: %s" % (changes, comment)
+
return self.backend.wiki.create_page(self.page,
author, self.markdown, changes=changes, address=address)
def get_revisions(self):
revisions = self.backend.wiki._get_files("SELECT * FROM wiki_files \
- WHERE path = %s ORDER BY created_at DESC", self.path)
+ WHERE path = %s AND filename = %s ORDER BY created_at DESC", self.path, self.filename)
return list(revisions)
def is_image(self):
return self.mimetype.startswith("image/")
+ def is_vector_image(self):
+ return self.mimetype in ("image/svg+xml",)
+
+ def is_bitmap_image(self):
+ return self.is_image() and not self.is_vector_image()
+
@lazy_property
def blob(self):
res = self.db.get("SELECT data FROM wiki_blobs \
return bytes(res.data)
def get_thumbnail(self, size):
+ assert self.is_bitmap_image()
+
cache_key = "-".join((self.path, util.normalize(self.filename), self.created_at.isoformat(), "%spx" % size))
# Try to fetch the data from the cache
def _render_link(self, m):
url, text = m.groups()
+ # External Links
+ for schema in self.schemas:
+ if url.startswith(schema):
+ return """<a class="link-external" href="%s">%s</a>""" % \
+ (url, text or url)
+
# Emails
if "@" in url:
# Strip mailto:
return """<a class="link-external" href="mailto:%s">%s</a>""" % \
(url, text or url)
- # External Links
- for schema in self.schemas:
- if url.startswith(schema):
- return """<a class="link-external" href="%s">%s</a>""" % \
- (url, text or url)
-
# Everything else must be an internal link
path = self.backend.wiki.make_path(self.path, url)