]>
git.ipfire.org Git - ipfire.org.git/blob - webapp/handlers_nopaste.py
6c2b75b011a76b5512cc7fd2ba47aa848d9cdb77
5 from handlers_base
import *
7 class NopasteCreateHandler(BaseHandler
):
8 MODES
= ("paste", "upload")
11 mode
= self
.get_argument("mode", "paste")
12 if not mode
in self
.MODES
:
13 raise tornado
.web
.HTTPError(400)
15 self
.render("nopaste/create.html", mode
=mode
,
16 max_size
=self
._max
_size
)
19 mode
= self
.get_argument("mode")
20 if not mode
in self
.MODES
:
21 raise tornado
.web
.HTTPError(400)
24 subject
= self
.get_argument("subject", None)
25 content
= self
.get_argument("content")
28 elif mode
== "upload":
31 for f
in self
.request
.files
.get("file"):
37 if len(content
) > self
._max
_size
:
38 raise tornado
.web
.HTTPError(400,
39 "You cannot upload more than %s bytes" % self
._max
_size
)
41 expires
= self
.get_argument("expires", "0")
43 expires
= int(expires
)
44 except (TypeError, ValueError):
47 uid
= self
.backend
.nopaste
.create(subject
, content
, type=type,
48 expires
=expires
, account
=self
.current_user
,
49 address
=self
.get_remote_ip())
52 return self
.redirect("/view/%s" % uid
)
54 raise tornado
.web
.HTTPError(500)
58 # Authenticated users are allowed to upload up to 10MB
60 return 25 * (1024 ** 2)
62 # The rest is only allowed to upload up to 2MB
63 return 2 * (1024 ** 2)
66 class NopasteRawHandler(BaseHandler
):
68 entry
= self
.backend
.nopaste
.get(uid
)
70 raise tornado
.web
.HTTPError(404)
73 self
.set_header("Content-Disposition", "inline; filename=\"%s\"" % entry
.subject
)
76 self
.set_header("Content-Type", entry
.mimetype
)
79 expires
= entry
.time_expires
or \
80 (datetime
.datetime
.utcnow() + datetime
.timedelta(days
=30))
83 self
.set_header("Expires", expires
)
86 max_age
= expires
- datetime
.datetime
.utcnow()
87 self
.set_header("Cache-Control", "public,max-age=%d" % max_age
.total_seconds())
90 content
= self
.backend
.nopaste
.get_content(entry
.uuid
)
94 class NopasteViewHandler(BaseHandler
):
96 entry
= self
.backend
.nopaste
.get(uid
)
98 raise tornado
.web
.HTTPError(404)
100 # Fetch the content if the output should be displayed
101 if entry
.mimetype
.startswith("text/"):
102 content
= self
.backend
.nopaste
.get_content(entry
.uuid
)
106 self
.render("nopaste/view.html", entry
=entry
, content
=content
)