コード例 #1
0
ファイル: handlers.py プロジェクト: hearain528/blog
def api_article_add(*, request, title, category, tag, content, summary):
    r = web.Response()
    blog = Blogs(title = title, user_id = getWebCookie(request, 'id'), summary = summary, content = content)
    id = yield from blog.save()
    category = urldecode(category)
    category = category[0].split(',')
    tags = tag.split('/')
    if id > 0:
        #文章分类插入
        for i in category:
            blog_category = BlogCategory(blog_id = id, category_id = i)
            blog_category_id = yield from blog_category.save()
        #标签分类插入
        for t in tags:
            t = t.strip()
            tag_title = yield from Tag.findAll('title=?', [t])
            #如果标签存在,则插入博客标签表,若不存在,则两张表都要插入
            if len(tag_title) > 0:
                tag_id = tag_title[0].get('id')
            else:
                tag = Tag(title = t)
                tag_id = yield from tag.save()
            blog_tag = BlogTag(blog_id = id, tag_id = tag_id)
            blog_tag_id = yield from blog_tag.save()
    if id > 0 and blog_category_id > 0 and blog_tag_id > 0:
        result = APIResult(1, '', '发布成功')
    else:
        result = APIResult(0, '', '发布失败')
    return jsonResult(r, result)
コード例 #2
0
ファイル: handlers.py プロジェクト: hearain528/blog
def api_blogList(*, page = 1):
    r = web.Response()
    num = yield from Blogs.findNumber('count(id)')
    p = Page(num, int(page))
    if num == 0:
        data = dict(page = class_to_dict(p), blogs = ())
    else:
        blogs = yield from Blogs.findAll(orderBy = 'create_time desc', limit = (p.offset, p.limit))
        for row in blogs:
            #获取文章分类
            category_sql = ['%s %s' % ('select GROUP_CONCAT(B.id) category_id,GROUP_CONCAT(B.title) category_title from blog_category as A ',
            'left join category as B on A.category_id = B.id')]
            category_sql.append('where')
            category_sql.append('blog_id=?')
            category = yield from select(category_sql, [row.id])
            #获取标签分类
            tag_sql = ['%s %s' % ('select GROUP_CONCAT(B.id) tag_id,GROUP_CONCAT(B.title) tag_title from blog_tag as A',
                'left join tag as B on A.tag_id = B.id ')]
            tag_sql.append('where')
            tag_sql.append('blog_id=?')
            tag = yield from select(tag_sql, [row.id])
            #获取文章评论数
            comment_num = yield from Comments.findNumber('count(id)', 'display = 1 and blog_id=?', [row.id])
            if category[0].get('category_id') is not None:
                row.category_id = category[0].get('category_id').split(',')
            if category[0].get('category_title') is not None:
                row.category_title = category[0].get('category_title').split(',')
            if tag[0].get('tag_id') is not None:
                row.tag_id = tag[0].get('tag_id').split(',')
            if tag[0].get('tag_title') is not None:
                row.tag_title = tag[0].get('tag_title').split(',')
            row.comment_num = comment_num
        data = dict(page = class_to_dict(p), blogs = blogs)
    result = APIResult(1, data)
    return jsonResult(r, result)
コード例 #3
0
ファイル: handlers.py プロジェクト: cinuor/MyWebApp
def api_create_blog(request, name, summary, content):
	if not name or not name.strip():
		raise APIValueError('name','empty name')
	if not summary or not summary.strip():
		raise APIValueError('summary', 'empty summary')
	if not content or not content.strip():
		raise APIValueError('content', 'empty content')

	blog = Blogs(user_id=request.__user__.id, user_name=request.__user__.name, user_image=request.__user__.image, name=name.strip(), summary=summary.strip(), content=content.strip())
	yield from blog.save()

	r = aiohttp.web.Response()
	r.content_type = 'application/json'
	r.body = json.dumps(blog,ensure_ascii=False).encode('utf-8')
	return r
コード例 #4
0
ファイル: handlers.py プロジェクト: hearain528/blog
def api_article_delete(*, request, article_id):
    r = web.Response()
    #删除文章表里面的数据
    blog = Blogs(id = article_id)
    blog_result = yield from blog.delete()
    #删除blog_tag表里面的数据
    blog_tag_sql = 'delete from blog_tag where blog_id = ?'
    yield from execute(blog_tag_sql, [article_id])
    #删除blog_category表里面的数据
    blog_category_sql = 'delete from blog_category where blog_id = ?'
    yield from execute(blog_category_sql, [article_id])
    if int(article_id) > 0 and int(blog_result) > 0:
        result = APIResult(1, '', '删除成功')
    else:
        result = APIResult(0, '', '删除失败')
    return jsonResult(r, result)
