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)
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
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)
def user_loader(user_id): user = User.objects(id=user_id).first() if user: return user return
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,