feat: 202312证书导入功能
This commit is contained in:
parent
6d647ee574
commit
5058c17177
|
@ -10,6 +10,8 @@ from openpyxl import load_workbook
|
||||||
from rest_framework.serializers import Serializer
|
from rest_framework.serializers import Serializer
|
||||||
from rest_framework.permissions import AllowAny
|
from rest_framework.permissions import AllowAny
|
||||||
from apps.edu.services import make_img_x
|
from apps.edu.services import make_img_x
|
||||||
|
from django.db import transaction
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
@ -82,3 +84,47 @@ class CertificateViewSet(CreateUpdateCustomMixin, ModelViewSet):
|
||||||
obj, created = Certificate.objects.update_or_create(defaults=data, 证书编号=data["证书编号"])
|
obj, created = Certificate.objects.update_or_create(defaults=data, 证书编号=data["证书编号"])
|
||||||
i = i + 1
|
i = i + 1
|
||||||
return Response()
|
return Response()
|
||||||
|
|
||||||
|
@action(methods=["post"], detail=False, perms_map={"post": "certificate"}, serializer_class=Serializer)
|
||||||
|
@transaction.atomic
|
||||||
|
def imp_202312(self, request, *args, **kwargs):
|
||||||
|
"""导入202312版本表格
|
||||||
|
|
||||||
|
导入表格
|
||||||
|
"""
|
||||||
|
path = request.data.get("path", "")
|
||||||
|
full_path = settings.BASE_DIR + path
|
||||||
|
if not path.endswith(".xlsx"):
|
||||||
|
raise ParseError("请提供xlsx格式文件")
|
||||||
|
wb = load_workbook(full_path, data_only=True)
|
||||||
|
sheet = wb.worksheets[0]
|
||||||
|
courses_str = sheet["b1"].value
|
||||||
|
courses = courses_str.split(";")
|
||||||
|
courses_list = []
|
||||||
|
for course in courses:
|
||||||
|
try:
|
||||||
|
course_obj = Course.objects.get(name=course)
|
||||||
|
courses_list.append(course_obj.id)
|
||||||
|
except Course.DoesNotExist:
|
||||||
|
raise ParseError("课程不存在")
|
||||||
|
att_date = sheet["b2"].value
|
||||||
|
att_date2 = sheet["b3"].value
|
||||||
|
issue_date = sheet["b4"].value
|
||||||
|
i = 6
|
||||||
|
while sheet[f"a{i}"].value:
|
||||||
|
number = sheet[f"a{i}"].value.replace("\n", "").replace(" ", "")
|
||||||
|
name = sheet[f"b{i}"].value.replace("\n", "").replace(" ", "")
|
||||||
|
print(number)
|
||||||
|
obj, created = Certificate.objects.update_or_create(
|
||||||
|
defaults={
|
||||||
|
"证书编号": number,
|
||||||
|
"姓名": name,
|
||||||
|
"培训日期": att_date,
|
||||||
|
"培训结束日期": att_date2,
|
||||||
|
"发证日期": issue_date,
|
||||||
|
},
|
||||||
|
证书编号=number,
|
||||||
|
)
|
||||||
|
obj.课程列表.set(Course.objects.filter(id__in=courses_list))
|
||||||
|
i += 1
|
||||||
|
return Response()
|
||||||
|
|
Loading…
Reference in New Issue