Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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()))
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
  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()))