Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. from flask import render_template, flash, redirect, request, jsonify
  2. from flask_login import login_user, logout_user, current_user, login_required
  3. from app import app, db, login_manager
  4. import datetime
  5. from .forms import LoginForm, SignupForm, PostForm, ChannelForm, AddChannelUsersForm
  6. from .models import User, Post, Channel, UserChannel
  7. from .decorators import *
  8.  
  9. @login_manager.user_loader
  10. def load_user(userid):
  11. return User.query.get(userid)
  12.  
  13. @app.route("/")
  14. @app.route("/index")
  15. def index():
  16. return render_template('index.html',
  17. title='Home'
  18. )
  19.  
  20. @app.route("/login", methods=['GET', 'POST'])
  21. def login():
  22. form = LoginForm(request.form)
  23. if form.validate_on_submit():
  24. user = User.query.filter_by(email = form.email.data).first()
  25. login_user(user)
  26. flash('Successfully logged in.')
  27. return redirect('/index')
  28. return render_template('login.html',
  29. title='Sign In',
  30. form=form)
  31.  
  32. @app.route("/logout")
  33. @login_required
  34. def logout():
  35. logout_user()
  36. flash("Successfully logout.")
  37. return redirect("/")
  38.  
  39. @app.route("/register", methods=["GET", "POST"])
  40. def register():
  41. form = SignupForm(request.form)
  42. if request.method == "POST" and form.validate():
  43. user = User(nickname=form.nickname.data, email=form.email.data, password=form.password.data)
  44. db.session.add(user)
  45. for channel in Channel.query.filter_by(channel_type="global"):
  46. user.channels.append(channel)
  47. db.session.commit()
  48. flash("User successfully registered")
  49. return redirect("/")
  50. return render_template("register.html", form=form)
  51.  
  52. @app.route("/channel/<channel_id>/posts", methods=["GET"])
  53. @login_required
  54. def channel_posts(channel_id):
  55. channel = current_user.channels.filter(Channel.id == channel_id).first()
  56. posts = channel.posts
  57. form = PostForm()
  58. return jsonify(posts=[post.serialize for post in posts], channel_id=channel_id, csrf=form.csrf_token)
  59. @app.route("/channel/<channel_id>/post_create", methods=["POST"])
  60. @login_required
  61. def create_post(channel_id):
  62. channel = current_user.channels.filter(Channel.id == channel_id).first()
  63. form = PostForm(request.form)
  64. if form.validate_on_submit():
  65. post = Post(body=form.body.data, author=current_user, channel=channel)
  66. db.session.add(post)
  67. db.session.commit()
  68. return jsonify(status=200, id=post.id, body=post.body, author_name=current_user.nickname)
  69. return jsonify(status=200)
  70.  
  71. @app.route("/channels/<channel_id>/add_members", methods=["GET", "POST"])
  72. @login_required
  73. def add_members(channel_id):
  74. channel = current_user.channels.filter(UserChannel.channel_role=="owner").first()
  75. form = AddChannelUsersForm(request.form, channel)
  76. if request.method == "POST" and form.validate():
  77. form.populate_obj(channel)
  78. db.session.commit()
  79. flash("member successfully added")
  80. return redirect("/")
  81. return render_template("channels/add_member.html", form=form, channel=channel)
  82.  
  83. @app.route("/channels/<channel_id>/edit", methods=["GET", "POST"])
  84. @login_required
  85. def edit_channel(channel_id):
  86. channel = current_user.channels.filter(UserChannel.channel_role=="owner").first()
  87. form = ChannelForm(obj=channel)
  88. if request.method == "POST" :
  89.  
  90. form = ChannelForm(request.form)
  91. if form.validate_on_submit():
  92. channel.title = form.title.data
  93. db.session.commit()
  94. flash("Successfully updated")
  95. return redirect("/")
  96. return render_template("channels/edit.html", channel=channel, form=form)
  97.  
  98.  
  99. @app.route("/channels/delete")
  100. @login_required
  101. def remove_channel():
  102. cid = request.args.get("cid")
  103. channel_id = request.args.get("channel_id")
  104. user_channel = current_user.user_channels.filter(UserChannel.id==cid).first()
  105. if user_channel.is_owner:
  106. channel = user_channel.channel
  107. db.session.delete(user_channel)
  108. db.session.delete(channel)
  109. db.session.commit()
  110. return redirect("/")
  111.  
  112. @app.route("/new_channels", methods=["POST"])
  113. @login_required
  114. def save_channel():
  115. form = ChannelForm(request.form)
  116. if form.validate_on_submit():
  117. channel = Channel(title=form.title.data, channel_type="private")
  118. db.session.add(channel)
  119. db.session.commit()
  120. user_channel = UserChannel(user=current_user, channel=channel, channel_role="owner")
  121. db.session.add(user_channel)
  122. db.session.commit()
  123. return jsonify(channel_id=channel.id, channel_role=user_channel.channel_role, channel_title=channel.title)
  124. return jsonify(status=200)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement