OnlineJudge/group/serializers.py

82 lines
2.4 KiB
Python
Raw Normal View History

# coding=utf-8
from rest_framework import serializers
2015-08-11 11:14:41 +00:00
from account.models import User
from account.serializers import UserSerializer
2015-08-11 11:14:41 +00:00
from .models import Group, UserGroupRelation, JoinGroupRequest
class CreateGroupSerializer(serializers.Serializer):
name = serializers.CharField(max_length=20)
description = serializers.CharField(max_length=300)
join_group_setting = serializers.IntegerField(min_value=0, max_value=2)
class EditGroupSerializer(serializers.Serializer):
2015-08-10 04:24:36 +00:00
group_id = serializers.IntegerField()
name = serializers.CharField(max_length=20)
description = serializers.CharField(max_length=300)
join_group_setting = serializers.IntegerField()
visible = serializers.BooleanField()
2015-08-11 11:14:41 +00:00
class CreateJoinGroupRequestSerializer(serializers.Serializer):
2015-08-09 11:13:48 +00:00
group_id = serializers.IntegerField()
message = serializers.CharField(max_length=30, required=False)
2015-08-11 11:14:41 +00:00
class JoinGroupRequestSerializer(serializers.ModelSerializer):
class GroupSerializer(serializers.ModelSerializer):
class Meta:
model = Group
fields = ["id", "name"]
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["username"]
group = GroupSerializer()
user = UserSerializer()
class Meta:
model = JoinGroupRequest
class GroupSerializer(serializers.ModelSerializer):
2015-08-11 11:14:41 +00:00
members_number = serializers.SerializerMethodField("_get_group_members_number")
def _get_group_members_number(self, group):
return group.members.all().count()
class Meta:
model = Group
2015-08-09 11:06:55 +00:00
exclude = ["members"]
class GroupMemberSerializer(serializers.ModelSerializer):
2015-08-11 11:14:41 +00:00
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ["id", "username", "real_name"]
user = UserSerializer()
class Meta:
model = UserGroupRelation
2015-08-11 11:14:41 +00:00
exclude = ["id"]
class EditGroupMemberSerializer(serializers.Serializer):
group_id = serializers.IntegerField()
2015-08-11 11:14:41 +00:00
members = serializers.ListField(child=serializers.IntegerField())
class PutJoinGroupRequestSerializer(serializers.Serializer):
request_id = serializers.IntegerField()
status = serializers.BooleanField()
class GroupPromoteAdminSerializer(serializers.Serializer):
user_id = serializers.IntegerField()
group_id = serializers.IntegerField()