From 3c66bf42445afde11864c69aff338c1f96004a46 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Sat, 7 May 2022 13:54:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=87=BAbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/mtm/views.py | 8 ++++---- hb_server/apps/qm/export.py | 6 ++---- hb_server/apps/qm/views.py | 3 ++- hb_server/apps/system/permission.py | 3 ++- hb_server/media/default/tmp.docx | Bin 0 -> 17268 bytes 5 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 hb_server/media/default/tmp.docx diff --git a/hb_server/apps/mtm/views.py b/hb_server/apps/mtm/views.py index d6b9d8c..f3614f9 100644 --- a/hb_server/apps/mtm/views.py +++ b/hb_server/apps/mtm/views.py @@ -179,8 +179,8 @@ class RecordFormViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet """ 记录表格增删改查 """ - perms_map = {'get':'*', 'post':'recordform_create', - 'put':'recordform_update', 'delete':'recordform_delete'} + perms_map = {'get':'*', 'post':'*', + 'put':'*', 'delete':'*'} queryset = RecordForm.objects.all() filterset_fields = ['step', 'type', 'material', 'number', 'enabled'] search_fields = ['name'] @@ -229,8 +229,8 @@ class RecordFormFieldViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelVi """ 表格字段表 增删改查 """ - perms_map = {'get':'*', 'post':'recordform_update', - 'put':'recordform_update', 'delete':'recordform_update'} + perms_map = {'get':'*', 'post':'*', + 'put':'*', 'delete':'*'} queryset = RecordFormField.objects.all() filterset_fields = ['field_type', 'form'] search_fields = ['field_name', 'field_key'] diff --git a/hb_server/apps/qm/export.py b/hb_server/apps/qm/export.py index c107e7c..e34ce99 100644 --- a/hb_server/apps/qm/export.py +++ b/hb_server/apps/qm/export.py @@ -28,11 +28,9 @@ def exprot_test_record(tr:TestRecord, tm:str): 'l': InlineImage(doc, BASE_DIR + i['field_value'], width=Mm(80)), } else: - if i['field_value']: + edata[i['field_key']] = i['origin_value'] if 'origin_value' in i else '' + if i['field_value'] not in ['', None]: edata[i['field_key']] = i['field_value'] - elif i.get('origin_value', ''): - edata[i['field_key']] = i['origin_value'] - # 开始生成word doc.render(edata) filename = edata['formName'] + '_' + ranstr(6) diff --git a/hb_server/apps/qm/views.py b/hb_server/apps/qm/views.py index 374c2e0..c63f9f7 100644 --- a/hb_server/apps/qm/views.py +++ b/hb_server/apps/qm/views.py @@ -107,7 +107,8 @@ class TestRecordViewSet(ListModelMixin, UpdateModelMixin, RetrieveModelMixin, De 按模板导出 """ instance = self.get_object() - tm = instance.form.export_template + # tm = instance.form.export_template + tm = '/media/default/tmp.docx' if tm: path = exprot_test_record(tr=instance, tm=tm) return Response({'path':path}) diff --git a/hb_server/apps/system/permission.py b/hb_server/apps/system/permission.py index ef60799..4a7810d 100644 --- a/hb_server/apps/system/permission.py +++ b/hb_server/apps/system/permission.py @@ -12,7 +12,7 @@ def get_permission_list(user): if user.is_superuser: perms_list = ['admin'] else: - perms = Permission.objects.filter() + perms = Permission.objects.none() roles = user.roles.all() if roles: for i in roles: @@ -39,6 +39,7 @@ class RbacPermission(BasePermission): :param view: :return: """ + perms = ['visitor'] if not request.user: if request.META.get('HTTP_AUTHORIZATION', None) == 'big_screen': perms = ['visitor'] diff --git a/hb_server/media/default/tmp.docx b/hb_server/media/default/tmp.docx new file mode 100644 index 0000000000000000000000000000000000000000..c3e21ad4275bf70f7dadbb21dc80f1775b64c80c GIT binary patch literal 17268 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