def check_valid(sender, meta): "Validates the current post" if not meta["post"].text: flash("Post has no contents...") abort(400) require_subject = "ReplySubject" in meta["post"].board.Require if meta["post"].is_reply else "ThreadSubject" in meta["post"].board.Require require_author = "ReplyAuthor" in meta["post"].board.Require if meta["post"].is_reply else "ThreadAuthor" in meta["post"].board.Require require_content = "ReplyContent" in meta["post"].board.Require if meta["post"].is_reply else "ThreadContent" in meta["post"].board.Require if require_subject and not meta["post"].subject: flash("Reply subject required.") if meta["post"].is_reply else flash("Thread subject required.") abort(400) if require_author and not meta["post"].author: flash("Reply author name required.") if meta["post"].is_reply else flash("Thread author required.") abort(400) if require_content and not meta["post"].text: flash("Reply content name required.") if meta["post"].is_reply else flash("Thread content required.") abort(400); if meta["post"].is_reply and meta["post"].board.ReplyLimit and \ len(Thread.from_id(meta["post"].thread)) >= meta["post"].board.ReplyLimit: flash("Reply limit reached...") abort(400)
def sticky(sender, meta): if not session.get("level"): raise ImmediateRedirect(redirect(request.environ["HTTP_REFERER"])) if meta["post"].is_reply: thread = Thread.from_id(meta["post"].thread) else: thread = meta["post"] thread.sticky = True thread.save(score=int(time.time())*2) plug.fire("lock_thread", thread=thread) if meta["post"].is_reply: raise ImmediateRedirect(redirect(request.environ["HTTP_REFERER"]))
def bump(sender, meta): if meta["post"].is_reply: thread = Thread.from_id(meta["post"].thread) if not hasattr(thread, "auto_bump"): thread.auto_bump = 0 thread.auto_bump += 1 if thread.auto_bump <= meta["post"].board.AutoBump: thread.save() else: flash("Auto bump limit reached.") abort(400) raise ImmediateRedirect(redirect(url_for("board", board=str(thread.board) ))) raise ImmediateRedirect(redirect(request.http_referer))