From 48cd7affe364557dddad6f9f486597f6ad7c3f1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 08:56:36 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=8A=A5=E9=80=81=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E4=B8=8D=E5=8F=AF=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/views_qtask.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index c1b56f2..fd0a3d5 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -130,7 +130,8 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel def perform_destroy(self, instance): if not instance.confirmed: instance.delete(soft=False) - raise ParseError('报送已确认, 不可删除') + else: + raise ParseError('报送已确认, 不可删除') @action(methods=['post'], detail=False, perms_map = {'post':'qaction_create'}, serializer_class=QActionServiceSerializer) From e7321aa0ce9f1a5e0a4870d6881911de252f8dcf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 14:09:42 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=93=8D=E4=BD=9C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/serializers_qtask.py | 7 +++++-- server/apps/ability/views_qtask.py | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/server/apps/ability/serializers_qtask.py b/server/apps/ability/serializers_qtask.py index c16835d..a7119fa 100644 --- a/server/apps/ability/serializers_qtask.py +++ b/server/apps/ability/serializers_qtask.py @@ -3,7 +3,7 @@ from rest_framework import serializers from apps.system.models import City, Organization from .models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib from django.db import transaction -from apps.system.serializers import OrganizationSimpleSerializer, DictSerializer +from apps.system.serializers import CitySerializer, FileSimpleSerializer, OrganizationSimpleSerializer, DictSerializer, UserSimpleSerializer from rest_framework.exceptions import ParseError @@ -15,7 +15,8 @@ class QualiLibListSerializer(serializers.ModelSerializer): class QualiListSerializer(serializers.ModelSerializer): province_name = serializers.CharField(source='province.name', read_only=True) city_name = serializers.CharField(source='city.name', read_only=True) - service = serializers.CharField(source='org.service', read_only=True) + org_ = OrganizationSimpleSerializer(source='org', read_only=True) + citys_ = CitySerializer(source='citys', many=True, read_only=True) class Meta: model = Quali fields = '__all__' @@ -78,6 +79,8 @@ class QActionListSerializer(serializers.ModelSerializer): quali_name = serializers.CharField(source='quali.name', read_only=True) atype_name = serializers.CharField(source='atype.name', read_only=True) afield_name = serializers.CharField(source='afield.name', read_only=True) + file_ = FileSimpleSerializer(source='file', read_only=True) + create_by_ = UserSimpleSerializer(source='create_by', read_only=True) class Meta: model = QAction fields = '__all__' diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index fd0a3d5..d7d361a 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -22,7 +22,7 @@ class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet): class QualiViewSet(ListModelMixin, GenericViewSet): perms_map = {'get': '*'} - queryset = Quali.objects.all() + queryset = Quali.objects.select_related('org', 'province', 'city').prefetch_related('citys') serializer_class = QualiListSerializer search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description'] ordering = ['org', 'org__sort', 'create_time'] @@ -99,7 +99,7 @@ def cal_count(qtask, org): qorg.save() class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet): - perms_map = {'get': 'qtask_view'} + perms_map = {'get': 'qtask_view', 'post': 'qaction_delete'} queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept') filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield'] serializer_class = QActionListSerializer From c54f3842faac8f5fc5920ebb11219c407abd58cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 14:13:27 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=93=8D=E4=BD=9C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/views_qtask.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index d7d361a..7beafa5 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -100,7 +100,7 @@ def cal_count(qtask, org): class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet): perms_map = {'get': 'qtask_view', 'post': 'qaction_delete'} - queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept') + queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by') filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield'] serializer_class = QActionListSerializer From 284fdcc114e9512da636201a090a67b47cac5cd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 14:14:57 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=EF=BC=8C=E6=93=8D=E4=BD=9C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/views_qtask.py | 1 + 1 file changed, 1 insertion(+) diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 7beafa5..50081be 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -179,6 +179,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel quali = Quali.objects.get(id=obj.value2.get('id')) old_data = QualiSerializer(instance=quali).data obj.value1 = old_data + obj.save() for k, v in obj.value2.items(): if v != old_data[k]: QActionItem.objects.create(action='update', field=k, value1=old_data[k], value2=v, qaction=obj) From defcb4aa7f0c01ff6470ae0a992656ab6aa0df21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 14:21:02 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/views_qtask.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 50081be..595d139 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -1,5 +1,5 @@ from rest_framework.viewsets import GenericViewSet -from rest_framework.mixins import ListModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin +from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin, RetrieveModelMixin from rest_framework.decorators import action from apps.ability.models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib from apps.ability.serializers_qtask import QActionACreateSerializer, QActionDetailSerializer, QActionListSerializer, QActionQualiCreateSerializer, QActionQualiUpdateSerializer, QActionServiceSerializer, QOrgListSerializer, QTaskCreateUpdateSerializer, QTaskListSerializer, QualiCreateSerializer, QualiLibListSerializer, QualiListSerializer, QualiSerializer, QualiUpdateSerializer @@ -20,7 +20,7 @@ class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet): search_fields = ['name'] ordering = ['-create_time'] -class QualiViewSet(ListModelMixin, GenericViewSet): +class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet): perms_map = {'get': '*'} queryset = Quali.objects.select_related('org', 'province', 'city').prefetch_related('citys') serializer_class = QualiListSerializer From b9e66f4bd7e3bd4273812ae8e2f70dd485d23bd2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 15:06:58 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E8=BF=94=E5=9B=9E=E8=AF=A6=E7=BB=86?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/serializers_qtask.py | 15 +++++++++++++-- server/apps/ability/views_qtask.py | 7 ++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/server/apps/ability/serializers_qtask.py b/server/apps/ability/serializers_qtask.py index a7119fa..ef5b1ef 100644 --- a/server/apps/ability/serializers_qtask.py +++ b/server/apps/ability/serializers_qtask.py @@ -1,6 +1,6 @@ from rest_framework import serializers -from apps.system.models import City, Organization +from apps.system.models import City, Organization, Province from .models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib from django.db import transaction from apps.system.serializers import CitySerializer, FileSimpleSerializer, OrganizationSimpleSerializer, DictSerializer, UserSimpleSerializer @@ -160,6 +160,17 @@ class QActionItemSerializer(serializers.ModelSerializer): class QActionDetailSerializer(serializers.ModelSerializer): update_detail = QActionItemSerializer(source='items_qaction', many=True, read_only=True) + value2 = serializers.SerializerMethodField() class Meta: model = QAction - fields ='__all__' \ No newline at end of file + fields ='__all__' + + def get_value2(self, obj): + value2 = obj.value2 + if 'province' in value2: + value2['province_name'] = Province.objects.get(id=value2['province']).name + if 'city' in value2: + value2['city_name'] = City.objects.get(id=value2['city']).name + if 'citys' in value2: + value2['citys_'] = CitySerializer(instance=City.objects.filter(id__in=value2['citys']), many=True).data + return value2 \ No newline at end of file diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 595d139..45d7b8b 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -175,12 +175,13 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel serializer.is_valid(raise_exception=True) obj = serializer.save(create_by=user, belong_dept=user.dept) vdata = serializer.validated_data + value2 = request.data.get('value2', {}) # 比较差别 - quali = Quali.objects.get(id=obj.value2.get('id')) - old_data = QualiSerializer(instance=quali).data + quali = Quali.objects.get(id=value2.get('id')) + old_data = QualiListSerializer(instance=quali).data obj.value1 = old_data obj.save() - for k, v in obj.value2.items(): + for k, v in value2.items(): if v != old_data[k]: QActionItem.objects.create(action='update', field=k, value1=old_data[k], value2=v, qaction=obj) if k == 'citys': From 9332e5fc34b328cba178dfaea55df10df82a8f1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 2 Jun 2022 16:28:41 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/apps/ability/views_qtask.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/apps/ability/views_qtask.py b/server/apps/ability/views_qtask.py index 45d7b8b..56d5966 100644 --- a/server/apps/ability/views_qtask.py +++ b/server/apps/ability/views_qtask.py @@ -99,7 +99,7 @@ def cal_count(qtask, org): qorg.save() class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet): - perms_map = {'get': 'qtask_view', 'post': 'qaction_delete'} + perms_map = {'get': 'qtask_view', 'delete': 'qaction_delete'} queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by') filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield'] serializer_class = QActionListSerializer