コード例 #1
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
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))
コード例 #2
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_settings():
    lang = Language(get_user_lang(request.headers, current_user))
    if current_user.is_banned():
        return render_template("errors/banned.html", lang=lang)
    error, oldform, success = None, None, False
    if request.method == "POST":
        lform = SettingsForm(request.form).localized(lang)
        if lform.validate():
            error = handle_settings(current_user.get_id(), request.form)
            if error:
                error = lang.tr(error)
            else:
                success = True
        else:
            oldform = lform
    nform = SettingsForm(obj=populate_dict(
        {
            "username": current_user.get_user_name(),
            "displayname": current_user.get_display_name(),
            "bio": current_user.get_user_bio(),
            "language": current_user.get_language(),
            "privatemessages": current_user.are_messages_private(),
            "privatefollows": current_user.are_follows_private(),
            "privatelikes": current_user.are_likes_private()
        })).localized(lang)
    if oldform == None:
        oldform = nform
    return render_template("auth/settings.html",
                           lang=lang,
                           form=nform,
                           deleteform=DeleteAccountForm().localized(lang),
                           oldform=oldform,
                           error=error,
                           success=success)
コード例 #3
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_report_user():
    lang = Language(get_user_lang(request.headers, current_user))
    if current_user.is_banned():
        return render_template("errors/banned.html", lang=lang)
    lform = ReportUserForm(request.form).localized(lang)
    nform = ReportUserForm().localized(lang)
    if request.method == "POST":
        if lform.validate():
            error = handle_user_report(current_user.get_id(), request.form)
            if error:
                return render_template("profile/reportuser.html",
                                       lang=lang,
                                       form=nform,
                                       error=error)
            else:
                return render_template("profile/reportuser.html",
                                       lang=lang,
                                       success=True,
                                       error=None)
        else:
            error = lang.tr("reportuser.error.invalidform")
    user_id = request.args.get("uid", default=None)
    try:
        user_id = int(user_id)
    except:
        return abort(400)
    return render_template("profile/reportuser.html",
                           lang=lang,
                           form=nform,
                           user_id=user_id,
                           error=None)
コード例 #4
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
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)
コード例 #5
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_report_msg():
    lang = Language(get_user_lang(request.headers, current_user))
    if current_user.is_banned():
        return render_template("errors/banned.html", lang=lang)
    lform = ReportPostForm(request.form).localized(lang)
    nform = ReportPostForm().localized(lang)
    if request.method == "POST":
        if lform.validate():
            error = handle_message_report(current_user.get_id(), request.form)
            if error:
                return render_template("message/reportmsg.html",
                                       lang=lang,
                                       form=nform,
                                       error=lang.tr(error))
            else:
                return render_template("message/reportmsg.html",
                                       lang=lang,
                                       success=True,
                                       error=None)
        else:
            error = lang.tr("reportmsg.error.invalidform")
    msg_id = request.args.get("mid", default=None)
    try:
        msg_id = int(msg_id)
    except:
        return abort(400)
    return render_template("message/reportmsg.html",
                           lang=lang,
                           form=nform,
                           msg_id=msg_id,
                           error=None)
コード例 #6
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
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)
コード例 #7
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_delete_account():
    if current_user.is_banned():
        return abort(403)
    lform = DeleteAccountForm(request.form)
    if lform.validate():
        if not handle_delete_account(current_user.get_id(), request.form):
            return redirect(url_for("route_feed"))
    return redirect(url_for("route_settings"))
コード例 #8
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_notifications():
    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)
    return render_template("notification/notifications.html",
                           lang=lang,
                           notifs=current_user.get_notifications(False),
                           render_notification=bind1(render_notification,
                                                     lang))
コード例 #9
0
 def view(self, **kwargs):
     if self.__view__ is None:
         raise AttributeError
     elif current_user.is_authenticated and current_user.is_banned():
         return redirect("/logout")
     else:
         return render_template(str(self.__view__).replace(".", "/") + ".html",
                                **kwargs,
                                **self.view_includes,
                                title=self.__title__)
