def edit_user(id):
    """
        Edit user
    """
    check_admin()
    req = request
    user = User.query.get_or_404(id)

    form = UserForm(obj=user)
    if form.validate_on_submit():
        user.username = form.username.data
        user.email = form.email.data
        filename = form.avatar.data.filename
        form.avatar.data.save(Config.UPLOAD_FOLDER + filename)
        user.avatar = filename
        db.session.add(user)
        db.session.commit()
        flash('Вы успешно сохранили пользователя')

        # redirect to the roles page
        return redirect(url_for('admin.users'))

    return render_template('admin/users/edit_user.html',
                           user=user,
                           form=form,
                           title='Редактирование пользователя ' +
                           user.username,
                           uploaderFolder=app.config['UPLOAD_FOLDER'])
def users():
    """
    List all users
    """
    check_admin()

    users = User.query.all()
    return render_template('admin/users/users.html',
                           users=users,
                           title='Пользователи')
def posts():
    """
    List all posts
    """
    check_admin()

    posts = Post.query.all()
    return render_template('admin/posts/posts.html',
                           posts=posts,
                           title='Посты')
def delete_user(id):
    """
    Delete a user from the database
    """
    check_admin()

    user = User.query.get_or_404(id)
    db.session.delete(user)
    db.session.commit()
    flash('You have successfully deleted the user.')

    # redirect to the departments page
    return redirect(url_for('admin.users'))
def delete_post(id):
    """
    Delete a user from the database
    """
    check_admin()

    post = Post.query.get_or_404(id)
    db.session.delete(post)
    db.session.commit()
    flash('You have successfully deleted the post.')

    # redirect to the departments page
    return redirect(url_for('admin.posts'))
def edit_post(id):
    """
        Edit user
    """
    check_admin()
    req = request
    post = Post.query.get_or_404(id)

    form = PostForm(obj=post)
    if form.validate_on_submit():
        post.title = form.title.data
        post.caption = form.caption.data
        db.session.add(post)
        db.session.commit()
        flash('Вы успешно сохранили пользователя')

        # redirect to the roles page
        return redirect(url_for('admin.posts'))

    return render_template('admin/posts/edit_post.html',
                           post=post,
                           form=form,
                           title='Редактирование поста ' + post.caption,
                           uploaderFolder=app.config['UPLOAD_FOLDER'])