Example #1
0
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))
Example #2
0
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)
Example #3
0
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)
Example #4
0
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
Example #5
0
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()))
Example #6
0
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)
Example #7
0
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))