Esempio n. 1
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=')
Esempio 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=')
Esempio n. 3
0
 def get(self, *args, **kwargs):
     posts = BlogPost.select()
     for post in posts:
         post.labels = BlogPostLabel.get_post_label(post)
         post.category_name = post.category.name
     self.render('blog/post-opt.html',
                 posts=posts)
Esempio n. 4
0
 def get(self, post_id, *args, **kwargs):
     post = BlogPost.get(BlogPost.id == post_id)
     # post.content_html = markdowner.convert(post.content)
     post.content_html = markdown.markdown(
         post.content, extensions=[
             'markdown.extensions.fenced_code',
         ])
     post.category_name = post.category.name
     post.labels = BlogPostLabel.get_post_label(post)
     self.render('blog/post-detail.html', post=post)
Esempio n. 5
0
 def get(self, slug, *args, **kwargs):
     post = BlogPost.get_by_slug(slug)
     if not post:
         self.redirect404()
         return
     # post.content_html = markdowner.convert(post.content)
     post.content_html = markdown.markdown(post.content, extensions=['markdown.extensions.fenced_code', ])
     post.category_name = post.category.name
     post.labels  = BlogPostLabel.get_post_label(post)
     self.render('blog/post-detail.html',
                 post=post)
Esempio n. 6
0
 def get(self, slug, *args, **kwargs):
     post = BlogPost.get_by_slug(slug)
     if not post:
         self.redirect404()
         return
     # post.content_html = markdowner.convert(post.content)
     post.content_html = markdown.markdown(
         post.content, extensions=[
             'markdown.extensions.fenced_code',
         ])
     post.category_name = post.category.name
     post.labels = BlogPostLabel.get_post_label(post)
     self.render('blog/post-detail.html', post=post)
Esempio n. 7
0
 def post(self, *args, **kwargs):
     json_data = get_cleaned_json_data(self, ['opt', 'data'])
     data = json_data['data']
     opt = json_data['opt']
     # 获取文章详情
     if opt == 'get-post':
         try:
             post = BlogPost.get(BlogPost.id == int(data['post']),
                                 BlogPost.is_del == False)
         except:
             self.write(json_result(1, '不存在该post'))
             return
         else:
             self.write(
                 json_result(
                     0, {
                         'title': post.title,
                         'content': post.content,
                         'labels': BlogPostLabel.get_post_label(post),
                         'category': post.category.name
                     }))
             return
     # 更新文章
     elif opt == 'update-post':
         try:
             post = BlogPost.get(BlogPost.id == int(data['post']),
                                 BlogPost.is_del == False)
         except:
             self.write(json_result(1, '不存在该post'))
             return
         else:
             cate = BlogPostCategory.get_by_name(data['category'])
             post.category = cate
             post.title = data['title']
             post.content = data['content']
             post.save()
             BlogPostLabel.update_post_label(data['labels'], post)
             self.write(json_result(0, 'success'))
             return
     # 创建文章
     elif opt == 'create-post':
         cate = BlogPostCategory.get_by_name(data['category'])
         post = BlogPost.create(title=data['title'],
                                category=cate,
                                content=data['content'])
         BlogPostLabel.add_post_label(data['labels'], post)
         self.write(json_result(0, 'success'))
         return
     else:
         self.write(json_result(1, 'opt不支持'))
Esempio n. 8
0
 def post(self, *args, **kwargs):
     json_data = get_cleaned_json_data(self, ['opt', 'data'])
     data = json_data['data']
     opt = json_data['opt']
     # 获取文章详情
     if opt == 'get-post':
         try:
             post = BlogPost.get(BlogPost.id == int(data['post']), BlogPost.is_del == False)
         except:
             self.write(json_result(1, '不存在该post'))
             return
         else:
             self.write(json_result(0, {'title': post.title,
                            'content': post.content,
                            'labels': BlogPostLabel.get_post_label(post),
                            'category': post.category.name}))
             return
     # 更新文章
     elif opt == 'update-post':
         try:
             post = BlogPost.get(BlogPost.id == int(data['post']), BlogPost.is_del == False)
         except:
             self.write(json_result(1, '不存在该post'))
             return
         else:
             cate = BlogPostCategory.get_by_name(data['category'])
             post.category = cate
             post.title = data['title']
             post.content = data['content']
             post.save()
             BlogPostLabel.update_post_label(data['labels'], post)
             self.write(json_result(0, 'success'))
             return
     # 创建文章
     elif opt == 'create-post':
         cate = BlogPostCategory.get_by_name(data['category'])
         post = BlogPost.create(title=data['title'],
                                category=cate,
                                content=data['content'])
         BlogPostLabel.add_post_label(data['labels'], post)
         self.write(json_result(0, 'success'))
         return
     else:
         self.write(json_result(1, 'opt不支持'))
Esempio n. 9
0
 def get(self, *args, **kwargs):
     posts = BlogPost.select()
     for post in posts:
         post.labels = BlogPostLabel.get_post_label(post)
         post.category_name = post.category.name
     self.render('blog/post-opt.html', posts=posts)