diff options
Diffstat (limited to 'pastepy.py')
-rw-r--r-- | pastepy.py | 34 |
1 files changed, 33 insertions, 1 deletions
@@ -225,6 +225,38 @@ class Paste(object): self.start_response('200 OK', [('Content-Type', 'text/plain; charset=UTF-8')]) return [t2b(paste.text)] + def full(self): + hash = self.path[1] + + try: + session = db.Session() + try: + cache = session.query(db.Cache).filter_by(paste_hash = hash).one() + paste = cache.paste + except db.NoResultFound: + try: + paste = session.query(db.Paste).filter_by(hash = hash).one() + except db.NoResultFound: + self.start_response('404 Not Found', []) + return [] + try: + lexername, text = self.get_formatted(paste.syntax, paste.text) + except UnknownSyntaxError: + return self.message('Could not find the lexer "%s".' % paste.syntax, 'Error') + cache = db.Cache(hash, lexername, text) + session.add(cache) + session.commit() + # Workaround for attribute refresh. + paste = cache.paste + finally: + session.close() + + return self.render_template('full.html', { + 'title': '%s – %s' % (settings.pastebin_name, paste.title or 'Untitled'), + 'text': b2t(cache.text), + 'rendered': (cache.syntax_name or '').startswith('Rendered '), + }) + def highlight_stylesheet(self): self.start_response('200 OK', [('Content-Type', 'text/css')]) return [t2b(self.formatter.get_style_defs())] @@ -243,7 +275,7 @@ class Paste(object): path = self.environ['PATH_INFO'].split('/')[1:] module = path[0] or 'paste' - if module in ('list', 'paste', 'view', 'raw', 'static', 'highlight_stylesheet'): + if module in ('list', 'paste', 'view', 'raw', 'full', 'static', 'highlight_stylesheet'): self.path = path return getattr(self, module)() else: |