コード例 #5
0
ファイル: handlers.py プロジェクト: hearain528/blog
def edit_article(*, request, blog_id):
    blog = yield from Blogs.findOne(blog_id)
    if blog is not None:
        # 获取文章分类
        category_sql = ['%s %s' % (
            'select GROUP_CONCAT(B.id) category_id,GROUP_CONCAT(B.title) category_title from blog_category as A ',
            'left join category as B on A.category_id = B.id')]
        category_sql.append('where')
        category_sql.append('blog_id=?')
        category = yield from select(category_sql, [blog_id])
        # 获取文章标签
        tag_sql = ['%s %s' % ('select GROUP_CONCAT(B.id) tag_id,GROUP_CONCAT(B.title) tag_title from blog_tag as A',
                              'left join tag as B on A.tag_id = B.id ')]
        tag_sql.append('where')
        tag_sql.append('blog_id=?')
        tag = yield from select(tag_sql, [blog_id])

        if len(category) > 0:
            if category[0].get('category_id') is not None:
                blog['category_id'] = category[0].get('category_id').split(',')
            if category[0].get('category_title') is not None:
                blog['category_title'] = category[0].get('category_title').split(',')
        if len(tag) > 0:
            if tag[0].get('tag_id') is not None:
                blog['tag_id'] = tag[0].get('tag_id').split(',')
            if tag[0].get('tag_title') is not None:
                blog['tag_title'] = tag[0].get('tag_title').split(',')
        logging.info(blog)
        #blog['content'] = """%s""" % (blog['content'])
        return display('edit_article', {'blog': blog})
    else:
        return redirect('/404')
コード例 #6
0
ファイル: handlers.py プロジェクト: cinuor/MyWebApp
def get_blog(id):
	blog = yield from Blogs.find('id=?',[id])
	comments = yield from Comment.findAll('blog_id=?',[id],orderby='created_at DESC')
	return {
	'__template__':'blog.html',
	'blog':blog,
	'comments':comments
	}
コード例 #7
0
ファイル: handlers.py プロジェクト: hearain528/blog
def get_blog(*, request, id):
    blog = yield from Blogs.findOne(id)
    if blog is not None:
        # 访问次数加1
        sql = 'update blogs set view_count = view_count + 1 where id = ?'
        yield from execute(sql, [id])
        #获取文章分类
        category_sql = ['%s %s' % (
            'select GROUP_CONCAT(B.id) category_id,GROUP_CONCAT(B.title) category_title from blog_category as A ',
            'left join category as B on A.category_id = B.id')]
        category_sql.append('where')
        category_sql.append('blog_id=?')
        category = yield from select(category_sql, [id])
        #获取文章标签
        tag_sql = ['%s %s' % ('select GROUP_CONCAT(B.id) tag_id,GROUP_CONCAT(B.title) tag_title from blog_tag as A',
                              'left join tag as B on A.tag_id = B.id ')]
        tag_sql.append('where')
        tag_sql.append('blog_id=?')
        tag = yield from select(tag_sql, [id])
        #获取作者
        user = yield from User.findOne(blog['user_id'])
        #获取评论
        comment_sql = ['select *,(select count(*) from comments where parent = A.id) as children from comments as A ']
        comment_sql.append('where')
        comment_sql.append('display = 1 and parent = 0 and blog_id=?')
        comments = yield from select(comment_sql, [id])
        blog['comment_num'] = len(comments)
        if len(comments) > 0:
            for k in range(len(comments)):
                comments[k]['child'] = []
                child_sql = ['select * from comments']
                child_sql.append('where')
                child_sql.append('display = 1 and parent = ?')
                children = yield from select(child_sql, comments[k].get('id'))
                comments[k]['child'] = children
                blog['comment_num'] = blog['comment_num'] + len(children)
            blog['comments'] = comments
        if user is not None:
            blog['author'] = user['name']
        if len(category) > 0:
            if category[0].get('category_id') is not None:
                blog['category_id'] = category[0].get('category_id').split(',')
            if category[0].get('category_title') is not None:
                blog['category_title'] = category[0].get('category_title').split(',')
        if len(tag) > 0:
            if tag[0].get('tag_id') is not None:
                blog['tag_id'] = tag[0].get('tag_id').split(',')
            if tag[0].get('tag_title') is not None:
                blog['tag_title'] = tag[0].get('tag_title').split(',')
        logging.info(blog)
        return display('content' ,{'blog': blog})
    else:
        return redirect('/404')
