def dosearch(page=1): # Tag search if "tagname" in request.args: tagname = request.args.get("tagname").strip() # Defence of SQL injection if " " in tagname or tagname == "": postlist = [] count = 0 else: postlist = Post.tag_search( keyword=tagname, offset=g.config["PER_PAGE"] * (page-1), limit=g.config["PER_PAGE"] ) count = Post.tag_search_count(tagname) pager = gen_pager(page, count, g.config["PER_PAGE"], request.url) return render_template( "search.html", searchtype="tagsearch", searchcontent=tagname, pager=pager, postlist=postlist, parameter=request.query_string) # Text search if 'keyword' in request.args: words = request.args["keyword"].split() # In case a query with too much keywords words = [word for word in words if len(word) >= 2] if len(words) > 5 or len(words) == 0: postlist = [] count = 0 else: postlist = Post.text_search( words=words, offset=g.config["PER_PAGE"]*(page-1), limit=g.config["PER_PAGE"] ) count = Post.text_search_count(words=words) pager = gen_pager(page, count, g.config["PER_PAGE"], request.url) return render_template( 'search.html', searchtype="textsearch", searchcontent=" ".join(words), postlist=postlist, pager=pager, parameter=request.query_string)
def posts(): perpage = g.config["ADMIN_ITEM_COUNT"] args = request.args page = int(args.get("page", 1)) kwargs = {} if "is_original" in args and args["is_original"] == "true": kwargs["is_original"] = True elif "is_original" in args and args["is_original"] == "false": kwargs["is_original"] = False if "allow_visit" in args and args["allow_visit"] == "true": kwargs["allow_visit"] = True elif "allow_visit" in args and args["allow_visit"] == "false": kwargs["allow_visit"] = False if "allow_comment" in args and args["allow_comment"] == "true": kwargs["allow_comment"] = True elif "allow_comment" in args and args["allow_comment"] == "false": kwargs["allow_comment"] = False count, posts = Post.get_page(page, order_by=Post.id.desc(), limit=perpage, parameters=kwargs) pager = gen_pager(page, count, perpage, request.url) return render_template('admin/posts.html', posts=posts, admin_url="posts", pager=pager, parameter=request.query_string)
def adminpostlist(): perpage = g.config["ADMIN_ITEM_COUNT"] args = request.args page = int(args.get("page", 1)) kargs = {} if "is_original" in args and args["is_original"] == "true": kargs["is_original"] = True elif "is_original" in args and args["is_original"] == "false": kargs["is_original"] = False if "allow_visit" in args and args["allow_visit"] == "true": kargs["allow_visit"] = True elif "allow_visit" in args and args["allow_visit"] == "false": kargs["allow_visit"] = False if "allow_comment" in args and args["allow_comment"] == "true": kargs["allow_comment"] = True elif "allow_comment" in args and args["allow_comment"] == "false": kargs["allow_comment"] = False postlist = Post.get_page(offset=(page-1)*perpage, limit=perpage, **kargs) pager = gen_pager(page, Post.count(**kargs), perpage, request.url) return render_template('admin/postlist.html', postlist=postlist, admin_url="pagelist", pager=pager, parameter=request.query_string)
def links(): perpage = g.config["ADMIN_ITEM_COUNT"] page = int(request.args.get("page", 1)) count, links = Link.get_page(page, limit=perpage) pager = gen_pager(page, count, perpage, request.url) return render_template('admin/links.html', links=links, admin_url="links", pager=pager)
def mediamgnt(): page = int(request.args.get("page", 1)) perpage = g.config["ADMIN_ITEM_COUNT"] medialist = Media.get_page(perpage * (page-1), perpage) pager = gen_pager(page, Media.count(), perpage, request.url) return render_template('admin/mediamgnt.html', admin_url="mediamgnt", medialist=medialist, pager=pager )
def linkmgnt(): perpage = g.config["ADMIN_ITEM_COUNT"] page = int(request.args.get("page", 1)) linklist = Link.get_page(offset=perpage*(page-1), limit=perpage) pager = gen_pager(page, Link.count(), perpage, request.url) return render_template('admin/linkmgnt.html', linklist=linklist, admin_url="linkmgnt", pager=pager )
def comments(): if request.method == "GET": page = int(request.args.get("page", 1)) perpage = g.config["ADMIN_ITEM_COUNT"] if 'post_id' in request.args: post_id = request.args['post_id'] comments = Comment.get_page(page, post_id=post_id, order_by=Comment.id.desc(), perpage=perpage) pager = gen_pager(page, Comment.count(post_id), perpage, request.url) else: count, comments = Comment.get_page(page, order_by=Comment.id.desc()) pager = gen_pager(page, count, perpage, request.url) return render_template('admin/comments.html', comments=comments, admin_url="comments", pager=pager)
def medias(): page = int(request.args.get("page", 1)) perpage = g.config["ADMIN_ITEM_COUNT"] count, medias = Media.get_page(page, order_by=Media.id.desc(), limit=perpage) pager = gen_pager(page, count, perpage, request.url) return render_template('admin/medias.html', admin_url="medias", medias=medias, pager=pager)
def commentmgnt(): if request.method == "GET": page = int(request.args.get("page", 1)) perpage = g.config["ADMIN_ITEM_COUNT"] if 'post_id' in request.args: post_id = request.args['post_id'] commentlist = Comment.get_page( offset=perpage*(page-1), limit=perpage, post_id=post_id) pager = gen_pager(page, Comment.count(post_id), perpage, request.url) else: commentlist = Comment.get_page( offset=perpage*(page-1), limit=perpage) pager = gen_pager(page, Comment.count(), perpage, request.url) return render_template('admin/commentmgnt.html', commentlist=commentlist, admin_url="commentmgnt", pager=pager)
def index(): page = int(request.args.get("page", 1)) count, posts = Post.get_page(page, Post.allow_visit == True, order_by=-Post.id) pager = gen_pager(page, count, g.config["PER_PAGE"], request.url) if posts or page == 1: return render_template( "index.html", blogname=g.config["BLOGNAME"], posts=posts, pager=pager) else: return render_template("error/404.html")
def dosearch(page=1): page = int(request.args.get("page", 1)) # Tag search if "tagname" in request.args: tagname = request.args.get("tagname").strip() count, posts = Post.tag_search(keyword=tagname, offset=g.config["PER_PAGE"] * (page - 1), limit=g.config["PER_PAGE"]) pager = gen_pager(page, count, g.config["PER_PAGE"], request.url) return render_template("search.html", searchtype="tagsearch", searchcontent=tagname, pager=pager, posts=posts, parameter=request.query_string) # Text search if 'keyword' in request.args: words = request.args["keyword"].split() # In case a query with too much keywords words = [word for word in words if len(word) >= 2] if len(words) == 0: posts = [] count = 0 else: count, posts = Post.text_search(words=words, offset=g.config["PER_PAGE"] * (page - 1), limit=g.config["PER_PAGE"]) pager = gen_pager(page, count, g.config["PER_PAGE"], request.url) return render_template('search.html', searchtype="textsearch", searchcontent=" ".join(words), posts=posts, pager=pager, parameter=request.query_string)