3a519b9afb
bug有(不完全统计) - 报名状态id与文档不符 - 查找手机号的正则没有17X和19X号段 - 弹幕,新生信息在后台没有展示详细字段和筛选功能 - 后台界面套了cdn导致的缓存错误,使别的电脑也能直接进入后台 - 验证码发送点太快会发送两次(应该是验证码直接写入数据库用时太长的原因) - 目标邮箱不存在会直接报错(貌似是qq邮箱才会这样,换了爱特的公邮就没有这个) - 弹幕页面如果切换到其他页面再回来会导致弹幕扎堆(前端bug) - 后台作品上传图片会失败 - 太多了。。。。 经过两天的新生考验,还是抗住了,呜呜 少了很多功能 比如选中数据导出(现在只做了全体新生数据导出) 后台男女比例数据统计 但是,就这样吧
103 lines
3.1 KiB
Python
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
|