commit
1c6aea6729
83
handlers/rateHandler.py
Normal file
83
handlers/rateHandler.py
Normal file
|
@ -0,0 +1,83 @@
|
|||
import tornado.gen
|
||||
import tornado.web
|
||||
|
||||
from common.ripple import userUtils
|
||||
from common.sentry import sentry
|
||||
from common.web import requestsManager
|
||||
from common.log import logUtils as log
|
||||
from constants import exceptions, rankedStatuses
|
||||
from objects import glob
|
||||
|
||||
MODULE_NAME = "rate"
|
||||
|
||||
|
||||
class handler(requestsManager.asyncRequestHandler):
|
||||
@tornado.web.asynchronous
|
||||
@tornado.gen.engine
|
||||
@sentry.captureTornado
|
||||
def asyncGet(self):
|
||||
output = ""
|
||||
|
||||
try:
|
||||
if not requestsManager.checkArguments(self.request.arguments, ["c", "u", "p"]):
|
||||
raise exceptions.invalidArgumentsException(MODULE_NAME)
|
||||
|
||||
ip = self.getRequestIP()
|
||||
username = self.get_argument("u").strip()
|
||||
password = self.get_argument("p").strip()
|
||||
user_id = userUtils.getID(username)
|
||||
checksum = self.get_argument("c").strip()
|
||||
if not user_id:
|
||||
raise exceptions.loginFailedException(MODULE_NAME, user_id)
|
||||
if not userUtils.checkLogin(user_id, password, ip):
|
||||
raise exceptions.loginFailedException(MODULE_NAME, username)
|
||||
if userUtils.check2FA(user_id, ip):
|
||||
raise exceptions.need2FAException(MODULE_NAME, user_id, ip)
|
||||
|
||||
ranked = glob.db.fetch(
|
||||
"SELECT ranked FROM beatmaps WHERE beatmap_md5 = %s LIMIT 1",
|
||||
(checksum,)
|
||||
)
|
||||
if ranked is None:
|
||||
output = "no exist"
|
||||
return
|
||||
if ranked["ranked"] < rankedStatuses.RANKED:
|
||||
output = "not ranked"
|
||||
return
|
||||
|
||||
rating = glob.db.fetch("SELECT rating FROM beatmaps WHERE beatmap_md5 = %s LIMIT 1", (checksum,))
|
||||
has_voted = glob.db.fetch(
|
||||
"SELECT id FROM beatmaps_rating WHERE user_id = %s AND beatmap_md5 = %s LIMIT 1",
|
||||
(user_id, checksum)
|
||||
)
|
||||
if has_voted is not None:
|
||||
output = f"alreadyvoted\n{rating['rating']:.2f}"
|
||||
return
|
||||
vote = self.get_argument("v", default=None)
|
||||
if vote is None:
|
||||
output = "ok"
|
||||
return
|
||||
try:
|
||||
vote = int(vote)
|
||||
except ValueError:
|
||||
raise exceptions.invalidArgumentsException(MODULE_NAME)
|
||||
if vote < 0 or vote > 10:
|
||||
output = "out of range"
|
||||
return
|
||||
glob.db.execute(
|
||||
"REPLACE INTO beatmaps_rating (beatmap_md5, user_id, rating) VALUES (%s, %s, %s)",
|
||||
(checksum, user_id, vote)
|
||||
)
|
||||
glob.db.execute(
|
||||
"UPDATE beatmaps SET rating = (SELECT SUM(rating)/COUNT(rating) FROM beatmaps_rating "
|
||||
"WHERE beatmap_md5 = %(md5)s) WHERE beatmap_md5 = %(md5)s LIMIT 1",
|
||||
{"md5": checksum}
|
||||
)
|
||||
rating = glob.db.fetch("SELECT rating FROM beatmaps WHERE beatmap_md5 = %s LIMIT 1", (checksum,))
|
||||
output = f"{rating['rating']:.2f}"
|
||||
except exceptions.loginFailedException:
|
||||
output = "auth failed"
|
||||
except exceptions.invalidArgumentsException:
|
||||
output = "no"
|
||||
finally:
|
||||
self.write(output)
|
4
lets.py
4
lets.py
|
@ -24,6 +24,7 @@ from handlers import checkUpdatesHandler
|
|||
from handlers import defaultHandler
|
||||
from handlers import downloadMapHandler
|
||||
from handlers import emptyHandler
|
||||
from handlers import rateHandler
|
||||
from handlers import getFullReplayHandler
|
||||
from handlers import getReplayHandler
|
||||
from handlers import getScoresHandler
|
||||
|
@ -52,6 +53,7 @@ def make_app():
|
|||
(r"/web/osu-submit-modular.php", submitModularHandler.handler),
|
||||
(r"/web/osu-submit-modular-selector.php", submitModularHandler.handler),
|
||||
(r"/web/osu-getreplay.php", getReplayHandler.handler),
|
||||
(r"/web/osu-rate.php", rateHandler.handler),
|
||||
(r"/web/osu-screenshot.php", uploadScreenshotHandler.handler),
|
||||
(r"/web/osu-search.php", osuSearchHandler.handler),
|
||||
(r"/web/osu-search-set.php", osuSearchSetHandler.handler),
|
||||
|
@ -77,8 +79,6 @@ def make_app():
|
|||
|
||||
# Not done yet
|
||||
(r"/web/lastfm.php", emptyHandler.handler),
|
||||
(r"/web/osu-rate.php", emptyHandler.handler),
|
||||
(r"/web/osu-comment.php", emptyHandler.handler),
|
||||
(r"/web/osu-checktweets.php", emptyHandler.handler),
|
||||
|
||||
(r"/loadTest", loadTestHandler.handler),
|
||||
|
|
|
@ -25,7 +25,7 @@ class beatmap:
|
|||
self.beatmapID = 0
|
||||
self.beatmapSetID = 0
|
||||
self.offset = 0 # Won't implement
|
||||
self.rating = 10.0 # Won't implement
|
||||
self.rating = .0
|
||||
|
||||
self.starsStd = 0.0 # stars for converted
|
||||
self.starsTaiko = 0.0 # stars for converted
|
||||
|
|
Reference in New Issue
Block a user