예제 #1
0
def add_category():
    if current_user.username != "admin":
        abort(403)
    form = AddCategoryForm()
    if form.validate_on_submit():
        category = Categories(
            category_name=form.category_name.data
        )
        category.save()
        flash("Category saved", "success")
        return redirect(url_for('admin.dashboard'))
    return render_template("admin/add_category.html",
                           title="Add Category",
                           form=form)
예제 #2
0
def category_posts(category_id):
    form = SearchForm()
    categories = Categories.objects()
    page = request.args.get('page', 1, type=int)
    category = Categories.objects(id=category_id).first_or_404()
    posts = Post.objects(category=category).order_by("-date_posted").paginate(
        page=page, per_page=4)
    return render_template("posts/posts_categories.html",
                           title=f"{category.category_name} Posts",
                           posts=posts,
                           heading=f"{category.category_name} Posts",
                           form=form,
                           category=category,
                           categories=categories)
예제 #3
0
def update_post(post_id):
    post = Post.objects().get_or_404(id=post_id)

    # throw a 403 error if a user has managed to get to this
    #  page and they weren't the posts author.
    if post.author.id != current_user.id:
        abort(403)
    form = PostForm()
    categories = [(cat.category_name) for cat in Categories.objects]
    form.category.choices = categories

    #  saves post to the database on form submition
    if form.validate_on_submit():
        category = Categories.objects(category_name=form.category.data).first()
        post.title = form.title.data
        post.content = form.content.data
        post.category = category.id
        post.save()
        flash("Your post has been updated", "success")
        return redirect(url_for("posts.post", post_id=post.id))

    #  fills the form with the details from the database
    elif request.method == "GET":
        form.title.data = post.title
        form.content.data = post.content
        form.category.data = post.category.category_name

    return render_template("posts/update_post.html",
                           title="Update Post",
                           form=form)
예제 #4
0
def search():
    form = SearchForm()
    categories = Categories.objects()
    query_param = request.args.get("query")
    # gets the query paramater for paginatio
    if query_param:
        query = query_param
    # gets posts and paginates
    elif request.method == "POST":
        query = form.search.data
    page = request.args.get('page', 1, type=int)
    posts = Post.objects.search_text(query).order_by('$text_score').paginate(
        page=page, per_page=4)
    print(posts)
    # if no posts are found in search it redirects to current page and
    # flashes a message
    if not posts.items:
        flash("No results Found. Please search again", "errors")
        return redirect(request.referrer)
    return render_template("posts/search_results.html",
                           title="Search Results",
                           posts=posts,
                           heading="Search Results",
                           form=form,
                           categories=categories,
                           query=query)
예제 #5
0
def dashboard():
    if current_user.username != "admin":
        abort(403)
    users = User.objects()
    posts = Post.objects()
    categories = Categories.objects()
    return render_template("admin/dashboard.html",
                           title="Dashboard",
                           users=users,
                           posts=posts,
                           categories=categories,)
예제 #6
0
def all_posts():
    form = SearchForm()
    categories = Categories.objects()
    # Paginates the results setting 4 posts per page
    page = request.args.get("page", 1, type=int)
    posts = Post.objects().order_by("-date_posted").paginate(page=page,
                                                             per_page=4)
    return render_template("posts/all_posts.html",
                           title="Latest Posts",
                           posts=posts,
                           heading="Recent Posts",
                           form=form,
                           categories=categories)
예제 #7
0
def delete_category(category_id):
    if current_user.username != "admin":
        abort(403)
    form = DeleteCategoryForm()
    if request.method == "POST":
        category = Categories.objects().get_or_404(id=category_id)
        posts = Post.objects(category=category)
        category.delete()
        posts.delete()
        flash("Category has been deleted", "success")
        return redirect(url_for("admin.dashboard"))
    return render_template("admin/delete_category.html",
                           title="Delete Category",
                           form=form)
def users_posts(username):
    categories = Categories.objects()
    form = SearchForm()
    page = request.args.get('page', 1, type=int)
    user = User.objects(username=username).first_or_404()
    posts = Post.objects(author=user.id).order_by("-date_posted").paginate(
        page=page, per_page=4)
    return render_template("users/users_posts.html",
                           title=f"{user.username}'s Posts",
                           posts=posts,
                           heading=f"{user.username}'s Posts",
                           form=form,
                           categories=categories,
                           user=user)
예제 #9
0
def edit_category(category_id):
    if current_user.username != "admin":
        abort(403)
    category = Categories.objects().get_or_404(id=category_id)
    form = EditCategoryForm()
    if request.method == "GET":
        form.category_name.data = category.category_name
    if form.validate_on_submit():
        category.category_name = form.category_name.data
        category.save()
        flash("Category has been changed", "success")
        return redirect(url_for('admin.dashboard'))
    return render_template("admin/edit_category.html",
                           form=form,
                           title="Edit Category")
예제 #10
0
def add_post():
    form = PostForm()
    # get categorie names for select input and loop thorough them
    categories = [(category.category_name) for category in Categories.objects]
    form.category.choices = categories

    # add the post to the database on form submit
    if form.validate_on_submit():
        category = Categories.objects(category_name=form.category.data).first()
        post = Post(title=form.title.data,
                    content=form.content.data,
                    author=current_user.id,
                    category=category.id)
        post.save()
        flash("post has been posted successfully", "success")
        return redirect(url_for("posts.all_posts"))
    return render_template("posts/new_post.html", title="New Post", form=form)