Files
ITShowPlatform/apps/enroll/serializers.py
T
LMark 3a519b9afb 修复炒鸡炒鸡多的bug
bug有(不完全统计)
- 报名状态id与文档不符
- 查找手机号的正则没有17X和19X号段
- 弹幕,新生信息在后台没有展示详细字段和筛选功能
- 后台界面套了cdn导致的缓存错误,使别的电脑也能直接进入后台
- 验证码发送点太快会发送两次(应该是验证码直接写入数据库用时太长的原因)
- 目标邮箱不存在会直接报错(貌似是qq邮箱才会这样,换了爱特的公邮就没有这个)
- 弹幕页面如果切换到其他页面再回来会导致弹幕扎堆(前端bug)
- 后台作品上传图片会失败
- 太多了。。。。

经过两天的新生考验,还是抗住了,呜呜
少了很多功能
比如选中数据导出(现在只做了全体新生数据导出)
后台男女比例数据统计

但是,就这样吧
2022-08-22 02:45:48 +08:00

103 lines
3.1 KiB
Python

from rest_framework import serializers
from rest_framework.validators import UniqueValidator
from apps.enroll.models import NewMember, EmailVerifyRecord
from apps.history.models import Department
import time
from utils.util import get_msg
class DepartmentSerializer(serializers.ModelSerializer):
"""获取部门信息"""
class Meta:
model = Department
fields = ["id","department_cn", "icon"]
class NewMemberSerializer(serializers.ModelSerializer):
"""用于添加新成员时的校验与序列化"""
# verification_code = serializers.CharField(source="verification_code.code")
email = serializers.EmailField(validators=[
UniqueValidator(
queryset=NewMember.objects.all(),
message="43032"
)
])
phone_number = serializers.CharField(validators=[
UniqueValidator(
queryset=NewMember.objects.all(),
message="43033"
),
],
max_length=11, error_messages={"max_length":"42033"}
)
class Meta:
model = NewMember
exclude = ["id", "status"]
extra_kwargs = {
"name": {
"error_messages": {
"max_length": "42034"
}
},
"major": {
"error_messages": {
"max_length": "42006"
}
},
"department": {
"error_messages": {
"invalid_choice":"42036"
}
},
"expectation": {
"error_messages": {
"max_length": "42035"
}
},
"sex": {
"error_messages": {
"invalid_choice":"42008"
}
},
}
class NewMemberScheduleSerializer(serializers.ModelSerializer):
"""获取成员录取状态信息的序列化器"""
class Meta:
model = NewMember
fields = ["name", "email", "status"]
class SendEmailSerializer(serializers.Serializer):
"""发送邮件时校验用序列化器"""
# code = serializers.CharField(max_length=10)
email = serializers.EmailField(max_length=50,
validators=[UniqueValidator(
queryset=NewMember.objects.all(),
message="43032")],
error_messages={"max_length": "42032", "invalid": "44036"})
def validate_email(self, data):
try:
oj = EmailVerifyRecord.objects.get(email=data)
# print(oj.email)/
send_time = str(oj.send_time).split('+')[0].split('.')[0]
send_time = time.mktime(time.strptime(send_time, '%Y-%m-%d %X'))
now = time.time()
# print(f"now={now},send={send_time}")
if now - send_time < 120:
raise serializers.ValidationError(code="verification_code", detail="44033")
else:
# print(oj.email)
oj.delete()
except EmailVerifyRecord.DoesNotExist:
pass