]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/nopaste.py
7 from . import ui_modules
9 class CreateHandler(auth
.CacheMixin
, base
.BaseHandler
):
10 MODES
= ("paste", "upload")
14 mode
= self
.get_argument("mode", "paste")
15 if not mode
in self
.MODES
:
16 raise tornado
.web
.HTTPError(400)
18 self
.render("nopaste/create.html", mode
=mode
,
19 max_size
=self
._max
_size
)
23 mode
= self
.get_argument("mode")
24 if not mode
in self
.MODES
:
25 raise tornado
.web
.HTTPError(400)
27 mimetype
= "text/plain"
30 subject
= self
.get_argument("subject", None)
31 content
= self
.get_argument("content", "").encode("utf-8")
33 elif mode
== "upload":
34 for f
in self
.request
.files
.get("file"):
37 mimetype
= f
.content_type
41 if len(content
) > self
._max
_size
:
42 raise tornado
.web
.HTTPError(400,
43 "You cannot upload more than %s bytes" % self
._max
_size
)
45 expires
= self
.get_argument("expires", "0")
47 expires
= int(expires
)
48 except (TypeError, ValueError):
51 uid
= self
.backend
.nopaste
.create(subject
, content
, mimetype
=mimetype
,
52 expires
=expires
, account
=self
.current_user
, address
=self
.get_remote_ip())
55 return self
.redirect("/view/%s" % uid
)
57 raise tornado
.web
.HTTPError(500)
61 # Authenticated users are allowed to upload up to 25MB
63 return 25 * (1024 ** 2)
65 # The rest is only allowed to upload up to 2MB
66 return 2 * (1024 ** 2)
69 class RawHandler(base
.BaseHandler
):
72 entry
= self
.backend
.nopaste
.get(uid
)
74 raise tornado
.web
.HTTPError(404)
77 self
.set_header("Content-Disposition", "inline; filename=\"%s\"" % entry
.subject
)
80 self
.set_header("Content-Type", entry
.mimetype
)
83 self
.set_expires(3600)
86 content
= self
.backend
.nopaste
.get_content(entry
.uuid
)
90 class ViewHandler(auth
.CacheMixin
, base
.BaseHandler
):
93 entry
= self
.backend
.nopaste
.get(uid
)
95 raise tornado
.web
.HTTPError(404)
97 # Fetch the content if the output should be displayed
98 if entry
.mimetype
.startswith("text/"):
99 content
= self
.backend
.nopaste
.get_content(entry
.uuid
)
104 self
.set_expires(3600)
106 self
.render("nopaste/view.html", entry
=entry
, content
=content
)
109 class CodeModule(ui_modules
.UIModule
):
110 def render(self
, content
):
111 return self
.render_string("nopaste/modules/code.html", content
=content
)
113 def javascript_files(self
):
114 return "js/prettify.js"
117 return "css/prettify.css"
119 def embedded_javascript(self
):