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)
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)
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
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)
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')
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 }
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')
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)
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)
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})
def index(): blogs = yield from Blogs.findAll() return { '__template__': 'blogs.html', 'blogs':blogs }