38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
from rest_framework import serializers
|
|
|
|
from django.contrib.auth.models import User
|
|
from django.db.models import QuerySet
|
|
|
|
from .models import GameModel
|
|
from profiles.serializers import ProfileSerializer
|
|
|
|
class GameSerializer(serializers.ModelSerializer):
|
|
|
|
players = serializers.SerializerMethodField()
|
|
winner = serializers.SerializerMethodField()
|
|
state = serializers.SerializerMethodField()
|
|
started = serializers.ReadOnlyField()
|
|
finished = serializers.ReadOnlyField()
|
|
start_timestamp = serializers.ReadOnlyField()
|
|
stop_timestamp = serializers.ReadOnlyField()
|
|
game_type = serializers.ReadOnlyField()
|
|
|
|
class Meta:
|
|
model = GameModel
|
|
fields = ["id", "winner", "state", "started", "finished", "players", "start_timestamp", "stop_timestamp", "game_type"]
|
|
|
|
def get_state(self, instance: GameModel):
|
|
if (instance.finished):
|
|
return "finished"
|
|
if (instance.started):
|
|
return "started"
|
|
return "waiting"
|
|
|
|
def get_winner(self, instance: GameModel):
|
|
if (instance.winner is None):
|
|
return None
|
|
return ProfileSerializer(instance.winner.profilemodel).data
|
|
|
|
def get_players(self, instance: GameModel):
|
|
return ProfileSerializer(instance.get_players_profiles(), many=True).data
|