2022-07-02 06:48:04 +00:00
|
|
|
from files.helpers.wrappers import *
|
|
|
|
from files.helpers.get import *
|
|
|
|
from files.helpers.const import *
|
|
|
|
from files.classes import *
|
|
|
|
from flask import *
|
|
|
|
from files.__main__ import app
|
|
|
|
|
|
|
|
|
|
|
|
@app.post("/vote/post/option/<option_id>")
|
|
|
|
@is_not_permabanned
|
2022-08-11 04:05:23 +00:00
|
|
|
def vote_option(option_id, v):
|
2022-07-02 06:48:04 +00:00
|
|
|
|
|
|
|
option_id = int(option_id)
|
|
|
|
|
|
|
|
option = g.db.get(SubmissionOption, option_id)
|
|
|
|
|
|
|
|
if not option: abort(404)
|
|
|
|
|
2022-09-05 22:30:44 +00:00
|
|
|
sub = option.post.sub
|
|
|
|
|
2022-09-11 01:53:16 +00:00
|
|
|
if sub in ('furry','vampire','racist','femboy') and not v.house.lower().startswith(sub):
|
2022-10-11 13:01:39 +00:00
|
|
|
abort(403, f"You need to be a member of House {sub.capitalize()} to vote on polls in /h/{sub}")
|
2022-09-05 22:30:44 +00:00
|
|
|
|
2022-08-26 21:53:17 +00:00
|
|
|
if option.exclusive == 2:
|
2022-10-11 13:01:39 +00:00
|
|
|
if v.coins < POLL_BET_COINS: abort(400, f"You don't have {POLL_BET_COINS} coins!")
|
2022-10-12 16:33:00 +00:00
|
|
|
v.charge_account('coins', POLL_BET_COINS)
|
2022-08-26 21:53:17 +00:00
|
|
|
g.db.add(v)
|
|
|
|
autojanny = get_account(AUTOJANNY_ID)
|
2022-10-05 06:07:53 +00:00
|
|
|
autojanny.coins += POLL_BET_COINS
|
2022-08-26 21:53:17 +00:00
|
|
|
g.db.add(autojanny)
|
|
|
|
|
2022-07-02 06:48:04 +00:00
|
|
|
if option.exclusive:
|
|
|
|
vote = g.db.query(SubmissionOptionVote).join(SubmissionOption).filter(
|
|
|
|
SubmissionOptionVote.user_id==v.id,
|
|
|
|
SubmissionOptionVote.submission_id==option.submission_id,
|
2022-08-26 21:53:17 +00:00
|
|
|
SubmissionOption.exclusive==option.exclusive).one_or_none()
|
2022-07-02 06:48:04 +00:00
|
|
|
if vote:
|
2022-10-11 13:01:39 +00:00
|
|
|
if option.exclusive == 2: abort(400, "You already voted on this bet!")
|
2022-07-02 06:48:04 +00:00
|
|
|
g.db.delete(vote)
|
|
|
|
|
|
|
|
existing = g.db.query(SubmissionOptionVote).filter_by(option_id=option_id, user_id=v.id).one_or_none()
|
|
|
|
if not existing:
|
|
|
|
vote = SubmissionOptionVote(
|
|
|
|
option_id=option_id,
|
|
|
|
user_id=v.id,
|
|
|
|
submission_id=option.submission_id,
|
|
|
|
)
|
|
|
|
g.db.add(vote)
|
2022-08-26 21:53:17 +00:00
|
|
|
elif existing and not option.exclusive:
|
2022-07-02 06:48:04 +00:00
|
|
|
g.db.delete(existing)
|
|
|
|
|
|
|
|
return "", 204
|
|
|
|
|
|
|
|
@app.get("/votes/post/option/<option_id>")
|
|
|
|
@auth_required
|
|
|
|
def option_votes(option_id, v):
|
|
|
|
|
|
|
|
option_id = int(option_id)
|
|
|
|
|
|
|
|
option = g.db.get(SubmissionOption, option_id)
|
|
|
|
|
|
|
|
if not option: abort(404)
|
|
|
|
|
2022-07-14 23:21:52 +00:00
|
|
|
if option.post.ghost: abort(403)
|
|
|
|
|
2022-07-14 14:47:03 +00:00
|
|
|
ups = g.db.query(SubmissionOptionVote).filter_by(option_id=option_id).order_by(SubmissionOptionVote.created_utc).all()
|
2022-07-02 06:48:04 +00:00
|
|
|
|
|
|
|
return render_template("poll_votes.html",
|
2022-09-04 23:15:37 +00:00
|
|
|
v=v,
|
|
|
|
thing=option,
|
|
|
|
ups=ups)
|
2022-07-02 06:48:04 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.post("/vote/comment/option/<option_id>")
|
|
|
|
@is_not_permabanned
|
2022-08-11 04:05:23 +00:00
|
|
|
def vote_option_comment(option_id, v):
|
2022-07-02 06:48:04 +00:00
|
|
|
|
|
|
|
option_id = int(option_id)
|
|
|
|
|
|
|
|
option = g.db.get(CommentOption, option_id)
|
|
|
|
|
|
|
|
if not option: abort(404)
|
|
|
|
|
2022-09-05 22:30:44 +00:00
|
|
|
sub = option.comment.post.sub
|
|
|
|
|
2022-09-11 01:53:16 +00:00
|
|
|
if sub in ('furry','vampire','racist','femboy') and not v.house.lower().startswith(sub):
|
2022-10-11 13:01:39 +00:00
|
|
|
abort(403, f"You need to be a member of House {sub.capitalize()} to vote on polls in /h/{sub}")
|
2022-09-05 22:30:44 +00:00
|
|
|
|
2022-07-02 06:48:04 +00:00
|
|
|
if option.exclusive:
|
|
|
|
vote = g.db.query(CommentOptionVote).join(CommentOption).filter(
|
|
|
|
CommentOptionVote.user_id==v.id,
|
|
|
|
CommentOptionVote.comment_id==option.comment_id,
|
2022-08-26 21:53:17 +00:00
|
|
|
CommentOption.exclusive==1).one_or_none()
|
2022-07-02 06:48:04 +00:00
|
|
|
if vote:
|
|
|
|
g.db.delete(vote)
|
|
|
|
|
|
|
|
existing = g.db.query(CommentOptionVote).filter_by(option_id=option_id, user_id=v.id).one_or_none()
|
|
|
|
if not existing:
|
|
|
|
vote = CommentOptionVote(
|
|
|
|
option_id=option_id,
|
|
|
|
user_id=v.id,
|
|
|
|
comment_id=option.comment_id,
|
|
|
|
)
|
|
|
|
g.db.add(vote)
|
|
|
|
elif existing:
|
|
|
|
g.db.delete(existing)
|
|
|
|
|
|
|
|
return "", 204
|
|
|
|
|
|
|
|
@app.get("/votes/comment/option/<option_id>")
|
|
|
|
@auth_required
|
|
|
|
def option_votes_comment(option_id, v):
|
|
|
|
|
|
|
|
option_id = int(option_id)
|
|
|
|
|
|
|
|
option = g.db.get(CommentOption, option_id)
|
|
|
|
|
|
|
|
if not option: abort(404)
|
|
|
|
|
2022-07-14 23:21:52 +00:00
|
|
|
if option.comment.ghost: abort(403)
|
|
|
|
|
2022-07-14 14:47:03 +00:00
|
|
|
ups = g.db.query(CommentOptionVote).filter_by(option_id=option_id).order_by(CommentOptionVote.created_utc).all()
|
2022-07-02 06:48:04 +00:00
|
|
|
|
|
|
|
return render_template("poll_votes.html",
|
2022-09-04 23:15:37 +00:00
|
|
|
v=v,
|
|
|
|
thing=option,
|
2022-09-29 05:43:29 +00:00
|
|
|
ups=ups)
|