def view(title=None): _ = current_app.gettext if title is None: title = current_app.front_page p = page.get_page(request, title) try: content = p.view_content() except error.NotFoundErr: if current_app.fallback_url: url = current_app.fallback_url if '%s' in url: url = url % werkzeug.url_quote(title) else: url = "%s/%s" % (url, werkzeug.url_quote(title)) return response.redirect(url, code=303) if current_app.read_only: raise error.NotFoundErr(_("Page not found.")) url = current_app.get_url(title, 'edit', external=True) return response.redirect(url, code=303) html = p.template("page.html", content=content) dependencies = p.dependencies() etag = '/(%s)' % ','.join(dependencies) return response.response(request, title, html, etag=etag)
def history(title): """Display history of changes of a page.""" max_rev = -1 history = [] if title not in current_app.storage: raise error.NotFoundErr("Page not found.") p = page.get_page(request, title) make_url = current_app.get_url for rev, date, author, comment in current_app.storage.page_history(title): if max_rev < rev: max_rev = rev if rev > 0: date_url = make_url(view='diff', title=title, from_rev=rev - 1, to_rev=rev, ) else: date_url = make_url(view='revision', title=title, rev=rev, ) history.append((date, date_url, rev, author, comment)) html = p.template('history.html', history=history, date_html=page.date_html, parent=max_rev) resp = response.response(request, title, html, '/history') return resp
def view_content(self, lines=None): if self.title not in self.storage: raise error.NotFoundErr() content = [ '<a href="%s"><img src="%s" alt="%s"></a>' % (self.get_url(self.title, 'download'), self.get_url(self.title, 'render'), werkzeug.escape(self.title)) ] return content
def view_content(self, lines=None): if self.title not in self.storage: raise error.NotFoundErr() content = [ '<p>Download <a href="%s">%s</a> as <i>%s</i>.</p>' % (self.get_download_url(self.title), werkzeug.escape( self.title), self.mime) ] return content
def open_page(self, title, mode=Perm.read, rev=None, owner='*', meta_only=False): """Open the page and return a file-like object with its contents.""" path = self._path(title) if meta_only and self._lastpage and self._lastpage.path == path and rev is None: self._lastpage.seek(0) fp = self._lastpage else: try: fp = self.fs.open(path, owner=owner, mode=mode, rev=rev) if mode == Perm.read: self._lastpage = fp except FileNotFoundError: if rev is not None: raise raise error.NotFoundErr() if meta_only: return fp.rev, fp.modified, fp.owner, fp.meta.get(u'comment', '') else: return fp
def view_content(self, lines=None): if self.title not in self.storage: raise error.NotFoundErr() return self.content_iter(lines)