Browse Source

限制临时账号的投票数量

pull/7/head
hole-thu 4 years ago
parent
commit
f9429d4d63
  1. 4
      hole.py
  2. 9
      utils.py

4
hole.py

@ -10,7 +10,7 @@ from sqlalchemy.sql.expression import func
from mastodon import Mastodon from mastodon import Mastodon
from models import db, User, Post, Comment, Attention, TagRecord, Syslog from models import db, User, Post, Comment, Attention, TagRecord, Syslog
from utils import get_current_username, map_post, map_comment, map_syslog, check_attention, hash_name, look, get_num, tmp_token, is_admin, check_can_del, rds, RDS_KEY_POLL_OPTS, RDS_KEY_POLL_VOTES, gen_poll_dict from utils import get_current_username, map_post, map_comment, map_syslog, check_attention, hash_name, look, get_num, tmp_token, is_admin, check_can_del, rds, RDS_KEY_POLL_OPTS, RDS_KEY_POLL_VOTES, gen_poll_dict, name_with_tmp_limit
app = Flask(__name__) app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///hole.db' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///hole.db'
@ -535,6 +535,8 @@ def edit_hot_score():
@limiter.limit("100 / hour; 1 / 2 second") @limiter.limit("100 / hour; 1 / 2 second")
def add_vote(): def add_vote():
username = get_current_username() username = get_current_username()
username = name_with_tmp_limit(username)
pid = request.form.get('pid', type=int) pid = request.form.get('pid', type=int)
vote = request.form.get('vote') vote = request.form.get('vote')

9
utils.py

@ -1,6 +1,8 @@
import hashlib import hashlib
import time import time
import redis import redis
from datetime import date
from flask import request, abort, current_app from flask import request, abort, current_app
from models import User, Attention, Syslog from models import User, Attention, Syslog
from config import RDS_CONFIG, ADMINS, ENABLE_TMP from config import RDS_CONFIG, ADMINS, ENABLE_TMP
@ -74,7 +76,7 @@ def map_post(p, name, mc=50):
def gen_poll_dict(pid, name): def gen_poll_dict(pid, name):
if not rds.exists(RDS_KEY_POLL_OPTS % pid): if not rds.exists(RDS_KEY_POLL_OPTS % pid):
return None return None
name = name_with_tmp_limit(name)
vote = None vote = None
answers = [] answers = []
for idx, opt in enumerate(rds.lrange(RDS_KEY_POLL_OPTS % pid, 0, -1)): for idx, opt in enumerate(rds.lrange(RDS_KEY_POLL_OPTS % pid, 0, -1)):
@ -91,6 +93,11 @@ def gen_poll_dict(pid, name):
} }
def name_with_tmp_limit(name: str) -> str:
return 'tmp:%s' % date.today() if name.startswith(
'tmp_') else name
def map_comment(p, name): def map_comment(p, name):
names = {p.name_hash: 0} names = {p.name_hash: 0}

Loading…
Cancel
Save