修复炒鸡炒鸡多的bug
bug有(不完全统计) - 报名状态id与文档不符 - 查找手机号的正则没有17X和19X号段 - 弹幕,新生信息在后台没有展示详细字段和筛选功能 - 后台界面套了cdn导致的缓存错误,使别的电脑也能直接进入后台 - 验证码发送点太快会发送两次(应该是验证码直接写入数据库用时太长的原因) - 目标邮箱不存在会直接报错(貌似是qq邮箱才会这样,换了爱特的公邮就没有这个) - 弹幕页面如果切换到其他页面再回来会导致弹幕扎堆(前端bug) - 后台作品上传图片会失败 - 太多了。。。。 经过两天的新生考验,还是抗住了,呜呜 少了很多功能 比如选中数据导出(现在只做了全体新生数据导出) 后台男女比例数据统计 但是,就这样吧
This commit is contained in:
+84
-13
@@ -1,5 +1,6 @@
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.generics import GenericAPIView
|
||||
from rest_framework.permissions import IsAdminUser
|
||||
from apps.history.models import Department
|
||||
from apps.enroll.models import EmailVerifyRecord, NewMember
|
||||
from apps.enroll.serializers import DepartmentSerializer, NewMemberSerializer, NewMemberScheduleSerializer, \
|
||||
@@ -8,21 +9,32 @@ from rest_framework import status
|
||||
from rest_framework.views import APIView
|
||||
from apps.enroll.email import send_code_email
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.shortcuts import HttpResponse
|
||||
from ITShowPlatform.settings import BASE_DIR
|
||||
from apps.enroll.models import NewMember
|
||||
from utils.util import get_msg
|
||||
import re
|
||||
import re,configparser,os
|
||||
import time
|
||||
import xlwt
|
||||
|
||||
conf = configparser.RawConfigParser()
|
||||
|
||||
conf.read(os.path.join(BASE_DIR, "config.ini"), encoding="utf-8")
|
||||
|
||||
|
||||
class DepartmentMessageView(GenericAPIView):
|
||||
"""获取部门信息"""
|
||||
|
||||
queryset = Department.objects.all()
|
||||
global queryset
|
||||
queryset = Department.objects.filter(status=True)
|
||||
serializer_class = DepartmentSerializer
|
||||
|
||||
def get(self, request):
|
||||
serializer = self.get_serializer(instance=self.get_queryset(), many=True)
|
||||
# serializer = self.get_serializer(instance=self.get_queryset(), many=True) #会自动补完成绝对路径
|
||||
serializer = DepartmentSerializer(instance=queryset,many=True)
|
||||
if request.query_params:
|
||||
return Response({"code": 40000, "msg": get_msg("40000")})
|
||||
for i in serializer.data:
|
||||
i["icon"] = (conf.get("Django","Host") + i["icon"])
|
||||
return Response({"code": 20000, "msg": get_msg("20000"), "data": serializer.data})
|
||||
|
||||
|
||||
@@ -39,6 +51,7 @@ class SignUpView(GenericAPIView):
|
||||
@csrf_exempt
|
||||
def post(self, request):
|
||||
data = request.data
|
||||
print(data)
|
||||
serializer = self.get_serializer(data=data)
|
||||
code = data['verification_code']
|
||||
ret = serializer.is_valid(raise_exception=False)
|
||||
@@ -46,33 +59,38 @@ class SignUpView(GenericAPIView):
|
||||
# print(f"code={code}")
|
||||
try:
|
||||
oj = EmailVerifyRecord.objects.get(email=data['email'])
|
||||
print(oj.code,code)
|
||||
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()
|
||||
if now - send_time > 120:
|
||||
oj.delete()
|
||||
return Response(
|
||||
{"code": 40000, "msg": {"verification_code": get_msg(45032)}},
|
||||
{"code": 40000, "msg": get_msg("45032")},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
if code != oj.code:
|
||||
return Response({"code": 45031, "msg": {"verification_code": get_msg(44031)}},
|
||||
if str(code) != oj.code:
|
||||
return Response({"code": 45031, "msg": get_msg("44031")},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
except EmailVerifyRecord.DoesNotExist:
|
||||
return Response({"code": 44032, "msg": {"verification_code": get_msg(44032)}},
|
||||
except (EmailVerifyRecord.DoesNotExist,Exception):
|
||||
return Response({"code": 44032, "msg": get_msg("44032")},
|
||||
status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
serializer.save()
|
||||
oj.delete()
|
||||
return Response({"code": 20000, "msg": get_msg(20000)})
|
||||
else:
|
||||
error = {}
|
||||
for (i, j) in zip(serializer.errors.keys(), serializer.errors.values()):
|
||||
error[str(i)] = str(j[0])
|
||||
return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({"code": int(j[0]), "msg": get_msg(j[0])}, status=status.HTTP_400_BAD_REQUEST)
|
||||
#return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
def get(self, request):
|
||||
string = request.query_params.get('string', '')
|
||||
try:
|
||||
if re.match('^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$', string):
|
||||
queryset = self.get_queryset().get(email=string)
|
||||
elif re.match('^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$', string):
|
||||
elif re.match('^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9]|17[0-9]|19[0-9])\d{8}$', string):
|
||||
queryset = self.get_queryset().get(phone_number=string)
|
||||
else:
|
||||
queryset = self.get_queryset().get(id=-1)
|
||||
@@ -90,14 +108,67 @@ class SendEmailView(APIView):
|
||||
def post(self, request):
|
||||
data = request.data
|
||||
serializer = SendEmailSerializer(data=data)
|
||||
|
||||
# code_serializer = Code_email_serializer()
|
||||
ret = serializer.is_valid()
|
||||
if ret:
|
||||
# serializer.save()
|
||||
send_code_email(data.get("email"))
|
||||
if not send_code_email(data.get("email")):
|
||||
return Response({"code": 42031, "msg": get_msg(42031)}, status=status.HTTP_400_BAD_REQUEST)
|
||||
return Response({"code": 20000, "msg": get_msg(20000)})
|
||||
else:
|
||||
error = {}
|
||||
for (i, j) in zip(serializer.errors.keys(), serializer.errors.values()):
|
||||
error[str(i)] = str(j[0])
|
||||
return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
return Response({"code": int(j[0]), "msg": get_msg(j[0])}, status=status.HTTP_400_BAD_REQUEST)
|
||||
#return Response({"code": 40000, "msg": error}, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class OucView(APIView):
|
||||
"""用来给ipad自动任务跑每日上报脚本的,装杯用"""
|
||||
|
||||
def get(self, request):
|
||||
return Response({"code": 20000, "msg": get_msg(20000)})
|
||||
|
||||
|
||||
|
||||
class ExportView(APIView):
|
||||
#permission_classes = [IsAdminUser]
|
||||
"""
|
||||
不会带token访问,准备交给run宁哥
|
||||
"""
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
response = HttpResponse(content_type='application/ms-excel')
|
||||
# 设置文件名称
|
||||
response['Content-Disposition'] = 'attachment; filename="NewMember.xls"'
|
||||
# 创建工作簿
|
||||
wb = xlwt.Workbook(encoding='utf-8')
|
||||
# 创建表
|
||||
ws = wb.add_sheet('Member')
|
||||
row_num = 0
|
||||
font_style = xlwt.XFStyle()
|
||||
# 二进制
|
||||
font_style.font.bold = True
|
||||
# 表头内容
|
||||
columns = ['ID', '姓名', '性别', '年级专业',"意向部门","手机号码","邮箱","期待的话","报名状态"]
|
||||
# 写进表头内容
|
||||
for col_num in range(len(columns)):
|
||||
ws.write(row_num, col_num, columns[col_num], font_style)
|
||||
# Sheet body, remaining rows
|
||||
font_style = xlwt.XFStyle()
|
||||
# 获取数据库数据
|
||||
rows = NewMember.objects.values_list('id', "name","sex","major","department","phone_number","email","expectation","status")
|
||||
# 遍历提取出来的内容
|
||||
for row in rows:
|
||||
row_num += 1
|
||||
# 逐行写入Excel
|
||||
|
||||
for col_num in range(len(row)):
|
||||
#return HttpResponse(col_num)
|
||||
ws.write(row_num, col_num, row[col_num], font_style)
|
||||
|
||||
wb.save(response)
|
||||
return response
|
||||
|
||||
Reference in New Issue
Block a user