コード例 #10
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_toggle_ban():
    if current_user.is_banned():
        return abort(403)
    form = request.form
    if not current_user.has_admin_rights():
        return abort(403)
    other_user = get_user_by_id(form["uid"])
    code = toggle_ban(other_user)
    if code == 200:
        return redirect(
            url_for("route_profile", username=other_user.get_user_name()))
    else:
        return abort(code)
コード例 #11
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_toggle_follow():
    if current_user.is_banned():
        return abort(403)
    form = request.form
    if form["uid"] == current_user.get_id():
        return abort(400)
    other_user = get_user_by_id(form["uid"])
    code = toggle_follow(current_user, other_user)
    if code == 200:
        return redirect(
            url_for("route_profile", username=other_user.get_user_name()))
    else:
        return abort(code)
コード例 #12
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_remove_msg_report():
    if not current_user.has_admin_rights() or current_user.is_banned():
        return abort(403)
    rid = request.form["rid"]
    try:
        application.models.ReportMessage.query.filter_by(
            reportid=rid).first().terminate()
    except:
        return abort(400)
    return redirect(
        get_safe_url(request.host_url, request.form["next"]
                     or url_for("route_admin_msgreports"),
                     url_for("route_admin_msgreports")))
コード例 #13
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
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()))
コード例 #14
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_admin_msgreports():
    lang = Language(get_user_lang(request.headers, current_user))
    if not current_user.has_admin_rights() or current_user.is_banned():
        return render_template("errors/notadmin.html", lang=lang)
    reports, next_page, prev_page = compute_pages(request.args,
                                                  get_message_reports,
                                                  current_user)
    return render_template("admin/admin_msgreports.html",
                           lang=lang,
                           reports=reports,
                           render_report=bind1(render_message_report, lang),
                           prev_page=prev_page,
                           next_page=next_page,
                           has_before="b" in request.args
                           or "a" in request.args)
コード例 #15
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
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)
コード例 #16
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_feed():  # 𒀭𒀭𒊺𒉀
    lang = Language(get_user_lang(request.headers, current_user))
    if not current_user.is_authenticated:
        return redirect(url_for("route_login"))
    if current_user.is_authenticated and current_user.is_banned():
        return render_template("errors/banned.html", lang=lang)
    msgs, next_page, prev_page = compute_pages(request.args,
                                               get_feed_from_user,
                                               current_user)
    return render_template("feed.html",
                           lang=lang,
                           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)
コード例 #17
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_profile(username):
    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)
    msgs, next_page, prev_page = compute_pages(request.args, get_user_messages,
                                               user, current_user)
    return render_template("profile/profile.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)
コード例 #18
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_profile_followers(username):
    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))
    users, next_page, prev_page = compute_pages(request.args, get_followers,
                                                user)
    return render_template("profile/profile_followers.html",
                           lang=lang,
                           user=user,
                           users=users,
                           render_user=bind1(render_user, lang),
                           prev_page=prev_page,
                           next_page=next_page,
                           has_before="b" in request.args
                           or "a" in request.args)
コード例 #19
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
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))
コード例 #20
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_search_user():
    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)
    if request.args.get("q", None):
        q = request.args.get("q")[:512]
        users, next_page, prev_page = compute_pages(request.args,
                                                    search_for_users,
                                                    current_user, q)
        return render_template("search/searchuser_results.html",
                               lang=lang,
                               users=users,
                               render_user=bind1(render_user, lang),
                               q=q,
                               prev_page=prev_page,
                               next_page=next_page,
                               has_before="b" in request.args
                               or "a" in request.args)
    return render_template(
        "search/search.html",
        lang=lang,
        form=SearchMessageForm(csrf_enabled=False).localized(lang),
        formuser=SearchUserForm(csrf_enabled=False).localized(lang))
コード例 #21
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_admin():
    lang = Language(get_user_lang(request.headers, current_user))
    if not current_user.has_admin_rights() or current_user.is_banned():
        return render_template("errors/notadmin.html", lang=lang)
    return render_template("admin/admin.html", lang=lang)
コード例 #22
0
ファイル: views.py プロジェクト: hisahi/Nanibgal
def route_notifications_read():
    if current_user.is_banned():
        return abort(403)
    nid = request.form["nid"]
    current_user.set_notifications_read_up_to(nid)
    return redirect(url_for("route_notifications"))