Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import render_template, flash, redirect, request, jsonify
- from flask_login import login_user, logout_user, current_user, login_required
- from app import app, db, login_manager
- import datetime
- from .forms import LoginForm, SignupForm, PostForm, ChannelForm, AddChannelUsersForm
- from .models import User, Post, Channel, UserChannel
- from .decorators import *
- @login_manager.user_loader
- def load_user(userid):
- return User.query.get(userid)
- @app.route("/")
- @app.route("/index")
- def index():
- return render_template('index.html',
- title='Home'
- )
- @app.route("/login", methods=['GET', 'POST'])
- def login():
- form = LoginForm(request.form)
- if form.validate_on_submit():
- user = User.query.filter_by(email = form.email.data).first()
- login_user(user)
- flash('Successfully logged in.')
- return redirect('/index')
- return render_template('login.html',
- title='Sign In',
- form=form)
- @app.route("/logout")
- @login_required
- def logout():
- logout_user()
- flash("Successfully logout.")
- return redirect("/")
- @app.route("/register", methods=["GET", "POST"])
- def register():
- form = SignupForm(request.form)
- if request.method == "POST" and form.validate():
- user = User(nickname=form.nickname.data, email=form.email.data, password=form.password.data)
- db.session.add(user)
- for channel in Channel.query.filter_by(channel_type="global"):
- user.channels.append(channel)
- db.session.commit()
- flash("User successfully registered")
- return redirect("/")
- return render_template("register.html", form=form)
- @app.route("/channel/<channel_id>/posts", methods=["GET"])
- @login_required
- def channel_posts(channel_id):
- channel = current_user.channels.filter(Channel.id == channel_id).first()
- posts = channel.posts
- form = PostForm()
- return jsonify(posts=[post.serialize for post in posts], channel_id=channel_id, csrf=form.csrf_token)
- @app.route("/channel/<channel_id>/post_create", methods=["POST"])
- @login_required
- def create_post(channel_id):
- channel = current_user.channels.filter(Channel.id == channel_id).first()
- form = PostForm(request.form)
- if form.validate_on_submit():
- post = Post(body=form.body.data, author=current_user, channel=channel)
- db.session.add(post)
- db.session.commit()
- return jsonify(status=200, id=post.id, body=post.body, author_name=current_user.nickname)
- return jsonify(status=200)
- @app.route("/channels/<channel_id>/add_members", methods=["GET", "POST"])
- @login_required
- def add_members(channel_id):
- channel = current_user.channels.filter(UserChannel.channel_role=="owner").first()
- form = AddChannelUsersForm(request.form, channel)
- if request.method == "POST" and form.validate():
- form.populate_obj(channel)
- db.session.commit()
- flash("member successfully added")
- return redirect("/")
- return render_template("channels/add_member.html", form=form, channel=channel)
- @app.route("/channels/<channel_id>/edit", methods=["GET", "POST"])
- @login_required
- def edit_channel(channel_id):
- channel = current_user.channels.filter(UserChannel.channel_role=="owner").first()
- form = ChannelForm(obj=channel)
- if request.method == "POST" :
- form = ChannelForm(request.form)
- if form.validate_on_submit():
- channel.title = form.title.data
- db.session.commit()
- flash("Successfully updated")
- return redirect("/")
- return render_template("channels/edit.html", channel=channel, form=form)
- @app.route("/channels/delete")
- @login_required
- def remove_channel():
- cid = request.args.get("cid")
- channel_id = request.args.get("channel_id")
- user_channel = current_user.user_channels.filter(UserChannel.id==cid).first()
- if user_channel.is_owner:
- channel = user_channel.channel
- db.session.delete(user_channel)
- db.session.delete(channel)
- db.session.commit()
- return redirect("/")
- @app.route("/new_channels", methods=["POST"])
- @login_required
- def save_channel():
- form = ChannelForm(request.form)
- if form.validate_on_submit():
- channel = Channel(title=form.title.data, channel_type="private")
- db.session.add(channel)
- db.session.commit()
- user_channel = UserChannel(user=current_user, channel=channel, channel_role="owner")
- db.session.add(user_channel)
- db.session.commit()
- return jsonify(channel_id=channel.id, channel_role=user_channel.channel_role, channel_title=channel.title)
- return jsonify(status=200)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement