#!/usr/bin/python
-import magic
-
from .misc import Object
class Nopaste(Object):
- def create(self, subject, content, type="text", expires=None, account=None, address=None):
+ def create(self, subject, content, mimetype="text", expires=None, account=None, address=None):
self._cleanup_database()
uid = None
if account:
uid = account.uid
- if type == "text":
- mimetype = "text/plain"
-
- elif type == "file":
- mimetype = self._guess_mimetype(content)
-
# http://blog.00null.net/easily-generating-random-strings-in-postgresql/
res = self.db.get("INSERT INTO nopaste(uuid, subject, content, time_expires, address, \
uid, mimetype, size) VALUES(random_slug(), %s, %s, \
if res:
return res.uuid
- def _guess_mimetype(self, buf):
- ms = magic.open(magic.NONE)
- ms.load()
-
- # Return the mime type
- ms.setflags(magic.MAGIC_MIME_TYPE)
-
- try:
- return ms.buffer(buf)
- finally:
- ms.close()
-
def get(self, uuid):
res = self.db.get("SELECT uuid, subject, time_created, time_expires, address, uid, \
mimetype, views, size FROM nopaste WHERE uuid = %s AND (CASE WHEN time_expires \
if not mode in self.MODES:
raise tornado.web.HTTPError(400)
+ mimetype = "text/plain"
+
if mode == "paste":
subject = self.get_argument("subject", None)
content = self.get_argument("content")
- type = "text"
elif mode == "upload":
- type = "file"
-
for f in self.request.files.get("file"):
- subject = f.filename
- content = f.body
+ subject = f.filename
+ content = f.body
+ mimetype = f.content_type
break
# Check maximum size
except (TypeError, ValueError):
expires = None
- uid = self.backend.nopaste.create(subject, content, type=type,
- expires=expires, account=self.current_user,
- address=self.get_remote_ip())
+ uid = self.backend.nopaste.create(subject, content, mimetype=mimetype,
+ expires=expires, account=self.current_user, address=self.get_remote_ip())
if uid:
return self.redirect("/view/%s" % uid)