def forum_from_url(url): assert '/' == url[0] path = url[1:] if '/' in path: (forumurl, rest) = path.split("/", 1) else: forumurl = path return Forum.gql("WHERE url = :1", forumurl).get()
def forum_siteroot_tmpldir_from_url(url): assert '/' == url[0] path = url[1:] if '/' in path: (forumurl, rest) = path.split("/", 1) else: forumurl = path forum = Forum.gql("WHERE url = :1", forumurl).get() if not forum: return (None, None, None) siteroot = forum_root(forum) skin_name = forum.skin if skin_name not in SKINS: skin_name = SKINS[0] tmpldir = os.path.join("skins", skin_name) return (forum, siteroot, tmpldir)
def post(self): """ Responds to POST requests to the /manageforums URL """ self.init() if self.redir or not self.admin: return self.redirect("/") if not RE_VALID_URL.match( self.request.get('url') ) or \ not self.forum and Forum.gql("WHERE url = :1", self.request.get('url') ).get(): self.tvals.update({ 'errmsg': "Url contains illegal characters or is already used by another forum", 'hosturl': self.request.host_url, 'forum': { 'url': self.request.get('url'), 'title': self.request.get('title'), 'tagline': self.request.get('tagline'), 'sidebar': self.request.get('sidebar'), 'analytics_code': self.request.get('analytics_code') } }) return self.template_out(self.tpl, self.tvals) if self.forum: forum = self.forum forum.url = self.request.get('url') forum.title = self.request.get('title') forum.tagline = self.request.get('tagline') forum.sidebar = self.request.get('sidebar') forum.analytics_code = self.request.get('analytics_code') else: forum = Forum( url=self.request.get('url'), title=self.request.get('title'), tagline=self.request.get('tagline'), sidebar=self.request.get('sidebar'), analytics_code=self.request.get('analytics_code') ) forum.put() return self.redirect("/manageforums")
def post(self): self.user() if not self.is_admin: return self.redirect("/") forum_key = self.request.get('forum_key') forum = None if forum_key: forum = db.get(db.Key(forum_key)) if not forum: # invalid key - should not happen so go to top-level return self.redirect("/") vals = ['url','title', 'tagline', 'sidebar', 'group', 'disable', 'enable', 'analyticscode'] (url, title, tagline, sidebar, group, disable, enable, analytics_code) = req_get_vals(self.request, vals) if group not in Forum.GROUPES: # invalid group - should not happen so go to top-level return self.redirect("/") errmsg = None if not valid_forum_url(url): errmsg = "Url contains illegal characters" if not forum: forum_exists = Forum.gql("WHERE url = :1", url).get() if forum_exists: errmsg = "Forum with this url already exists" if errmsg: tvals = { 'urlclass' : "error", 'hosturl' : self.request.host_url, 'prevurl' : url, 'prevtitle' : title, 'prevtagline' : tagline, 'prevsidebar' : sidebar, 'prevanalyticscode' : analytics_code, 'forum_key' : forum_key, 'errmsg' : errmsg } return self.render_rest(tvals) title_or_url = title or url if forum: # update existing forum forum.url = url forum.title = title forum.tagline = tagline forum.sidebar = sidebar forum.group = group forum.analytics_code = analytics_code forum.put() msg = "Forum '%s' has been updated." % title_or_url else: # create a new forum Forum( url=url, title=title, tagline=tagline, sidebar=sidebar, group=group, analytics_code=analytics_code ).put() msg = "Forum '%s' has been created." % title_or_url url = "/manageforums?msg=%s" % urllib.quote(to_utf8(msg)) return self.redirect(url)