for row in res:
yield Page(self.backend, row.id, data=row)
+ def _get_page(self, query, *args):
+ res = self.db.get(query, *args)
+
+ if res:
+ return Page(self.backend, res.id, data=res)
+
def get_page_title(self, page, default=None):
doc = self.get_page(page)
if doc:
assert page
if revision:
- res = self.db.get("SELECT * FROM wiki WHERE page = %s \
+ return self._get_page("SELECT * FROM wiki WHERE page = %s \
AND timestamp = %s", page, revision)
else:
- res = self.db.get("SELECT * FROM wiki WHERE page = %s \
+ return self._get_page("SELECT * FROM wiki WHERE page = %s \
ORDER BY timestamp DESC LIMIT 1", page)
- if res:
- return Page(self.backend, res.id, data=res)
-
def get_recent_changes(self, limit=None):
return self._get_pages("SELECT * FROM wiki \
WHERE timestamp >= NOW() - INTERVAL '4 weeks' \
ORDER BY timestamp DESC LIMIT %s", limit)
- def create_page(self, page, author, markdown):
+ def create_page(self, page, author, content, changes=None, address=None):
page = Page.sanitise_page_name(page)
- res = self.db.get("INSERT INTO wiki(page, author_id, markdown) \
- VALUES(%s, %s, %s) RETURNING id", page, author.id, markdown)
-
- if res:
- return self.get_page_by_id(res.id)
+ return self._get_page("INSERT INTO wiki(page, author_uid, markdown, changes, address) \
+ VALUES(%s, %s, %s, %s, %s) RETURNING *", page, author.uid, content or None, changes, address)
- def delete_page(self, page, author):
+ def delete_page(self, page, author, **kwargs):
# Do nothing if the page does not exist
if not self.get_page(page):
return
# Just creates a blank last version of the page
- self.create_page(page, author, None)
+ self.create_page(page, author=author, content=None, **kwargs)
@staticmethod
def _split_url(url):
@property
def url(self):
- return "/%s" % self.page
+ return self.page
@property
def page(self):
def get_latest_revision(self):
return self.backend.wiki.get_page(self.page)
+ @property
+ def changes(self):
+ return self.data.changes
+
# Sidebar
@lazy_property