def createRequestHandler(request): if request.get("bad"): return ErrorPages.websiteErrorPage(400, request.get("errormsg","")) else: for (prefix, handler) in URLHandlers: if request["raw-uri"][:len(prefix)] == prefix: request["uri-prefix-trigger"] = prefix request["uri-suffix"] = request["raw-uri"][len(prefix):] return handler(request) return ErrorPages.websiteErrorPage(404, "No resource handlers could be found for the requested URL.")
def createRequestHandler(request): if request.get("bad"): return ErrorPages.websiteErrorPage(400, request.get("errormsg", "")) else: for (prefix, handler) in URLHandlers: if request["raw-uri"][:len(prefix)] == prefix: request["uri-prefix-trigger"] = prefix request["uri-suffix"] = request["raw-uri"][len(prefix):] return handler(request) return ErrorPages.websiteErrorPage( 404, "No resource handlers could be found for the requested URL.")
def get_page(self, request, resource, post): if users.currentUser.isGroup("poster") == False: return ErrorPages.AccessDenied(request, resource) try: if (post.author != users.currentUser.firstName + " " + users.currentUser.lastName and users.currentUser.permissions < 3): return ErrorPages.AccessDenied(request, resource, users.currentUser) temp = loader.get_template("editpost.html") cont = Context({"post": post, "user": users.currentUser}) return temp.render(cont) except IndexError: return ErrorPages.PageNotFound(request, resource)
def get_page(self, request, resource, parent): r, w = parent.check_permissions() if not w: return ErrorPages.AccessDenied(request, resource) temp = loader.get_template("newpost.html") cont = Context({"user": users.currentUser}) result = temp.render(cont) return result
def get_page(self, request, resource, parent): r, w = self.check_permissions() if not r: return ErrorPages.AccessDenied(request, resource) temp = loader.get_template("updates.html") before = request.request.get("getBefore") after = request.request.get("getAfter") if before != "": updates = posts.getPostsBefore( datetime.strptime(before, "%Y-%m-%d-%H"), (users.currentUser.permissions < 1)) elif after != "": updates = posts.getPostsAfter( datetime.strptime(after, "%Y-%m-%d-%H"), (users.currentUser.permissions < 1)) else: updates = posts.getPostsBefore(datetime.now(), (users.currentUser.permissions < 1)) if (len(updates) > 0): nextPage = None prevPage = None if (after != ""): nextPage = updates[len(updates) - 1].date.strftime("%Y-%m-%d-%H") if (len(updates) == config.PostsPerPage + 1): prevPage = updates[1].date.strftime("%Y-%m-%d-%H") updates.pop(0) if (before != ""): prevPage = updates[0].date.strftime("%Y-%m-%d-%H") if (len(updates) == config.PostsPerPage + 1): nextPage = updates[config.PostsPerPage - 1].date.strftime("%Y-%m-%d-%H") updates.pop() else: if (len(updates) == config.PostsPerPage + 1): nextPage = updates[config.PostsPerPage - 1].date.strftime("%Y-%m-%d-%H") updates.pop() cont = Context({ "updates": updates, "user": users.currentUser, "nextPage": nextPage, "prevPage": prevPage }) else: cont = Context({"user": users.currentUser}) result = temp.render(cont).encode('utf-8') return result
def websiteSessionExample(request): sessionid = request["uri-suffix"] if Sessions.has_key(sessionid): session = Sessions[sessionid] if session["busy"]: return ErrorPages.websiteErrorPage(500, "Session handler busy") else: return session["handler"] else: session = { "busy": True, "handler": websiteSessionExampleComponent(sessionid) } Sessions[sessionid] = session return session["handler"]
def get_page(self, request, resource): #First, check permissions r, w = self.check_permissions() if r: #Check and see if we must ignore the request and fetch our own file if self.f is None: #apparently not pagefile = str(urllib.unquote(resource)).lower() else: #Ok, will get own file pagefile = self.f try: temp = loader.get_template(pagefile + ".html") except template.TemplateDoesNotExist: #Oops, never heard of that file! return ErrorPages.PageNotFound(request, resource) else: #Red Card! We have an intruder on our site! return ErrorPages.AccessDenied(request, resource) cont = Context({"user": users.currentUser}) return temp.render(cont)
def get_page(self, request, resource, post): temp = loader.get_template("post.html") if users.currentUser.permissions < 1 & post.restricted: return ErrorPages.AccessDenied(request, resource, users.currentUser) comments = posts.getComments(post) if comments.count() is 0: comments = None cont = Context({ "post": post, "comments": comments, "user": users.currentUser }) return temp.render(cont)
def get_page(self, request, resource): split = str(resource).split("/") title = urllib.unquote(split[1].encode('ascii')).decode('utf-8') date = urllib.unquote(split[0].encode('ascii')).decode('utf-8') try: post = posts.getPost(title, date) except IndexError: return ErrorPages.PageNotFound(request, resource) try: spoke = self.spokes[split[2].lower] result = spoke.get_page(request, split[2], post) except KeyError: result = self.defaultPage.get_page(request, split[2], post) return result
def get_page(self, request, resource, parent=None): r, w = self.check_permissions() if r: segment = resource.split("/")[0] split = resource[1:].split("/", 1) if len(split) > 1: remainder = split[1] else: remainder = "" if segment is None or segment == "": segment = "none" segment = segment.lower() if segment in self.spokes: spoke = self.spokes[segment] result = spoke.get_page(request, remainder, self) else: result = self.defaultPage(f=segment).get_page( request, remainder, self) else: return ErrorPages.AccessDenied(request, resource) return result
def get_page(self, request, resource, post): if (users.currentUser.permissions < 2): return ErrorPages.AccessDenied(request, resource, users.currentUser) email.mailToSubscribed(post) return "Re-emailed Everyone."
def get_page(self, request, resource, post): if post.author != users.currentUser.firstName + " " + users.currentUser.lastName and users.currentUser.permissions < 3: return ErrorPages.AccessDenied(request, resource) temp = loader.get_template("deletepost.html") cont = Context({"post": post, "user": users.currentUser}) return temp.render(cont)
class websiteMinimal(component): Inboxes = { "inbox": "UNUSED", "control": "UNUSED", "_fileread": "File data", "_filecontrol": "Signals from file reader" } Outboxes = { "outbox": "Response dictionaries", "signal": "UNUSED", "_fileprompt": "Get the file reader to do some reading", "_filesignal": "Shutdown the file reader" } def __init__(self, request): self.request = request super(websiteMinimal, self).__init__() def main(self): print "websiteMinimal.handler" filename = sanitizePath(self.request["raw-uri"]) #if os.path.isdir(homedirectory + filename): # if filename[-1:] != "/": filename += "/" # if os.path.isfile(homedirectory + filename + indexfilename): # filename += indexfilename # else: # yield websiteListFilesPage(filename) # return filetype = MimeTypes.workoutMimeType(filename) error = None try: if os.path.exists(homedirectory + filename) and not os.path.isdir(homedirectory + filename): resource = { "type": filetype, "statuscode": "200", #"length" : os.path.getsize(homedirectory + filename) } self.send(resource, "outbox") else: print "Error 404, is not file - " + homedirectory + filename error = 404 except OSError, e: error = 404 if error == 404: resource = ErrorPages.getErrorPage(404) resource["incomplete"] = False self.send(resource, "outbox") self.send(producerFinished(self), "signal") return self.filereader = IntelligentFileReader(homedirectory + filename, 50000, 10) self.link((self, "_fileprompt"), (self.filereader, "inbox")) self.link((self, "_filesignal"), (self.filereader, "control")) self.link((self.filereader, "outbox"), (self, "_fileread")) self.link((self.filereader, "signal"), (self, "_filecontrol")) self.addChildren(self.filereader) self.filereader.activate() yield 1 done = False while not done: yield 1 while self.dataReady("_fileread") and len( self.outboxes["outbox"]) < 3: msg = self.recv("_fileread") resource = {"data": msg} self.send(resource, "outbox") if len(self.outboxes["outbox"]) < 3: self.send("GARBAGE", "_fileprompt") while self.dataReady( "_filecontrol") and not self.dataReady("_fileread"): msg = self.recv("_filecontrol") if isinstance(msg, producerFinished): done = True self.pause() self.send(producerFinished(self), "signal")