diff options
Diffstat (limited to 'pastepy.py')
-rw-r--r-- | pastepy.py | 30 |
1 files changed, 17 insertions, 13 deletions
@@ -7,8 +7,8 @@ import os import random import settings -import templates +import jinja2 try: import markdown has_markdown = True @@ -57,13 +57,20 @@ class Paste(object): random.seed() + self.template_env = jinja2.Environment(loader = jinja2.FileSystemLoader('templates')) + + def render_template(self, name, args): + template = self.template_env.get_template(name) + data = template.render(**args).encode('utf-8') + self.start_response('200 OK', [('Content-Type', 'text/html; charset=UTF-8'), ('Content-Length', str(len(data)))]) + return [data] + def message(self, msg, title = 'Message'): - self.start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')]) - return [str(templates.message(searchList = { + return self.render_template('message.html', { 'title': '%s – %s' % (settings.pastebin_name, title), 'header': title, 'text': msg, - }))] + }) def paste(self): c = Cookie.SimpleCookie(self.environ['HTTP_COOKIE'] if 'HTTP_COOKIE' in self.environ else None) @@ -75,8 +82,7 @@ class Paste(object): return self.add_paste(mp) else: return self.message('Invalid type "%s".' % mp['type'].value, 'Error') - self.start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')]) - return [str(templates.paste(searchList = { + return self.render_template('paste.html', { 'title': settings.pastebin_name, 'header': settings.pastebin_name, 'lexers': self.lexers, @@ -84,7 +90,7 @@ class Paste(object): 'syntax': c['syntax'].value if 'syntax' in c else settings.default, 'remember_me': 'nick' in c, 'remember_syntax': 'syntax' in c, - }))] + }) def preview(self, mp): try: @@ -92,8 +98,7 @@ class Paste(object): except UnknownSyntaxError: return self.message('Could not find lexer "%s".' % mp['syntax'].value, 'Error') - self.start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')]) - return [str(templates.view(searchList = { + return self.render_template('view.html', { 'title': settings.pastebin_name, 'header': '%s – Preview' % settings.pastebin_name, 'hash': None, @@ -103,7 +108,7 @@ class Paste(object): 'pastetitle': mp['title'].value.decode('utf8') or 'Untitled', 'text': text, 'rendered': (lexername or '').startswith('Rendered '), - }))] + }) def add_paste(self, mp): nick = mp['nick'].value.decode('utf8') or None @@ -172,8 +177,7 @@ class Paste(object): finally: session.close() - self.start_response('200 OK', [('Content-Type', 'text/html; charset=utf-8')]) - return [str(templates.view(searchList = { + return self.render_template('view.html', { 'title': '%s – View paste – %s' % (settings.pastebin_name, paste.title or 'Untitled'), 'header': '%s – View paste' % settings.pastebin_name, 'hash': hash, @@ -183,7 +187,7 @@ class Paste(object): 'pastetitle': paste.title or 'Untitled', 'text': cache.text, 'rendered': (cache.syntax_name or '').startswith('Rendered '), - }))] + }) def raw(self): hash = self.path[1] |