diff --git a/.idea/ITShowPlatform.iml b/.idea/ITShowPlatform.iml
index e2c7e07..9b31378 100644
--- a/.idea/ITShowPlatform.iml
+++ b/.idea/ITShowPlatform.iml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/deployment.xml b/.idea/deployment.xml
index fa01f2b..8ff733f 100644
--- a/.idea/deployment.xml
+++ b/.idea/deployment.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 67c853b..6649a8c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/.idea/sshConfigs.xml b/.idea/sshConfigs.xml
index ab0830e..17609e9 100644
--- a/.idea/sshConfigs.xml
+++ b/.idea/sshConfigs.xml
@@ -2,7 +2,7 @@
-
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 43975b9..b967d98 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -32,10 +32,15 @@
+
+
+
+
-
-
-
+
+
+
+
@@ -67,7 +72,7 @@
-
+
@@ -165,74 +170,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/history/models.py b/history/models.py
index e57537c..f90f515 100644
--- a/history/models.py
+++ b/history/models.py
@@ -5,6 +5,7 @@ from django.core.validators import validate_comma_separated_integer_list
class Department(models.Model):
did = models.IntegerField("部门ID")
department = models.CharField("部门", max_length=10) # 如“程序部”
+ department_en = models.CharField("部门英文名称", max_length=30) # 如“程序部”
part = models.IntegerField("部分", default=0) # 0:内容一;1:内容二 (可能没必要)
title = models.CharField("标题", max_length=30) # 如部门介绍/部门要求
content = models.CharField("内容", max_length=1500) # 如部门介绍/部门要求
@@ -26,6 +27,7 @@ class History(models.Model):
class Members(models.Model):
# 默认id作为成员id
+ id = models.IntegerField(primary_key=True)
avatar = models.ImageField("头像", upload_to="avatar", blank=True)
did = models.IntegerField("所属部门ID", default=0)
grade = models.IntegerField("年级")
diff --git a/history/serializers.py b/history/serializers.py
index ab52c15..00f8f54 100644
--- a/history/serializers.py
+++ b/history/serializers.py
@@ -1,3 +1,5 @@
+import re
+
from rest_framework import serializers
from history.models import *
from django.core.validators import int_list_validator
@@ -6,11 +8,27 @@ from django.core.validators import int_list_validator
class DepartmentSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Department
- fields = ('did', 'department', 'part', 'title', 'content')
+ fields = ('did', 'department_en', 'department', 'part', 'title', 'content')
+
+ def validate_department(self, value):
+ reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$')
+ if not reg.match(value):
+ raise serializers.ValidationError("只能输入汉字")
+ return value
+
+ def validate_department_en(self, value):
+ reg = re.compile(r'^[A-Za-z]*$')
+ if not reg.match(value):
+ raise serializers.ValidationError("只能输入英文")
+ return value
did = serializers.IntegerField(required=True, error_messages={"blank": '部门ID不能为空', "invalid": '类型错误'})
department = serializers.CharField(max_length=10, required=True, trim_whitespace=True,
+ validators=[validate_department],
error_messages={"max_length": '长度过长', "blank": '部门名称不能为空'})
+ department_en = serializers.CharField(max_length=30, required=True, trim_whitespace=True,
+ validators=[validate_department_en],
+ error_messages={"max_length": '长度过长', "blank": '部门英文名称不能为空'})
part = serializers.IntegerField(required=True, error_messages={"blank": '不能为空'}) # 区分同意部分不同段落
title = serializers.CharField(required=False, trim_whitespace=True, max_length=30,
error_messages={"max_length": '题目过长'})
@@ -20,6 +38,7 @@ class DepartmentSerializer(serializers.HyperlinkedModelSerializer):
def update(self, instance, validated_data):
instance.content = validated_data.get("content", instance.content)
instance.department = validated_data.get("department", instance.department)
+ instance.department_en = validated_data.get("department_en", instance.department_en)
instance.id = validated_data.get("id", instance.id)
instance.title = validated_data.get("title", instance.title)
instance.part = validated_data.get("part", instance.part)
@@ -30,18 +49,29 @@ class DepartmentSerializer(serializers.HyperlinkedModelSerializer):
class MembersSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Members
- fields = ('did', 'department', 'grade', 'name', 'motto', 'avatar')
+ fields = ('id', 'did', 'department', 'grade', 'name', 'motto', 'avatar')
+ def name_validate(self, value):
+ reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$')
+ if not reg.match(value):
+ raise serializers.ValidationError("只能输入汉字或英文")
+ return value
+
+ def validate_avatar(self, value):
+ s = str(value)
+ return s
+
+ id = serializers.IntegerField()
did = serializers.IntegerField(required=True, error_messages={"blank": '部门ID不能为空', "invalid": '类型错误'})
department = serializers.CharField(max_length=10, required=True, trim_whitespace=True,
error_messages={"max_length": '部门名称过长', "blank": '部门名称不能为空'})
- grade = serializers.IntegerField(required=True, min_value=2002, max_value=2022,
+ grade = serializers.IntegerField(required=True, min_value=2001, max_value=2022,
error_messages={"max_value": '年级数过大', "blank": "年级数不能为空", "min_value": '年级数过小'})
name = serializers.CharField(required=True, trim_whitespace=True, max_length=6,
error_messages={"blank": '姓名不能为空', "max_length": '姓名过长'})
- motto = serializers.CharField(required=False, trim_whitespace=True, max_length=25,
+ motto = serializers.CharField(required=False, trim_whitespace=True, max_length=25, validators=[name_validate],
error_messages={"max_length": '座右铭过长'})
- avatar = serializers.ImageField()
+ avatar = serializers.ImageField(validators=[name_validate])
def update(self, instance, validated_data):
instance.did = validated_data.get("did", instance.did)
@@ -59,10 +89,17 @@ class HistorySerializer(serializers.HyperlinkedModelSerializer):
model = History
fields = ('grade', 'did', 'department')
- grade = serializers.IntegerField(required=True, min_value=1970, max_value=2022,
+ def validate_department(self, value):
+ reg = re.compile(r'^[\u4e00-\u9fa5A-Za-z]*$')
+ if not reg.match(value):
+ raise serializers.ValidationError("只能输入汉字")
+ return value
+
+ grade = serializers.IntegerField(required=True, min_value=2001, max_value=2022,
error_messages={"max_value": '年级数过大', "blank": "年级数不能为空", "min_value": '年级数过小'})
did = serializers.IntegerField(required=True, error_messages={"blank": '部门ID不能为空', "invalid": '类型错误'})
department = serializers.CharField(max_length=10, required=True, trim_whitespace=True,
+ validators=[validate_department],
error_messages={"max_length": '部门名称过长', "blank": '部门名称不能为空'})
def update(self, instance, validated_data):
@@ -71,5 +108,3 @@ class HistorySerializer(serializers.HyperlinkedModelSerializer):
instance.did = validated_data.get("did", instance.did)
instance.save()
return instance
-
-
diff --git a/history/views.py b/history/views.py
index 64ad590..b13d342 100644
--- a/history/views.py
+++ b/history/views.py
@@ -17,10 +17,11 @@ class DepartmentViewSet(APIView):
"msg": "成功",
}
queryset = Department.objects.all().filter(did=request.GET.get('did'))
- serializer = DepartmentSerializer(queryset, many=True, context={'request': request})
+ serializer = DepartmentSerializer(queryset, many=True)
try:
response["data"] = serializer.data
except:
+ response['code'] = 40000
response['msg'] = serializer.error_messages
if len(response['data']) == 0:
response['code'] = 40000
@@ -42,7 +43,7 @@ class MemberViewSet(APIView):
grade = request.GET.get('grade')
did = request.GET.get('did')
try:
- queryset = Members.objects.all().filter(Q(grade=grade) & Q(did=did))
+ queryset = Members.objects.all().filter(Q(did=did) & Q(grade=grade))
serializer = MembersSerializer(queryset, many=True)
except:
response = {
@@ -55,36 +56,25 @@ class MemberViewSet(APIView):
class HistoryViewSet(APIView):
- # 获取历史成员信息
+ # 获取历史列表
@method_decorator(csrf_exempt)
def get(self, request):
response = {
"code": 20000,
"msg": "成功",
}
- # queryset = History.objects.all()
- # serializer = HistorySerializer(queryset, many=True, context={'request': request})
- # try:
- # s = serializer.data
- # except:
- # response['code'] = 40000
- # response['msg'] = serializer.error_messages.first()
info = []
for i in range(2002, 2022):
- data = {}
- data['grade'] = i
+ data = {'grade': i}
y = []
for j in range(0, 6):
try:
a = History.objects.get(Q(did=j) & Q(grade=i))
except:
continue
- x = {}
- x['id'] = a.did
- x['department_name'] = a.department
+ x = {'id': a.did, 'department_name': a.department}
y.append(x)
data['data'] = y
info.append(data)
response["data"] = info
- print(response)
return Response(data=response)