From c70702bec81681b132b32641150dee88cfbf78a4 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Thu, 21 Apr 2022 13:27:52 +0800 Subject: [PATCH] =?UTF-8?q?record=20form=20create=20update=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=20export=20template=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/mtm/serializers.py | 4 ++-- hb_server/apps/qm/export.py | 4 ++-- hb_server/apps/qm/views.py | 5 +++-- hb_server/media/default/temp.docx | Bin 18343 -> 18347 bytes hb_server/media/default/~$temp.docx | Bin 162 -> 0 bytes 5 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 hb_server/media/default/~$temp.docx diff --git a/hb_server/apps/mtm/serializers.py b/hb_server/apps/mtm/serializers.py index 942ae3b..e0afabb 100644 --- a/hb_server/apps/mtm/serializers.py +++ b/hb_server/apps/mtm/serializers.py @@ -212,7 +212,7 @@ class RecordFormCreateSerializer(serializers.ModelSerializer): queryset=RecordForm.objects.all(), label="复制表ID", required=False) class Meta: model = RecordForm - fields = ['name', 'type', 'step', 'material', 'number', 'enabled', 'form'] + fields = ['name', 'type', 'step', 'material', 'number', 'enabled', 'form', 'export_template'] # def validate(self, attrs): @@ -225,7 +225,7 @@ class RecordFormCreateSerializer(serializers.ModelSerializer): class RecordFormUpdateSerializer(serializers.ModelSerializer): class Meta: model = RecordForm - fields = ['name', 'type', 'number', 'enabled'] + fields = ['name', 'type', 'number', 'enabled', 'export_template'] # def validate(self, attrs): # if attrs['enabled']: diff --git a/hb_server/apps/qm/export.py b/hb_server/apps/qm/export.py index 4b33030..127a2ba 100644 --- a/hb_server/apps/qm/export.py +++ b/hb_server/apps/qm/export.py @@ -8,9 +8,9 @@ from apps.mtm.models import RecordFormField -def exprot_test_record(tr:TestRecord): +def exprot_test_record(tr:TestRecord, tm:str): data = TestRecordDetailSerializer(instance=tr).data - doc = DocxTemplate(BASE_DIR + tr.form.export_template) + doc = DocxTemplate(BASE_DIR + tm) edata = {} edata['formName'] = data['form_']['name'] edata['glassSpec'] = data['wproduct_']['material_']['specification'] if data['wproduct_'] else '' diff --git a/hb_server/apps/qm/views.py b/hb_server/apps/qm/views.py index 8a76a25..374c2e0 100644 --- a/hb_server/apps/qm/views.py +++ b/hb_server/apps/qm/views.py @@ -107,8 +107,9 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De 按模板导出 """ instance = self.get_object() - if '/media/default/temp.docx': - path = exprot_test_record(tr=instance) + tm = instance.form.export_template + if tm: + path = exprot_test_record(tr=instance, tm=tm) return Response({'path':path}) raise ParseError('未配置导出模板') diff --git a/hb_server/media/default/temp.docx b/hb_server/media/default/temp.docx index f71f9af5f168adfebb531d3a66214b7f56736380..4127f63e5614d780b94027024a23c425bf2aa6b7 100644 GIT binary patch delta 8177 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