summaryrefslogtreecommitdiff
path: root/pastepy.py
diff options
context:
space:
mode:
Diffstat (limited to 'pastepy.py')
-rw-r--r--pastepy.py34
1 files changed, 33 insertions, 1 deletions
diff --git a/pastepy.py b/pastepy.py
index 32a2f74..734ba54 100644
--- a/pastepy.py
+++ b/pastepy.py
@@ -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: