Example #1
0
def getPostsForUser(profile, include_alliance_posts, page_no, page_size):
  """Gets the posts that the given user has made.

  Args:
    profile The profile of the user whose posts we're after.
    include_alliance_posts: If True, we'll include posts the user has made to their alliance forum."""
  if not profile.user:
    # The user will need to log in to the website in order to set the user.
    return []

  user_id = profile.key().name()
  keyname = 'forum:threads-per-user:%s:%d:%d:%d' % (str(user_id), int(include_alliance_posts), page_no, page_size)
  posts = memcache.get(keyname)
  if not posts:
    query = model.forum.ForumPost.all().filter("user", profile.user)
    if not include_alliance_posts and profile.alliance_id:
      alliance = model.profile.Alliance.Fetch(profile.realm_name, profile.alliance_id)
      if alliance:
        alliance_forum = getAllianceForum(profile.realm_name, alliance)
        query.filter("forum !=", alliance_forum).order("forum")
    query = query.order("-posted")

    if page_no == 0:
      it = query.run(limit=page_size)
    else:
      cursor = ctrl.findCursor(query, "forum-posts-for-user:%s:%d" % (str(user_id), int(include_alliance_posts)), page_no, page_size)
      it = query.with_cursor(cursor)

    posts = []
    for post in it:
      posts.append(post)

    memcache.set(keyname, posts)

  return posts
Example #2
0
def getPosts(pageNo=0, pageSize=5, includeUnpublished=False):
    keyname = 'posts:%d:%d:%d' % (pageNo, pageSize, int(includeUnpublished))
    posts = memcache.get(keyname)
    if not posts:
        query = model.blog.Post.all()
        if not includeUnpublished:
            query = query.filter("isPublished", True)
        query = query.order('-posted')

        if pageNo == 0:
            it = query.run(limit=pageSize)
        else:
            cursor = ctrl.findCursor(
                query, "blog-posts:%d" % (int(includeUnpublished)), pageNo,
                pageSize)
            it = query.with_cursor(cursor)

        posts = []
        for post in it:
            posts.append(post)
            if len(posts) >= pageSize:
                break

        # also, save the cursor for the next page, since it's likely that the user will want to navigate to the
        # next page anyway
        memcache.set(
            'post-page-cursor:%d:%d:%d' %
            (pageNo + 1, pageSize, int(includeUnpublished)), query.cursor())

        memcache.set(keyname, posts)

    return posts
Example #3
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
Example #4
0
def getPosts(pageNo=0, pageSize=5, includeUnpublished=False):
  keyname = 'posts:%d:%d:%d' % (pageNo, pageSize, int(includeUnpublished))
  posts = memcache.get(keyname)
  if not posts:
    query = model.blog.Post.all()
    if not includeUnpublished:
      query = query.filter("isPublished", True)
    query = query.order('-posted')

    if pageNo == 0:
      it = query.run(limit=pageSize)
    else:
      cursor = ctrl.findCursor(query, "blog-posts:%d" % (int(includeUnpublished)), pageNo, pageSize)
      it = query.with_cursor(cursor)

    posts = []
    for post in it:
      posts.append(post)
      if len(posts) >= pageSize:
        break

    # also, save the cursor for the next page, since it's likely that the user will want to navigate to the
    # next page anyway
    memcache.set('post-page-cursor:%d:%d:%d' % (pageNo+1, pageSize, int(includeUnpublished)), query.cursor())

    memcache.set(keyname, posts)

  return posts
Example #5
0
def getPosts(forum, forum_thread, page_no, page_size):
  keyname = 'forum:posts:%s:%d:%d' % (str(forum_thread.key()), page_no, page_size)
  posts = memcache.get(keyname)
  if not posts:
    query = model.forum.ForumPost.all().ancestor(forum_thread)
    query = query.order("posted")

    if page_no == 0:
      it = query.run(limit=page_size)
    else:
      cursor = ctrl.findCursor(query, "forum-posts:%s" % (str(forum_thread.key())), page_no, page_size)
      it = query.with_cursor(cursor)

    posts = []
    for post in it:
      posts.append(post)
      if len(posts) >= page_size:
        break

    memcache.set(keyname, posts)

  return posts