forked from Hay1tsme/artemis
add mai2 rival management features to frontend and templates
This commit is contained in:
@ -46,6 +46,9 @@ class Mai2Frontend(FE_Base):
|
||||
Route("/update.name", self.update_name, methods=['POST']),
|
||||
Route("/version.change", self.version_change, methods=['POST']),
|
||||
Route("/photo/{photo_id}", self.get_photo, methods=['GET']),
|
||||
Route("/rival.add", self.rival_POST, methods=['POST']),
|
||||
Route("/rival.delete", self.rival_POST, methods=['POST']),
|
||||
Route("/rival.show", self.rival_POST, methods=['POST']),
|
||||
]
|
||||
|
||||
async def render_GET(self, request: Request) -> bytes:
|
||||
@ -61,11 +64,22 @@ class Mai2Frontend(FE_Base):
|
||||
if usr_sesh.user_id > 0:
|
||||
versions = await self.data.profile.get_all_profile_versions(usr_sesh.user_id)
|
||||
profile = []
|
||||
new_rival_list = []
|
||||
if versions:
|
||||
# maimai_version is -1 means it is not initialized yet, select a default version from existing.
|
||||
if incoming_ver < 0:
|
||||
usr_sesh.maimai_version = versions[0]['version']
|
||||
profile = await self.data.profile.get_profile_detail(usr_sesh.user_id, usr_sesh.maimai_version)
|
||||
rival_list = await self.data.profile.get_rivals(usr_sesh.user_id)
|
||||
|
||||
for rival in rival_list:
|
||||
rivalid = rival["rival"]
|
||||
rivalShow = rival["show"]
|
||||
rivalprofile = await self.data.profile.get_profile_detail(rivalid, usr_sesh.maimai_version)
|
||||
rivalName = rivalprofile["userName"] if rivalprofile else "UnknownName"
|
||||
rivalRating = rivalprofile["playerRating"] if rivalprofile else 0
|
||||
new_rival = (rivalName, rivalRating, rivalid, rivalShow)
|
||||
new_rival_list.append(new_rival)
|
||||
versions = [x['version'] for x in versions]
|
||||
|
||||
resp = Response(template.render(
|
||||
@ -76,7 +90,8 @@ class Mai2Frontend(FE_Base):
|
||||
profile=profile,
|
||||
version_list=Mai2Constants.VERSION_STRING,
|
||||
versions=versions,
|
||||
cur_version=usr_sesh.maimai_version
|
||||
cur_version=usr_sesh.maimai_version,
|
||||
rival_list=new_rival_list
|
||||
), media_type="text/html; charset=utf-8")
|
||||
|
||||
if incoming_ver < 0:
|
||||
@ -420,3 +435,28 @@ class Mai2Frontend(FE_Base):
|
||||
return FileResponse(f"{out_folder}.jpeg")
|
||||
|
||||
return Response(status_code=404)
|
||||
async def rival_POST(self, request: Request):
|
||||
uri = request.url.path
|
||||
frm = await request.form()
|
||||
usr_sesh = self.validate_session(request)
|
||||
if not usr_sesh:
|
||||
usr_sesh = UserSession()
|
||||
|
||||
if usr_sesh.user_id > 0:
|
||||
if uri == "/game/mai2/rival.add":
|
||||
rival_id = frm.get("rivalUserId")
|
||||
await self.data.profile.add_rival(usr_sesh.user_id, rival_id)
|
||||
# self.logger.info(f"{usr_sesh.user_id} added a rival")
|
||||
return RedirectResponse("/game/mai2/", 303)
|
||||
|
||||
elif uri == "/game/mai2/rival.delete":
|
||||
rival_id = frm.get("rivalUserId")
|
||||
await self.data.profile.remove_rival(usr_sesh.user_id, rival_id)
|
||||
# self.logger.info(f"{response}")
|
||||
return RedirectResponse("/game/mai2/", 303)
|
||||
|
||||
elif uri == "/game/mai2/rival.show":
|
||||
rival_id = frm.get("rivalUserId")
|
||||
show = frm.get("showRival", "false") == "true"
|
||||
await self.data.profile.set_rival_shown(usr_sesh.user_id, rival_id, show)
|
||||
return RedirectResponse("/game/mai2/", 303)
|
Reference in New Issue
Block a user