]> git.ipfire.org Git - people/shoehn/ipfire.org.git/blobdiff - webapp/handlers_nopaste.py
Huge update for fireinfo, introducting talk and nopaste
[people/shoehn/ipfire.org.git] / webapp / handlers_nopaste.py
index ec29f7e2052e8b10edc56555962ba157791d83c2..3ae448ecdf8c0ec86963d90491ba77c8b471803c 100644 (file)
@@ -4,16 +4,47 @@ import tornado.web
 
 from handlers_base import *
 
-
-class NopasteIndexHandler(BaseHandler):
+class NopasteCreateHandler(BaseHandler):
        def get(self):
-               self.render("nopaste-index.html")
+               self.render("nopaste/create.html")
 
        def post(self):
-               pass
+               subject = self.get_argument("subject", None)
+               content = self.get_argument("content")
+
+               expires = self.get_argument("expires", "0")
+               try:
+                       expires = int(expires)
+               except (TypeError, ValueError):
+                       expires = None
+
+               uid = self.backend.nopaste.create(subject, content,
+                       expires=expires, account=self.current_user,
+                       address=self.get_remote_ip())
+
+               if uid:
+                       return self.redirect("/view/%s" % uid)
+
+               raise tornado.web.HTTPError(500)
+
+
+class NopasteRawHandler(BaseHandler):
+       def get(self, uid):
+               entry = self.backend.nopaste.get(uid)
+               if not entry:
+                       raise tornado.web.HTTPError(404)
+
+               # Set mimetype
+               self.set_header("Content-Type", entry.mimetype)
+
+               # Send content
+               self.finish(entry.content)
 
 
-class NopasteEntryHandler(BaseHandler):
-       def get(self, uuid):
-               pass
+class NopasteViewHandler(BaseHandler):
+       def get(self, uid):
+               entry = self.backend.nopaste.get(uid)
+               if not entry:
+                       raise tornado.web.HTTPError(404)
 
+               self.render("nopaste/view.html", entry=entry)