diff --git a/server/apps/edu/serializers.py b/server/apps/edu/serializers.py index 6c3f8ea..70a2a36 100644 --- a/server/apps/edu/serializers.py +++ b/server/apps/edu/serializers.py @@ -1,8 +1,14 @@ from rest_framework import serializers from apps.edu.models import Certificate +from apps.edu.services import make_img_x class CertificateSerializer(serializers.ModelSerializer): class Meta: model = Certificate fields = '__all__' - read_only_fields = ['create_time', 'update_time', 'create_by', 'update_by', 'is_deleted'] \ No newline at end of file + read_only_fields = ['create_time', 'update_time', 'create_by', 'update_by', 'is_deleted'] + + def save(self, **kwargs): + instance = super().save(**kwargs) + make_img_x(instance) + return instance \ No newline at end of file diff --git a/server/apps/edu/services.py b/server/apps/edu/services.py index 58c8df1..ff2b7e0 100644 --- a/server/apps/edu/services.py +++ b/server/apps/edu/services.py @@ -1,5 +1,19 @@ from PIL import ImageFont, ImageDraw, Image from django.conf import settings +from apps.edu.models import Certificate + +def make_img_x(instance: Certificate): + titles = [] + if instance.是否内审员: + titles.append('内审员') + if instance.是否授权签字人: + titles.append('授权签字人') + if instance.是否质量负责人: + titles.append('质量负责人') + if instance.是否最高管理者: + titles.append('最高管理者') + instance.证书地址 = make_img(instance.证书编号, instance.姓名, '、'.join(titles)) + instance.save() def make_img(number, name, title): # 打开底版图片 diff --git a/server/apps/edu/views.py b/server/apps/edu/views.py index 7956210..b6c4654 100644 --- a/server/apps/edu/views.py +++ b/server/apps/edu/views.py @@ -1,18 +1,15 @@ -from django.shortcuts import render -from rest_framework.viewsets import GenericViewSet, ModelViewSet +from rest_framework.viewsets import ModelViewSet from apps.system.mixins import CreateUpdateCustomMixin from apps.edu.serializers import CertificateSerializer from apps.edu.models import Certificate from rest_framework.decorators import action -from django.db import transaction from django.conf import settings from rest_framework.exceptions import ParseError from rest_framework.response import Response from openpyxl import load_workbook -from apps.edu.services import make_img from rest_framework.serializers import Serializer -from django.db import transaction from rest_framework.permissions import AllowAny +from apps.edu.services import make_img_x # Create your views here. class CertificateViewSet(CreateUpdateCustomMixin, ModelViewSet): @@ -34,24 +31,11 @@ class CertificateViewSet(CreateUpdateCustomMixin, ModelViewSet): return [AllowAny()] return super().get_permissions() - def make_img_x(self, instance): - titles = [] - if instance.是否内审员: - titles.append('内审员') - if instance.是否授权签字人: - titles.append('授权签字人') - if instance.是否质量负责人: - titles.append('质量负责人') - if instance.是否最高管理者: - titles.append('最高管理者') - instance.证书地址 = make_img(instance.证书编号, instance.姓名, '、'.join(titles)) - instance.save() - def retrieve(self, request, *args, **kwargs): regen_img = request.query_params.get('regen_img', False) instance = self.get_object() if not instance.证书地址 or regen_img: - self.make_img_x(instance) + make_img_x(instance) serializer = self.get_serializer(instance) return Response(serializer.data)