コード例 #8
0
def addpost():

    if request.method == 'POST':
        #get variables from the submitted form
        blog_title = html.escape(request.form['entry_title'])
        blog_entry = html.escape(request.form['blog_body'])
        public = html.escape(request.form['publish'])
        author = session['user_id']
        blogd_date = request.form['blog_date']
        
        #pass variables to the error-checking function
        title_error_check = validate_post(blog_title)
        body_error_check = validate_post(blog_entry)

        #check the entries for length
        if title_error_check != 'valid!' or body_error_check != 'valid!':
            title_error = 'Your title input was ' + title_error_check
            body_error = 'Your blog body input was ' + body_error_check
        else:
            title_error = ''
            body_error = ''
        
        if  title_error or body_error:   #go back to the posting form after an invalid posting
            return render_template('newpost.html', 
            entry_title=blog_title, 
            blog_bodytext=blog_entry, 
            title_error=title_error, 
            body_error=body_error, 
            str_now=str_now)
        else:
            new_post = Blogs(blog_title, blog_entry, public, blogd_date, author)
            db.session.add(new_post)
            db.session.commit()

            newest_post_id = new_post.get_id()

            return redirect('/blogs?blog_id={0}'.format(newest_post_id))   #go to the specific blog page after successful posting
    else:
        return render_template('newpost.html', str_now=str_now)
コード例 #9
0
ファイル: handlers.py プロジェクト: hearain528/blog
def api_article_edit(*, request, id, title, category, tag, content, summary):
    r = web.Response()
    blog = yield from Blogs.findOne(id)
    blog = Blogs(id = id, title = title, summary = summary, content = content, update_time = currentTime(), create_time = blog.get('create_time'), user_id = blog.get('user_id'), view_count = blog.get('view_count'))
    result = yield from blog.update()
    category = urldecode(category)
    category = category[0].split(',')
    tags = tag.split('/')
    blog_category_id = 0
    blog_tag_id = 0
    if result > 0:
        #文章分类插入
        blog_category_sql = 'delete from blog_category where blog_id = ?'
        yield from execute(blog_category_sql, [id])
        blog_tag_sql = 'delete from blog_tag where blog_id = ?'
        yield from execute(blog_tag_sql, [id])

        for i in category:
            blog_category = BlogCategory(blog_id = id, category_id = i)
            blog_category_id = yield from blog_category.save()
        #标签分类插入
        for t in tags:
            t = t.strip()
            tag_title = yield from Tag.findAll('title=?', [t])
            #如果标签存在,则插入博客标签表,若不存在,则两张表都要插入
            if len(tag_title) > 0:
                tag_id = tag_title[0].get('id')
            else:
                tag = Tag(title = t)
                tag_id = yield from tag.save()
            blog_tag = BlogTag(blog_id = id, tag_id = tag_id)
            blog_tag_id = yield from blog_tag.save()
    if int(id) > 0 and int(blog_category_id) > 0 and int(blog_tag_id) > 0:
        result = APIResult(1, '', '修改成功')
    else:
        result = APIResult(0, '', '修改失败')
    return jsonResult(r, result)
コード例 #10
0
ファイル: handlers.py プロジェクト: hearain528/blog
def archive(request):
    blogs = yield from Blogs.findAll(orderBy='create_time desc')
    year = {}
    for row in blogs:
        create_time = datetime.datetime.strptime(row.create_time, '%Y-%m-%d %H:%M:%S')
        month_day = {}
        if year.get(create_time.year) is None:
            month_day['%s月%s日' % (create_time.month,create_time.day)] = []
            month_day['%s月%s日' % (create_time.month,create_time.day)].append(row)
            year[create_time.year] = month_day
        else:
            if year.get(create_time.year).get('%s月%s日' % (create_time.month,create_time.day)) is None:
                year[create_time.year]['%s月%s日' % (create_time.month,create_time.day)] = []
                year[create_time.year]['%s月%s日' % (create_time.month, create_time.day)].append(row)
            else:
                year[create_time.year]['%s月%s日' % (create_time.month, create_time.day)].append(row)
    return display('archive',{'year' : year})
コード例 #11
0
ファイル: handlers.py プロジェクト: cinuor/MyWebApp
def index():
	blogs = yield from Blogs.findAll()
	return {
		'__template__': 'blogs.html',
		'blogs':blogs
	}