2020-06-22 17:27:11 +00:00
|
|
|
import royalnet.utils as ru
|
2020-06-26 14:13:11 +00:00
|
|
|
import royalnet.backpack.tables as rbt
|
|
|
|
import royalnet.constellation.api as rca
|
2020-06-22 17:27:11 +00:00
|
|
|
from ..tables import Bio
|
|
|
|
|
|
|
|
|
2020-06-26 14:13:11 +00:00
|
|
|
class ApiBioSetStar(rca.ApiStar):
|
2020-06-22 17:27:11 +00:00
|
|
|
path = "/api/bio/v2"
|
|
|
|
|
|
|
|
parameters = {
|
|
|
|
"get": {
|
|
|
|
"uid": "The id of the user to get the bio of."
|
|
|
|
},
|
|
|
|
"put": {
|
|
|
|
"contents": "The contents of the bio."
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
auth = {
|
|
|
|
"get": False,
|
|
|
|
"put": True,
|
|
|
|
}
|
|
|
|
|
|
|
|
tags = ["bio"]
|
|
|
|
|
2020-06-26 14:13:11 +00:00
|
|
|
@rca.magic
|
|
|
|
async def get(self, data: rca.ApiData) -> ru.JSON:
|
2020-06-22 17:27:11 +00:00
|
|
|
"""Get the bio of a specific user."""
|
2020-06-26 14:13:11 +00:00
|
|
|
user = await rbt.User.find(self.alchemy, data.session, data.int("uid"))
|
2020-06-22 17:27:11 +00:00
|
|
|
return user.bio.json() if user.bio else None
|
|
|
|
|
2020-06-26 14:13:11 +00:00
|
|
|
@rca.magic
|
|
|
|
async def put(self, data: rca.ApiData) -> ru.JSON:
|
2020-06-22 17:27:11 +00:00
|
|
|
"""Set the bio of current user."""
|
|
|
|
contents = data["contents"]
|
|
|
|
BioT = self.alchemy.get(Bio)
|
|
|
|
user = await data.user()
|
|
|
|
bio = user.bio
|
|
|
|
if bio is None:
|
|
|
|
bio = BioT(user=user, contents=contents)
|
|
|
|
data.session.add(bio)
|
|
|
|
else:
|
|
|
|
bio.contents = contents
|
|
|
|
await data.session_commit()
|
|
|
|
return bio.json()
|