def getThreads(forum, page_no, page_size): keyname = 'forum:threads:%s:%d:%d' % (str(forum.key()), page_no, page_size) threads = memcache.get(keyname) if not threads: query = model.forum.ForumThread.all().filter("forum", forum) query = query.order("-last_post") if page_no == 0: it = query.run(limit=page_size) else: cursor = ctrl.findCursor(query, "forum-threads:%s" % (str(forum.key())), page_no, page_size) it = query.with_cursor(cursor) threads = [] n = 0 for thread in it: n += 1 if thread.is_sticky: # note: stickies will make the page slightly smaller, but it should # only ever be one or two anyway... continue threads.append(thread) if n >= page_size: break memcache.set(keyname, threads) return threads
def post(self, id=None): if id: forum = model.forum.Forum.get_by_id(int(id)) else: forum = model.forum.Forum( name=self.request.POST.get("forum-name"), slug=self.request.POST.get("forum-slug"), description=self.request.POST.get("forum-desc")) old_slug = forum.slug forum.name = self.request.POST.get("forum-name") forum.slug = self.request.POST.get("forum-slug") forum.description = self.request.POST.get("forum-desc") if self.request.POST.get("forum-moderators"): forum.moderators = [] for email in self.request.POST.get("forum-moderators").split(","): try: user = users.User(email.strip()) forum.moderators.append(user) except users.UserNotFoundError: pass if self.request.POST.get("forum-auto_subscribers"): forum.auto_subscribers = [] for email in self.request.POST.get("forum-auto_subscribers").split( ","): try: user = users.User(email.strip()) forum.auto_subscribers.append(user) except users.UserNotFoundError: pass if self.request.POST.get("forum-allowed_posters"): forum.allowed_posters = [] for email in self.request.POST.get("forum-allowed_posters").split( ","): try: user = users.User(email.strip()) forum.allowed_posters.append(user) except users.UserNotFoundError: pass forum.put() memcache.delete("forums") memcache.delete("forums:%s" % (old_slug)) memcache.delete("forums:%s" % (forum.slug)) self.redirect("/admin/forum/forums/edit/" + str(forum.key().id_or_name()))
def getStickyThreads(forum): keyname = 'forum:sticky-threads:%s' % (str(forum.key())) sticky_threads = memcache.get(keyname) if not sticky_threads: query = model.forum.ForumThread.all().filter("forum", forum) query = query.filter("is_sticky", True) query = query.order("-last_post") it = query.run() sticky_threads = [] for thread in it: sticky_threads.append(thread) memcache.set(keyname, sticky_threads) return sticky_threads
def post(self, id=None): if id: forum = model.forum.Forum.get_by_id(int(id)) else: forum = model.forum.Forum(name=self.request.POST.get("forum-name"), slug=self.request.POST.get("forum-slug"), description=self.request.POST.get("forum-desc")) old_slug = forum.slug forum.name = self.request.POST.get("forum-name") forum.slug = self.request.POST.get("forum-slug") forum.description = self.request.POST.get("forum-desc") if self.request.POST.get("forum-moderators"): forum.moderators = [] for email in self.request.POST.get("forum-moderators").split(","): try: user = users.User(email.strip()) forum.moderators.append(user) except users.UserNotFoundError: pass if self.request.POST.get("forum-auto_subscribers"): forum.auto_subscribers = [] for email in self.request.POST.get("forum-auto_subscribers").split(","): try: user = users.User(email.strip()) forum.auto_subscribers.append(user) except users.UserNotFoundError: pass if self.request.POST.get("forum-allowed_posters"): forum.allowed_posters = [] for email in self.request.POST.get("forum-allowed_posters").split(","): try: user = users.User(email.strip()) forum.allowed_posters.append(user) except users.UserNotFoundError: pass forum.put() memcache.delete("forums") memcache.delete("forums:%s" % (old_slug)) memcache.delete("forums:%s" % (forum.slug)) self.redirect("/admin/forum/forums/edit/"+str(forum.key().id_or_name()))