]>
git.ipfire.org Git - ipfire.org.git/blob - src/web/nopaste.py
6 from . import handlers_base
as base
7 from . import ui_modules
9 class CreateHandler(base
.BaseHandler
):
10 MODES
= ("paste", "upload")
13 mode
= self
.get_argument("mode", "paste")
14 if not mode
in self
.MODES
:
15 raise tornado
.web
.HTTPError(400)
17 self
.render("nopaste/create.html", mode
=mode
,
18 max_size
=self
._max
_size
)
21 mode
= self
.get_argument("mode")
22 if not mode
in self
.MODES
:
23 raise tornado
.web
.HTTPError(400)
25 mimetype
= "text/plain"
28 subject
= self
.get_argument("subject", None)
29 content
= self
.get_argument("content")
31 elif mode
== "upload":
32 for f
in self
.request
.files
.get("file"):
35 mimetype
= f
.content_type
39 if len(content
) > self
._max
_size
:
40 raise tornado
.web
.HTTPError(400,
41 "You cannot upload more than %s bytes" % self
._max
_size
)
43 expires
= self
.get_argument("expires", "0")
45 expires
= int(expires
)
46 except (TypeError, ValueError):
49 uid
= self
.backend
.nopaste
.create(subject
, content
, mimetype
=mimetype
,
50 expires
=expires
, account
=self
.current_user
, address
=self
.get_remote_ip())
53 return self
.redirect("/view/%s" % uid
)
55 raise tornado
.web
.HTTPError(500)
59 # Authenticated users are allowed to upload up to 25MB
61 return 25 * (1024 ** 2)
63 # The rest is only allowed to upload up to 2MB
64 return 2 * (1024 ** 2)
67 class RawHandler(base
.BaseHandler
):
69 entry
= self
.backend
.nopaste
.get(uid
)
71 raise tornado
.web
.HTTPError(404)
74 self
.set_header("Content-Disposition", "inline; filename=\"%s\"" % entry
.subject
)
77 self
.set_header("Content-Type", entry
.mimetype
)
80 self
.set_expires(3600)
83 content
= self
.backend
.nopaste
.get_content(entry
.uuid
)
87 class ViewHandler(auth
.CacheMixin
, base
.BaseHandler
):
89 entry
= self
.backend
.nopaste
.get(uid
)
91 raise tornado
.web
.HTTPError(404)
93 # Fetch the content if the output should be displayed
94 if entry
.mimetype
.startswith("text/"):
95 content
= self
.backend
.nopaste
.get_content(entry
.uuid
)
100 self
.set_expires(3600)
102 self
.render("nopaste/view.html", entry
=entry
, content
=content
)
105 class CodeModule(ui_modules
.UIModule
):
106 def render(self
, content
):
107 return self
.render_string("nopaste/modules/code.html", content
=content
)
109 def javascript_files(self
):
110 return "js/prettify.js"
113 return "css/prettify.css"
115 def embedded_javascript(self
):