From 5429e9946527284194d38a1843c7f3c060210cd2 Mon Sep 17 00:00:00 2001 From: zema1 Date: Thu, 30 Nov 2017 11:35:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4UserSerializer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README-CN.md | 2 +- README.md | 2 +- account/serializers.py | 14 ++++++++++++++ account/views/admin.py | 8 ++++---- utils/api/_serializers.py | 4 ---- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/README-CN.md b/README-CN.md index 3e5b4c40..f21330f6 100644 --- a/README-CN.md +++ b/README-CN.md @@ -44,7 +44,7 @@ ![contest-list](https://user-images.githubusercontent.com/20637881/33372509-40d880dc-d539-11e7-9eba-1f08dcb6b9a0.png) -Rankings 中可以控制图表和菜单的显隐 +Rankings 中可以控制图表和菜单的显隐。 ![acm-rankings](https://user-images.githubusercontent.com/20637881/33372510-41117f68-d539-11e7-9947-70e60bad3cf2.png) ![oi-rankings](https://user-images.githubusercontent.com/20637881/33372511-41d406fa-d539-11e7-9947-7a2a088785b0.png) diff --git a/README.md b/README.md index 85496dfb..fb26ed13 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Follow me: [https://github.com/QingdaoU/OnlineJudgeDeploy/tree/2.0](https://git ![contest-list](https://user-images.githubusercontent.com/20637881/33372509-40d880dc-d539-11e7-9eba-1f08dcb6b9a0.png) -You can control the menu and chart status in rankings +You can control the menu and chart status in rankings. ![acm-rankings](https://user-images.githubusercontent.com/20637881/33372510-41117f68-d539-11e7-9947-70e60bad3cf2.png) ![oi-rankings](https://user-images.githubusercontent.com/20637881/33372511-41d406fa-d539-11e7-9947-7a2a088785b0.png) diff --git a/account/serializers.py b/account/serializers.py index d3466776..ca1d9d47 100644 --- a/account/serializers.py +++ b/account/serializers.py @@ -48,6 +48,20 @@ class ImportUserSeralizer(serializers.Serializer): child=serializers.ListField(child=serializers.CharField(max_length=64))) +class UserAdminSerializer(serializers.ModelSerializer): + real_name = serializers.SerializerMethodField() + create_time = DateTimeTZField() + last_login = DateTimeTZField() + + class Meta: + model = User + fields = ["id", "username", "email", "admin_type", "problem_permission", "real_name", + "create_time", "last_login", "two_factor_auth", "open_api", "is_disabled"] + + def get_real_name(self, obj): + return obj.userprofile.real_name + + class UserSerializer(serializers.ModelSerializer): create_time = DateTimeTZField() last_login = DateTimeTZField() diff --git a/account/views/admin.py b/account/views/admin.py index 171fa37d..aa1062c7 100644 --- a/account/views/admin.py +++ b/account/views/admin.py @@ -13,7 +13,7 @@ from utils.shortcuts import rand_str from ..decorators import super_admin_required from ..models import AdminType, ProblemPermission, User, UserProfile -from ..serializers import EditUserSerializer, UserSerializer, GenerateUserSerializer +from ..serializers import EditUserSerializer, UserAdminSerializer, GenerateUserSerializer from ..serializers import ImportUserSeralizer @@ -95,7 +95,7 @@ class UserAdminAPI(APIView): user.save() if pre_username != user.username: Submission.objects.filter(username=pre_username).update(username=user.username) - return self.success(UserSerializer(user).data) + return self.success(UserAdminSerializer(user).data) @super_admin_required def get(self, request): @@ -108,7 +108,7 @@ class UserAdminAPI(APIView): user = User.objects.get(id=user_id) except User.DoesNotExist: return self.error("User does not exist") - return self.success(UserSerializer(user).data) + return self.success(UserAdminSerializer(user).data) user = User.objects.all().order_by("-create_time") @@ -117,7 +117,7 @@ class UserAdminAPI(APIView): user = user.filter(Q(username__icontains=keyword) | Q(userprofile__real_name__icontains=keyword) | Q(email__icontains=keyword)) - return self.success(self.paginate_data(request, user, UserSerializer)) + return self.success(self.paginate_data(request, user, UserAdminSerializer)) def delete_one(self, user_id): try: diff --git a/utils/api/_serializers.py b/utils/api/_serializers.py index a975ec02..35ef3ae3 100644 --- a/utils/api/_serializers.py +++ b/utils/api/_serializers.py @@ -7,10 +7,6 @@ class DateTimeTZField(serializers.DateTimeField): return super(DateTimeTZField, self).to_representation(value) -class IDOnlySerializer(serializers.Serializer): - id = serializers.IntegerField() - - class UsernameSerializer(serializers.Serializer): id = serializers.IntegerField() username = serializers.CharField()