@@ -0,0 +1,44 @@
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from .models import UserAbility, UserPet
|
||||
|
||||
|
||||
class ProgressionProfileView(APIView):
|
||||
def get(self, request):
|
||||
pet, _ = UserPet.objects.get_or_create(user=request.user)
|
||||
existing = {ability.dimension: ability for ability in request.user.abilities.all()}
|
||||
abilities = []
|
||||
for dimension, label in UserAbility.Dimension.choices:
|
||||
ability = existing.get(dimension)
|
||||
if ability is None:
|
||||
ability = UserAbility.objects.create(user=request.user, dimension=dimension)
|
||||
abilities.append(
|
||||
{
|
||||
"dimension": dimension,
|
||||
"label": label,
|
||||
"level": ability.level,
|
||||
"fragments": ability.fragments,
|
||||
}
|
||||
)
|
||||
return Response(
|
||||
{
|
||||
"pet": {
|
||||
"name": pet.name,
|
||||
"level": pet.level,
|
||||
"experience": pet.experience,
|
||||
"appearance": pet.appearance,
|
||||
},
|
||||
"abilities": abilities,
|
||||
"cards": [
|
||||
{
|
||||
"slug": item.card.slug,
|
||||
"name": item.card.name,
|
||||
"mathematician": item.card.mathematician,
|
||||
"image": item.card.image,
|
||||
"acquired_at": item.acquired_at,
|
||||
}
|
||||
for item in request.user.cards.select_related("card")
|
||||
],
|
||||
}
|
||||
)
|
||||
Reference in New Issue
Block a user