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 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 .models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib
|
||||||
from django.db import transaction
|
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
|
from rest_framework.exceptions import ParseError
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -15,7 +15,8 @@ class QualiLibListSerializer(serializers.ModelSerializer):
|
||||||
class QualiListSerializer(serializers.ModelSerializer):
|
class QualiListSerializer(serializers.ModelSerializer):
|
||||||
province_name = serializers.CharField(source='province.name', read_only=True)
|
province_name = serializers.CharField(source='province.name', read_only=True)
|
||||||
city_name = serializers.CharField(source='city.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:
|
class Meta:
|
||||||
model = Quali
|
model = Quali
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
@ -78,6 +79,8 @@ class QActionListSerializer(serializers.ModelSerializer):
|
||||||
quali_name = serializers.CharField(source='quali.name', read_only=True)
|
quali_name = serializers.CharField(source='quali.name', read_only=True)
|
||||||
atype_name = serializers.CharField(source='atype.name', read_only=True)
|
atype_name = serializers.CharField(source='atype.name', read_only=True)
|
||||||
afield_name = serializers.CharField(source='afield.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:
|
class Meta:
|
||||||
model = QAction
|
model = QAction
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
@ -157,6 +160,17 @@ class QActionItemSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class QActionDetailSerializer(serializers.ModelSerializer):
|
class QActionDetailSerializer(serializers.ModelSerializer):
|
||||||
update_detail = QActionItemSerializer(source='items_qaction', many=True, read_only=True)
|
update_detail = QActionItemSerializer(source='items_qaction', many=True, read_only=True)
|
||||||
|
value2 = serializers.SerializerMethodField()
|
||||||
class Meta:
|
class Meta:
|
||||||
model = QAction
|
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.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 rest_framework.decorators import action
|
||||||
from apps.ability.models import QAction, QActionItem, QOrg, QTask, Quali, QualiLib
|
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
|
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']
|
search_fields = ['name']
|
||||||
ordering = ['-create_time']
|
ordering = ['-create_time']
|
||||||
|
|
||||||
class QualiViewSet(ListModelMixin, GenericViewSet):
|
class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||||
perms_map = {'get': '*'}
|
perms_map = {'get': '*'}
|
||||||
queryset = Quali.objects.all()
|
queryset = Quali.objects.select_related('org', 'province', 'city').prefetch_related('citys')
|
||||||
serializer_class = QualiListSerializer
|
serializer_class = QualiListSerializer
|
||||||
search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description']
|
search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description']
|
||||||
ordering = ['org', 'org__sort', 'create_time']
|
ordering = ['org', 'org__sort', 'create_time']
|
||||||
|
|
@ -99,8 +99,8 @@ def cal_count(qtask, org):
|
||||||
qorg.save()
|
qorg.save()
|
||||||
|
|
||||||
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet):
|
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet):
|
||||||
perms_map = {'get': 'qtask_view'}
|
perms_map = {'get': 'qtask_view', 'delete': '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']
|
filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield']
|
||||||
serializer_class = QActionListSerializer
|
serializer_class = QActionListSerializer
|
||||||
|
|
||||||
|
|
@ -130,7 +130,8 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
def perform_destroy(self, instance):
|
def perform_destroy(self, instance):
|
||||||
if not instance.confirmed:
|
if not instance.confirmed:
|
||||||
instance.delete(soft=False)
|
instance.delete(soft=False)
|
||||||
raise ParseError('报送已确认, 不可删除')
|
else:
|
||||||
|
raise ParseError('报送已确认, 不可删除')
|
||||||
|
|
||||||
@action(methods=['post'], detail=False,
|
@action(methods=['post'], detail=False,
|
||||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionServiceSerializer)
|
perms_map = {'post':'qaction_create'}, serializer_class=QActionServiceSerializer)
|
||||||
|
|
@ -174,11 +175,13 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
obj = serializer.save(create_by=user, belong_dept=user.dept)
|
obj = serializer.save(create_by=user, belong_dept=user.dept)
|
||||||
vdata = serializer.validated_data
|
vdata = serializer.validated_data
|
||||||
|
value2 = request.data.get('value2', {})
|
||||||
# 比较差别
|
# 比较差别
|
||||||
quali = Quali.objects.get(id=obj.value2.get('id'))
|
quali = Quali.objects.get(id=value2.get('id'))
|
||||||
old_data = QualiSerializer(instance=quali).data
|
old_data = QualiListSerializer(instance=quali).data
|
||||||
obj.value1 = old_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]:
|
if v != old_data[k]:
|
||||||
QActionItem.objects.create(action='update', field=k, value1=old_data[k], value2=v, qaction=obj)
|
QActionItem.objects.create(action='update', field=k, value1=old_data[k], value2=v, qaction=obj)
|
||||||
if k == 'citys':
|
if k == 'citys':
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue