(r"/docs/watchlist", docs.WatchlistHandler),
(r"/docs/([A-Za-z0-9\-_\/]+)?/_edit", docs.ActionEditHandler),
(r"/docs/([A-Za-z0-9\-_\/]+)?/_render", docs.ActionRenderHandler),
+ (r"/docs/([A-Za-z0-9\-_\/]+)?/_(watch|unwatch)", docs.ActionWatchHandler),
(r"/docs((?:[A-Za-z0-9\-_\/]+)?(?:.*)\.(?:\w+))$", docs.FileHandler),
(r"/docs([A-Za-z0-9\-_\/]+)?", docs.PageHandler),
# Actions
(r"((?:[A-Za-z0-9\-_\/]+)?(?:.*)\.(?:\w+))/_delete", wiki.ActionDeleteHandler),
- (r"([A-Za-z0-9\-_\/]+)?/_(watch|unwatch)", wiki.ActionWatchHandler),
(r"/actions/restore", wiki.ActionRestoreHandler),
(r"/actions/upload", wiki.ActionUploadHandler),
self.finish(html)
+class ActionWatchHandler(base.BaseHandler):
+ @tornado.web.authenticated
+ @base.ratelimit(minutes=60, requests=180)
+ def get(self, path, action):
+ if path is None:
+ path = "/"
+
+ page = self.backend.wiki.get_page(path)
+ if not page:
+ raise tornado.web.HTTPError(404, "Page does not exist: %s" % 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))
+
+ with self.db.transaction():
+ if action == "watch":
+ page.add_watcher(self.current_user)
+ elif action == "unwatch":
+ page.remove_watcher(self.current_user)
+
+ # Redirect back to page
+ self.redirect(page.url)
+
+
class SearchHandler(base.BaseHandler):
@base.ratelimit(minutes=5, requests=25)
def get(self):
self.redirect(page.page)
-class ActionWatchHandler(base.BaseHandler):
- @tornado.web.authenticated
- @base.ratelimit(minutes=60, requests=180)
- def get(self, path, action):
- if path is None:
- path = "/"
-
- page = self.backend.wiki.get_page(path)
- if not page:
- raise tornado.web.HTTPError(404, "Page does not exist: %s" % 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))
-
- with self.db.transaction():
- if action == "watch":
- page.add_watcher(self.current_user)
- elif action == "unwatch":
- page.remove_watcher(self.current_user)
-
- # Redirect back to page
- self.redirect(page.url)
-
-
class FilesHandler(base.BaseHandler):
@tornado.web.authenticated
def get(self, path):