summaryrefslogtreecommitdiff
path: root/pastepy.py
diff options
context:
space:
mode:
Diffstat (limited to 'pastepy.py')
-rw-r--r--pastepy.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/pastepy.py b/pastepy.py
index 9697fac..fafc81e 100644
--- a/pastepy.py
+++ b/pastepy.py
@@ -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]