Skip to content

Commit

Permalink
去除不必要的serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
zema1 committed Dec 1, 2017
1 parent e6834fa commit ee89df9
Show file tree
Hide file tree
Showing 12 changed files with 35 additions and 84 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ db.db
*.rdb
#*.out
*.sqlite3
.python-version
.DS_Store
build.txt
tmp/
Expand All @@ -69,3 +70,4 @@ data/public/upload/*
!data/public/upload/.gitkeep
data/public/avatar/*
!data/public/avatar/default.png

1 change: 0 additions & 1 deletion .python-version

This file was deleted.

30 changes: 8 additions & 22 deletions account/serializers.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from django import forms

from utils.api import DateTimeTZField, serializers, UsernameSerializer
from utils.api import serializers, UsernameSerializer

from .models import AdminType, ProblemPermission, User, UserProfile

Expand Down Expand Up @@ -50,8 +50,6 @@ class ImportUserSeralizer(serializers.Serializer):

class UserAdminSerializer(serializers.ModelSerializer):
real_name = serializers.SerializerMethodField()
create_time = DateTimeTZField()
last_login = DateTimeTZField()

class Meta:
model = User
Expand All @@ -63,9 +61,6 @@ def get_real_name(self, obj):


class UserSerializer(serializers.ModelSerializer):
create_time = DateTimeTZField()
last_login = DateTimeTZField()

class Meta:
model = User
fields = ["id", "username", "email", "admin_type", "problem_permission",
Expand All @@ -74,22 +69,12 @@ class Meta:

class UserProfileSerializer(serializers.ModelSerializer):
user = UserSerializer()
acm_problems_status = serializers.JSONField()
oi_problems_status = serializers.JSONField()

class Meta:
model = UserProfile
fields = "__all__"


class UserInfoSerializer(serializers.ModelSerializer):
acm_problems_status = serializers.JSONField()
oi_problems_status = serializers.JSONField()

class Meta:
model = UserProfile


class EditUserSerializer(serializers.Serializer):
id = serializers.IntegerField()
username = serializers.CharField(max_length=32)
Expand All @@ -105,12 +90,12 @@ class EditUserSerializer(serializers.Serializer):

class EditUserProfileSerializer(serializers.Serializer):
real_name = serializers.CharField(max_length=32, allow_null=True, required=False)
avatar = serializers.CharField(max_length=256, allow_null=True, allow_blank=True, required=False)
blog = serializers.URLField(max_length=256, allow_null=True, allow_blank=True, required=False)
mood = serializers.CharField(max_length=256, allow_null=True, allow_blank=True, required=False)
github = serializers.CharField(max_length=64, allow_null=True, allow_blank=True, required=False)
school = serializers.CharField(max_length=64, allow_null=True, allow_blank=True, required=False)
major = serializers.CharField(max_length=64, allow_null=True, allow_blank=True, required=False)
avatar = serializers.CharField(max_length=256, allow_blank=True, required=False)
blog = serializers.URLField(max_length=256, allow_blank=True, required=False)
mood = serializers.CharField(max_length=256, allow_blank=True, required=False)
github = serializers.CharField(max_length=64, allow_blank=True, required=False)
school = serializers.CharField(max_length=64, allow_blank=True, required=False)
major = serializers.CharField(max_length=64, allow_blank=True, required=False)


class ApplyResetPasswordSerializer(serializers.Serializer):
Expand Down Expand Up @@ -142,3 +127,4 @@ class RankInfoSerializer(serializers.ModelSerializer):

class Meta:
model = UserProfile
fields = "__all__"
5 changes: 2 additions & 3 deletions announcement/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from utils.api import serializers
from utils.api._serializers import DateTimeTZField, UsernameSerializer
from utils.api._serializers import UsernameSerializer

from .models import Announcement

Expand All @@ -11,12 +11,11 @@ class CreateAnnouncementSerializer(serializers.Serializer):


class AnnouncementSerializer(serializers.ModelSerializer):
create_time = DateTimeTZField()
last_update_time = DateTimeTZField()
created_by = UsernameSerializer()

class Meta:
model = Announcement
fields = "__all__"


class EditAnnouncementSerializer(serializers.Serializer):
Expand Down
4 changes: 1 addition & 3 deletions conf/serializers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from utils.api import DateTimeTZField, serializers
from utils.api import serializers

from .models import JudgeServer

Expand Down Expand Up @@ -29,8 +29,6 @@ class CreateEditWebsiteConfigSerializer(serializers.Serializer):


class JudgeServerSerializer(serializers.ModelSerializer):
create_time = DateTimeTZField()
last_heartbeat = DateTimeTZField()
status = serializers.CharField()

class Meta:
Expand Down
13 changes: 5 additions & 8 deletions contest/serializers.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from utils.api import DateTimeTZField, UsernameSerializer, serializers
from utils.api import UsernameSerializer, serializers

from .models import Contest, ContestAnnouncement, ContestRuleType
from .models import ACMContestRank, OIContestRank
Expand Down Expand Up @@ -29,16 +29,13 @@ class EditConetestSeriaizer(serializers.Serializer):


class ContestAdminSerializer(serializers.ModelSerializer):
start_time = DateTimeTZField()
end_time = DateTimeTZField()
create_time = DateTimeTZField()
last_update_time = DateTimeTZField()
created_by = UsernameSerializer()
status = serializers.CharField()
contest_type = serializers.CharField()

class Meta:
model = Contest
fields = "__all__"


class ContestSerializer(ContestAdminSerializer):
Expand All @@ -49,10 +46,10 @@ class Meta:

class ContestAnnouncementSerializer(serializers.ModelSerializer):
created_by = UsernameSerializer()
create_time = DateTimeTZField()

class Meta:
model = ContestAnnouncement
fields = "__all__"


class CreateContestAnnouncementSerializer(serializers.Serializer):
Expand All @@ -76,10 +73,10 @@ class ContestPasswordVerifySerializer(serializers.Serializer):

class ACMContestRankSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
submission_info = serializers.JSONField()

class Meta:
model = ACMContestRank
fields = "__all__"

def __init__(self, *args, **kwargs):
self.is_admin_role = kwargs.pop("is_admin_role", False)
Expand All @@ -91,10 +88,10 @@ def get_user(self, obj):

class OIContestRankSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
submission_info = serializers.JSONField()

class Meta:
model = OIContestRank
fields = "__all__"

def __init__(self, *args, **kwargs):
self.is_admin_role = kwargs.pop("is_admin_role", False)
Expand Down
4 changes: 1 addition & 3 deletions contest/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

from django.utils import timezone

from utils.api._serializers import DateTimeTZField
from utils.api.tests import APITestCase

from .models import ContestAnnouncement, ContestRuleType, Contest
Expand Down Expand Up @@ -44,10 +43,9 @@ def test_update_contest(self):
response = self.client.put(self.url, data=data)
self.assertSuccess(response)
response_data = response.data["data"]
datetime_tz_field = DateTimeTZField()
for k in data.keys():
if isinstance(data[k], datetime):
data[k] = datetime_tz_field.to_representation(data[k])
continue
self.assertEqual(response_data[k], data[k])

def test_get_contests(self):
Expand Down
32 changes: 7 additions & 25 deletions problem/serializers.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django import forms

from judge.languages import language_names, spj_language_names
from utils.api import DateTimeTZField, UsernameSerializer, serializers
from utils.api import UsernameSerializer, serializers

from .models import Problem, ProblemRuleType, ProblemTag
from .utils import parse_problem_template
Expand Down Expand Up @@ -87,15 +87,8 @@ class CompileSPJSerializer(serializers.Serializer):


class BaseProblemSerializer(serializers.ModelSerializer):
samples = serializers.JSONField()
test_case_score = serializers.JSONField()
languages = serializers.JSONField()
template = serializers.JSONField()
tags = serializers.SlugRelatedField(many=True, slug_field="name", read_only=True)
create_time = DateTimeTZField()
last_update_time = DateTimeTZField()
created_by = UsernameSerializer()
statistic_info = serializers.JSONField()


class ProblemAdminSerializer(BaseProblemSerializer):
Expand All @@ -104,12 +97,6 @@ class Meta:
fields = "__all__"


class ContestProblemAdminSerializer(BaseProblemSerializer):
class Meta:
model = Problem
fields = "__all__"


class ProblemSerializer(BaseProblemSerializer):
template = serializers.SerializerMethodField()

Expand All @@ -121,21 +108,16 @@ def get_template(self, obj):

class Meta:
model = Problem
exclude = ("contest", "test_case_score", "test_case_id", "visible", "is_public",
"template", "spj_code", "spj_version", "spj_compile_ok")


class ContestProblemSerializer(BaseProblemSerializer):
class Meta:
model = Problem
exclude = ("test_case_score", "test_case_id", "visible", "is_public", "difficulty")
exclude = ("test_case_score", "test_case_id", "visible", "is_public",
"spj_code", "spj_version", "spj_compile_ok")


class ContestProblemSafeSerializer(BaseProblemSerializer):
class ProblemSafeSerializer(BaseProblemSerializer):
class Meta:
model = Problem
exclude = ("test_case_score", "test_case_id", "visible", "is_public", "difficulty",
"submission_number", "accepted_number", "statistic_info")
exclude = ("test_case_score", "test_case_id", "visible", "is_public",
"spj_code", "spj_version", "spj_compile_ok",
"difficulty", "submission_number", "accepted_number", "statistic_info")


class ContestProblemMakePublicSerializer(serializers.Serializer):
Expand Down
6 changes: 3 additions & 3 deletions problem/views/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
from utils.shortcuts import rand_str, natural_sort_key

from ..models import Problem, ProblemRuleType, ProblemTag
from ..serializers import (CreateContestProblemSerializer, ContestProblemAdminSerializer, CompileSPJSerializer,
from ..serializers import (CreateContestProblemSerializer, CompileSPJSerializer,
CreateProblemSerializer, EditProblemSerializer, EditContestProblemSerializer,
ProblemAdminSerializer, TestCaseUploadForm, ContestProblemMakePublicSerializer)

Expand Down Expand Up @@ -320,7 +320,7 @@ def post(self, request):
except ProblemTag.DoesNotExist:
tag = ProblemTag.objects.create(name=item)
problem.tags.add(tag)
return self.success(ContestProblemAdminSerializer(problem).data)
return self.success(ProblemAdminSerializer(problem).data)

@problem_permission_required
def get(self, request):
Expand All @@ -345,7 +345,7 @@ def get(self, request):
keyword = request.GET.get("keyword")
if keyword:
problems = problems.filter(title__contains=keyword)
return self.success(self.paginate_data(request, problems, ContestProblemAdminSerializer))
return self.success(self.paginate_data(request, problems, ProblemAdminSerializer))

@validate_serializer(EditContestProblemSerializer)
@problem_permission_required
Expand Down
11 changes: 5 additions & 6 deletions problem/views/oj.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,7 @@
from utils.api import APIView
from account.decorators import check_contest_permission
from ..models import ProblemTag, Problem, ProblemRuleType
from ..serializers import ProblemSerializer, TagSerializer
from ..serializers import ContestProblemSerializer, ContestProblemSafeSerializer
from ..serializers import ProblemSerializer, TagSerializer, ProblemSafeSerializer
from contest.models import ContestRuleType


Expand Down Expand Up @@ -102,16 +101,16 @@ def get(self, request):
except Problem.DoesNotExist:
return self.error("Problem does not exist.")
if self.contest.problem_details_permission(request.user):
problem_data = ContestProblemSerializer(problem).data
problem_data = ProblemSerializer(problem).data
self._add_problem_status(request, [problem_data, ])
else:
problem_data = ContestProblemSafeSerializer(problem).data
problem_data = ProblemSafeSerializer(problem).data
return self.success(problem_data)

contest_problems = Problem.objects.select_related("created_by").filter(contest=self.contest, visible=True)
if self.contest.problem_details_permission(request.user):
data = ContestProblemSerializer(contest_problems, many=True).data
data = ProblemSerializer(contest_problems, many=True).data
self._add_problem_status(request, data)
else:
data = ContestProblemSafeSerializer(contest_problems, many=True).data
data = ProblemSafeSerializer(contest_problems, many=True).data
return self.success(data)
5 changes: 1 addition & 4 deletions submission/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,17 +17,15 @@ class ShareSubmissionSerializer(serializers.Serializer):


class SubmissionModelSerializer(serializers.ModelSerializer):
info = serializers.JSONField()
statistic_info = serializers.JSONField()

class Meta:
model = Submission
fields = "__all__"


# 不显示submission info的serializer, 用于ACM rule_type
class SubmissionSafeModelSerializer(serializers.ModelSerializer):
problem = serializers.SlugRelatedField(read_only=True, slug_field="_id")
statistic_info = serializers.JSONField()

class Meta:
model = Submission
Expand All @@ -36,7 +34,6 @@ class Meta:

class SubmissionListSerializer(serializers.ModelSerializer):
problem = serializers.SlugRelatedField(read_only=True, slug_field="_id")
statistic_info = serializers.JSONField()
show_link = serializers.SerializerMethodField()

def __init__(self, *args, **kwargs):
Expand Down
6 changes: 0 additions & 6 deletions utils/api/_serializers.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
from rest_framework import serializers


class DateTimeTZField(serializers.DateTimeField):
def to_representation(self, value):
# value = timezone.localtime(value)
return super(DateTimeTZField, self).to_representation(value)


class UsernameSerializer(serializers.Serializer):
id = serializers.IntegerField()
username = serializers.CharField()
Expand Down

0 comments on commit ee89df9

Please sign in to comment.