Exemple #1
0
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)
Exemple #2
0
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
Exemple #3
0
 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
Exemple #4
0
 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
Exemple #5
0
 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
Exemple #6
0
 def view_content(self, lines=None):
     if self.title not in self.storage:
         raise error.NotFoundErr()
     return self.content_iter(lines)