Ejemplo n.º 1
0
 def get(self, topic_id, *args, **kwargs):
     try:
         topic = PostTopic.get(PostTopic.str == topic_id)
     except PostTopic.DoesNotExist:
         self.redirect("/static/404.html")
         return
     current_page = get_cleaned_query_data(self, [
         'page',
     ], blank=True)['page']
     if current_page:
         current_page = int(current_page)
         if current_page < 1:
             self.redirect("/static/404.html")
             return
         posts, page_number_limit = Post.list_by_topic(
             topic, page_number=current_page)
     else:
         current_page = 1
         posts, page_number_limit = Post.list_by_topic(topic)
     top_posts, _ = Post.list_top()
     pages = get_page_nav(current_page, page_number_limit,
                          config.default_page_limit)
     self.render('index/index.html',
                 posts=posts,
                 top_posts=top_posts,
                 topic_category_cache=topic_category_cache,
                 hot_post_cache=hot_post_cache,
                 systatus=system_status_cache,
                 current_topic=topic,
                 pages=pages,
                 pages_prefix_url='/topic/' + topic.str + '?page=')
Ejemplo n.º 2
0
    def get(self, *args, **kwargs):
        current_page = get_cleaned_query_data(self, [
            'page',
        ], blank=True)['page']
        current_page = get_page_number(current_page)
        posts, page_number_limit = BlogPost.list_recently(
            page_number=current_page)
        for post in posts:
            post.labels = BlogPostLabel.get_post_label(post)
        pages = get_page_nav(current_page, page_number_limit,
                             config.default_page_limit)

        # 使用到联合、分组等查询, 得到每个分类下文章个数, 得到每个标签下文章个数
        # select category_id, blogpostcategory.name, count(blogpost.id) from blogpost inner join blogpostcategory on blogpost.category_id=blogpostcategory.id group by category_id;
        categorys = BlogPost.select(BlogPostCategory.name, fn.COUNT(BlogPost.id).alias('count'))\
            .join(BlogPostCategory, on=(BlogPostCategory.id == BlogPost.category))\
            .group_by(BlogPost.category)
        for category in categorys:
            category.name = category.category.name

        labels = BlogPostLabel.select(
            BlogPostLabel.name,
            fn.COUNT(BlogPostLabel.post).alias('count')).where(
                BlogPostLabel.is_del == False).group_by(BlogPostLabel.name)

        self.render('blog/index.html',
                    posts=posts,
                    labels=labels,
                    categorys=categorys,
                    pages=pages,
                    pages_prefix_url='/blog?page=')
Ejemplo n.º 3
0
    def get(self, *args, **kwargs):
        # profiling 性能分析
        # from profiling.tracing import TracingProfiler
        #
        # # profile your program.
        # profiler = TracingProfiler()
        # profiler.start()

        current_page = get_cleaned_query_data(self, [
            'page',
        ], blank=True)['page']
        current_page = get_page_number(current_page)
        posts, page_number_limit = Post.list_recently(page_number=current_page)
        top_posts, _ = Post.list_top()
        pages = get_page_nav(current_page, page_number_limit,
                             config.default_page_limit)
        self.render('index/index.html',
                    posts=posts,
                    top_posts=top_posts,
                    topic_category_cache=topic_category_cache,
                    hot_post_cache=hot_post_cache,
                    systatus=system_status_cache,
                    current_topic=None,
                    pages=pages,
                    pages_prefix_url='/?page=')
Ejemplo n.º 4
0
    def get(self, category_name, *args, **kwargs):
        try:
            category = BlogPostCategory.get(BlogPostCategory.name == category_name)
        except BlogPostCategory.DoesNotExist:
            self.redirect("/static/404.html")
            return
        current_page = get_cleaned_query_data(self, ['page',], blank=True)['page']
        current_page = get_page_number(current_page)
        posts, page_number_limit = BlogPost.list_by_category(category, page_number=current_page)
        for post in posts:
            post.labels = BlogPostLabel.get_post_label(post)
        pages = get_page_nav(current_page, page_number_limit, config.default_page_limit)

        # 使用到联合、分组等查询, 得到每个分类下文章个数, 得到每个标签下文章个数
        # select category_id, blogpostcategory.name, count(blogpost.id) from blogpost inner join blogpostcategory on blogpost.category_id=blogpostcategory.id group by category_id;
        categorys = BlogPost.select(BlogPostCategory.name, fn.COUNT(BlogPost.id).alias('count'))\
            .join(BlogPostCategory, on=(BlogPostCategory.id == BlogPost.category))\
            .group_by(BlogPost.category)
        for category in categorys:
            category.name = category.category.name

        labels = BlogPostLabel.select(BlogPostLabel.name, fn.COUNT(BlogPostLabel.post).alias('count')).where(BlogPostLabel.is_del == False).group_by(BlogPostLabel.name)

        self.render('blog/index.html',
                    posts=posts,
                    labels=labels,
                    categorys=categorys,
                    pages=pages,
                    pages_prefix_url='/blog/category/'+category_name+'?page=')
Ejemplo n.º 5
0
def get_topic_index_info(topic_id, current_page, page_limit=config.default_page_limit):
    try:
        topic = PostTopic.get(PostTopic.str == topic_id)
    except PostTopic.DoesNotExist:
        return None
    current_page = get_page_number(current_page)
    posts, page_number_limit = Post.list_by_topic(topic, page_number=current_page)
    top_posts, _ = Post.list_top()
    pages = get_page_nav(current_page, page_number_limit, page_limit)
    return topic, posts, top_posts, pages
Ejemplo n.º 6
0
def get_topic_index_info(topic_id,
                         current_page,
                         page_limit=config.default_page_limit):
    try:
        topic = PostTopic.get(PostTopic.str == topic_id)
    except PostTopic.DoesNotExist:
        return None
    current_page = get_page_number(current_page)
    posts, page_number_limit = Post.list_by_topic(topic,
                                                  page_number=current_page)
    top_posts, _ = Post.list_top()
    pages = get_page_nav(current_page, page_number_limit, page_limit)
    return topic, posts, top_posts, pages
Ejemplo n.º 7
0
def get_index_info(current_page, page_limit=config.default_page_limit):
    current_page = get_page_number(current_page)
    posts, page_number_limit = Post.list_recently(page_number=current_page)
    top_posts, _ = Post.list_top()
    pages = get_page_nav(current_page, page_number_limit, page_limit)
    return posts, top_posts, pages
Ejemplo n.º 8
0
def get_index_info(current_page, page_limit=config.default_page_limit):
    current_page = get_page_number(current_page)
    posts, page_number_limit = Post.list_recently(page_number=current_page)
    top_posts, _ = Post.list_top()
    pages = get_page_nav(current_page, page_number_limit, page_limit)
    return posts, top_posts, pages