from . import base
from . import ui_modules
+class ActionEditHandler(auth.CacheMixin, base.BaseHandler):
+ @tornado.web.authenticated
+ def post(self):
+ path = self.get_argument("path")
+
+ # Check permissions
+ if not self.backend.wiki.check_acl(path, self.current_user):
+ raise tornado.web.HTTPError(403, "Access to %s not allowed for %s" % (path, self.current_user))
+
+ content = self.get_argument("content", None)
+ changes = self.get_argument("changes")
+
+ # Create a new page in the database
+ with self.db.transaction():
+ page = self.backend.wiki.create_page(path,
+ self.current_user, content, changes=changes, address=self.get_remote_ip())
+
+ # Redirect back
+ if page.was_deleted():
+ self.redirect("/")
+ else:
+ self.redirect(page.url)
+
+ def on_finish(self):
+ """
+ Updates the search index after the page has been edited
+ """
+ # This is being executed in the background and after
+ # the response has been set to the client
+ with self.db.transaction():
+ self.backend.wiki.refresh()
+
+
class ActionUploadHandler(auth.CacheMixin, base.BaseHandler):
@tornado.web.authenticated
def post(self):
# Render page
self.render("wiki/page.html", page=page, latest_revision=latest_revision)
- @tornado.web.authenticated
- def post(self, page):
- # Check permissions
- if not self.backend.wiki.check_acl(page, self.current_user):
- raise tornado.web.HTTPError(403, "Access to %s not allowed for %s" % (page, self.current_user))
-
- content = self.get_argument("content", None)
- changes = self.get_argument("changes")
-
- # Create a new page in the database
- with self.db.transaction():
- page = self.backend.wiki.create_page(page,
- self.current_user, content, changes=changes, address=self.get_remote_ip())
-
- # Redirect back
- if page.was_deleted():
- self.redirect("/")
- else:
- self.redirect(page.url)
-
- # Update the search index
- with self.db.transaction():
- self.backend.wiki.refresh()
-
class SearchHandler(auth.CacheMixin, base.BaseHandler):
@base.blacklisted