def route_message(username, postid): lang = Language(get_user_lang(request.headers, current_user)) if current_user.is_authenticated and current_user.is_banned(): return render_template("errors/banned.html", lang=lang) user = get_user_by_name(username) if user == None: return abort(404) if user.is_banned() and (not current_user.is_authenticated or not current_user.has_admin_rights()): return redirect(url_for("route_profile", username=username)) msg = get_message_by_id(postid) if msg == None: return abort(404) if user.get_id() != msg.get_author_id(): return abort(404) reply = None if msg.reply != None: reply = get_message_by_id(msg.reply) return render_template( "message/viewmessage.html", lang=lang, user=user, msg=msg, reply=reply, reply_id=msg.reply, is_reply=msg.is_reply, render_message=bind1(render_message, lang), username=username, postid=postid, important_replies=msg.get_most_important_message_replies(current_user))
def route_new(): lang = Language(get_user_lang(request.headers, current_user)) if current_user.is_banned(): return render_template("errors/banned.html", lang=lang) error, oldform = None, None if request.method == "POST": lform = NewPostForm(request.form) if lform.validate(): (postid, error) = new_message(current_user.get_id(), request.form) if error: error = lang.tr(error) else: return redirect( url_for("route_message", username=current_user.get_user_name(), postid=postid)) else: oldform = lform test_reply_id = request.args.get("reply", default=None) try: msg, reply_id = get_message_by_id(int(test_reply_id)), test_reply_id except: msg, reply_id = None, "" nform = NewPostForm().localized(lang) if oldform == None: oldform = nform return render_template("write/new.html", lang=lang, form=nform, oldform=oldform, reply=render_message(lang, msg), reply_id=reply_id, error=error)
def route_message_replies(username, postid): lang = Language(get_user_lang(request.headers, current_user)) if current_user.is_authenticated and current_user.is_banned(): return render_template("errors/banned.html", lang=lang) user = get_user_by_name(username) if user == None: return abort(404) if user.is_banned() and (not current_user.is_authenticated or not current_user.has_admin_rights()): return redirect(url_for("route_profile", username=username)) msg = get_message_by_id(postid) if msg == None: return abort(404) msgs, next_page, prev_page = compute_pages(request.args, get_message_replies, msg, current_user) return render_template("message/viewreplies.html", lang=lang, user=user, msgs=msgs, render_message=bind1(render_message, lang), prev_page=prev_page, next_page=next_page, has_before="b" in request.args or "a" in request.args, username=username, postid=postid)
def handle_message_report(userid, form): try: curuser = get_user_by_id(userid) except: return "reportmsg.error.invalidform" try: msg = get_message_by_id(form["msg"]) except: return "reportmsg.error.cannotreport" if msg.get_author_id() == userid: return "reportmsg.error.cannotreport" reason = form["reason"] application.models.ReportMessage(curuser, msg, reason).add_itself() return None
def route_msg_delete(): if current_user.is_banned(): return abort(403) form = request.form mid = form["mid"] msg = get_message_by_id(mid) if msg == None: return abort(400) if not current_user.has_admin_rights(): if msg.get_author_id() != current_user.get_id(): return abort(403) msg.terminate() return redirect( url_for("route_profile", username=msg.get_author().get_user_name()))
def route_toggle_like(): if current_user.is_banned(): return abort(403) form = request.form msg_id = form["mid"] try: msg = get_message_by_id(int(msg_id)) except: return abort(400) code = toggle_like(current_user, msg) if code == 200: return redirect( get_safe_url(request.host_url, request.form["next"] or url_for("route_feed"), url_for("route_feed"))) else: return abort(code)
def route_msg_edit(): lang = Language(get_user_lang(request.headers, current_user)) if current_user.is_authenticated and current_user.is_banned(): return render_template("errors/banned.html", lang=lang) error, oldform = None, None if request.method == "POST": lform = EditPostForm(request.form) if lform.validate(): error = edit_message(current_user.get_id(), request.form) if error: error = lang.tr(error) else: return redirect( url_for("route_message", username=current_user.get_user_name(), postid=request.form["msg"])) else: oldform = lform test_msg_id = request.args.get("msg", default=None) try: msg = get_message_by_id(int(test_msg_id)) if msg.get_author_id() != current_user.get_id(): return abort(403) except: return redirect(url_for("route_feed")) nform = EditPostForm(obj=populate_dict({ "contents": msg.get_text(), "link": msg.get_link() })).localized(lang) if oldform == None: oldform = nform return render_template("write/edit.html", lang=lang, form=nform, oldform=oldform, msg=msg, error=error, render_message=bind1(render_message, lang))