예제 #1
0
def create_post():
    form = PostForm()

    if request.method == 'POST':
        title = request.form.get('title')
        body = request.form.get('body')
        tags = request.form.get('tags')
        file = request.files.get('file')
        user = User.objects(id=current_user.get_id()).first()
        try:
            post = Post(title=title, body=body, user=user)
            if tags:
                post.tags = make_tags(tags)
            if file:
                filename = file.filename
                if not is_allowed_file(filename):
                    flash(flashes['badformat'])
                elif filename == '':
                    flash(flashes['nofile'], "error")
                attach_file(post, file)
            else:
                filename = None
            post.save()
        except Exception:
            flash(flashes['error'], "error")
            return render_template('posts/create_post.html', form=form)

        flash(flashes['created'], "message")
        return redirect(url_for('posts_bp.index'))

    return render_template('posts/create_post.html', form=form)
예제 #2
0
def post_detail(slug):
    try:
        post = Post.objects(slug=slug).first()
        tags = post.tags if post.tags else []

        if post.picture and post.pic_name:
            filename = post.pic_name
        else:
            filename = None
        try:
            user = post.user.fetch()
            user_id = str(user.id)
        except Exception:
            user_id = None

        form = CommentForm()
        if current_user.is_authenticated:
            comment_author = User.objects(id=current_user.get_id()).first()
        else:
            comment_author = None
        if request.method == 'POST':
            comment = request.form.get('comment')
            if form.validate_on_submit:
                comment = Comment(body=comment, author=comment_author)
                post.comments.append(comment)
                post.save()

        return render_template('posts/post_detail.html', post=post, tags=tags, picture=filename, post_author=user_id, \
                                                        form=form, comment_author=comment_author, comments=post.comments[::-1])
    except Exception:
        return render_template('404.html'), 404
예제 #3
0
def login():
    form = LoginForm()
    if request.method == 'POST':

        if form.validate_on_submit:
            user = User.objects(email=form.email.data).first()

            if not user:
                flash(flashes["invalid"], "error")
                return render_template('authorization/login.html',
                                       login_user_form=form)
            elif user.check_password(form.password.data) == False:
                flash(flashes["invalid"], "error")
                return render_template('authorization/login.html',
                                       login_user_form=form)

            login_user(user)
            flash(flashes["login"])

        return redirect(url_for('posts_bp.index'))

    return render_template('authorization/login.html', login_user_form=form)
예제 #4
0
def user_loader(user_id):
    user = User.objects(id=user_id).first()
    if user:
        return user
    return
예제 #5
0
from mongoengine import connect, disconnect
from os import environ
from dotenv import load_dotenv, find_dotenv

from app.database import User, Post

load_dotenv(find_dotenv())
host = environ.get('DB_URI')

disconnect(alias='default')
connect(db='myDatabase', alias='default', host=host)

if not Post.objects(title="demopost"):
    Post(title="demopost", body="demobody").save()

if not User.objects(name="admin"):
    client = MongoClient(host)
    db = client.myDatabase

    db.role.update_one({"name": "admin"}, {
        "$set": {
            "name":
            "admin",
            "description":
            "Admin Role gives privileges of deleting and editing all the posts as well as commentaries and opens admin menu"
        }
    },
                       upsert=True)
    admin_role = db.role.find_one({"name": "admin"})['_id']

    usr = User.objects(name="admin").modify(upsert=True,