添加UserSerailizer admin返回real_name
This commit is contained in:
@@ -75,16 +75,30 @@ class ContestPasswordVerifySerializer(serializers.Serializer):
|
||||
|
||||
|
||||
class ACMContestRankSerializer(serializers.ModelSerializer):
|
||||
user = UsernameSerializer()
|
||||
user = serializers.SerializerMethodField()
|
||||
submission_info = serializers.JSONField()
|
||||
|
||||
class Meta:
|
||||
model = ACMContestRank
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.is_admin_role = kwargs.pop("is_admin_role", False)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_user(self, obj):
|
||||
return UsernameSerializer(obj.user, is_admin_role=self.is_admin_role).data
|
||||
|
||||
|
||||
class OIContestRankSerializer(serializers.ModelSerializer):
|
||||
user = UsernameSerializer()
|
||||
user = serializers.SerializerMethodField()
|
||||
submission_info = serializers.JSONField()
|
||||
|
||||
class Meta:
|
||||
model = OIContestRank
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.is_admin_role = kwargs.pop("is_admin_role", False)
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_user(self, obj):
|
||||
return UsernameSerializer(obj.user, is_admin_role=self.is_admin_role).data
|
||||
|
||||
@@ -57,8 +57,7 @@ class ContestListAPI(APIView):
|
||||
contests = contests.filter(end_time__lt=cur)
|
||||
else:
|
||||
contests = contests.filter(start_time__lte=cur, end_time__gte=cur)
|
||||
data = self.paginate_data(request, contests, ContestSerializer)
|
||||
return self.success(data)
|
||||
return self.success(self.paginate_data(request, contests, ContestSerializer))
|
||||
|
||||
|
||||
class ContestPasswordVerifyAPI(APIView):
|
||||
@@ -102,6 +101,7 @@ class ContestRankAPI(APIView):
|
||||
|
||||
@check_contest_permission(check_type="ranks")
|
||||
def get(self, request):
|
||||
user = request.user
|
||||
if self.contest.rule_type == ContestRuleType.OI:
|
||||
serializer = OIContestRankSerializer
|
||||
else:
|
||||
@@ -112,4 +112,7 @@ class ContestRankAPI(APIView):
|
||||
if not qs:
|
||||
qs = self.get_rank()
|
||||
cache.set(cache_key, qs)
|
||||
return self.success(self.paginate_data(request, qs, serializer))
|
||||
page_qs = self.paginate_data(request, qs)
|
||||
page_qs["results"] = serializer(page_qs["results"], many=True,
|
||||
is_admin_role=user.is_authenticated() and user.is_admin_role()).data
|
||||
return self.success(page_qs)
|
||||
|
||||
Reference in New Issue
Block a user