Merge branch 'master' of https://e.coding.net/ctcdevteam/cma_search
This commit is contained in:
commit
fe4be749e3
|
|
@ -1,9 +1,9 @@
|
|||
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 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__'
|
||||
|
|
@ -157,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__'
|
||||
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
|
||||
|
|
@ -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,9 +20,9 @@ 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.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,8 +99,8 @@ def cal_count(qtask, org):
|
|||
qorg.save()
|
||||
|
||||
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet):
|
||||
perms_map = {'get': 'qtask_view'}
|
||||
queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept')
|
||||
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
|
||||
|
||||
|
|
@ -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)
|
||||
|
|
@ -174,11 +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
|
||||
for k, v in obj.value2.items():
|
||||
obj.save()
|
||||
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':
|
||||
|
|
|
|||
Loading…
Reference in New Issue