mirror of
https://github.com/more-tech4-magnum-opus/backend.git
synced 2024-11-22 11:36:33 +03:00
89 lines
2.3 KiB
Python
89 lines
2.3 KiB
Python
from rest_framework import serializers
|
|
from ..services import create_season
|
|
from users.models import User, Clan
|
|
from users.models import User, Department, Stream, Command
|
|
|
|
|
|
class UserSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = User
|
|
fields = [
|
|
"about",
|
|
"name",
|
|
"type",
|
|
"telegram",
|
|
"password",
|
|
"salary",
|
|
"respect",
|
|
"wallet_public_key",
|
|
"command",
|
|
"department",
|
|
"clan_name",
|
|
]
|
|
extra_kwargs = {
|
|
"password": {"write_only": True},
|
|
"wallet_public_key": {"read_only": True},
|
|
"clan_name": {"read_only": True},
|
|
"department": {"read_only": True},
|
|
}
|
|
|
|
def create(self, validated_data):
|
|
user = User.objects.create(
|
|
**validated_data, username=validated_data["telegram"]
|
|
)
|
|
return user
|
|
|
|
|
|
class CreateSeasonSerializer(serializers.Serializer):
|
|
created = serializers.BooleanField(read_only=True)
|
|
|
|
def create(self, *args, **kwargs):
|
|
create_season()
|
|
return {"created": True}
|
|
|
|
|
|
class CommandSerializer(serializers.ModelSerializer):
|
|
workers = UserSerializer(many=True)
|
|
|
|
class Meta:
|
|
model = Command
|
|
fields = ["id", "name", "stream", "workers"]
|
|
extra_kwargs = {
|
|
"id": {"read_only": True},
|
|
"stream": {"write_only": True},
|
|
"workers": {"read_only": True},
|
|
}
|
|
|
|
|
|
class StreamSerializer(serializers.ModelSerializer):
|
|
commands = CommandSerializer(many=True)
|
|
|
|
class Meta:
|
|
model = Stream
|
|
fields = ["id", "name", "department", "commands"]
|
|
extra_kwargs = {
|
|
"id": {"read_only": True},
|
|
"department": {"write_only": True},
|
|
"commands": {"read_only": True},
|
|
}
|
|
|
|
|
|
class DepartmentSerializer(serializers.ModelSerializer):
|
|
streams = StreamSerializer(many=True)
|
|
|
|
class Meta:
|
|
model = Department
|
|
fields = ["id", "name", "streams"]
|
|
extra_kwargs = {
|
|
"id": {"read_only": True},
|
|
"streams": {"read_only": True},
|
|
}
|
|
|
|
|
|
class ClanSerializer(serializers.ModelSerializer):
|
|
users = UserSerializer(many=True)
|
|
|
|
class Meta:
|
|
model = Clan
|
|
fields = ["name", "users"]
|