Merge branch 'master' of https://e.coding.net/ctcdevteam/cma_search
This commit is contained in:
commit
e9101406f1
|
|
@ -12,6 +12,8 @@ from utils.pagination import PageOrNot
|
|||
from rest_framework.exceptions import ParseError
|
||||
from rest_framework import serializers
|
||||
from rest_framework.exceptions import ParseError
|
||||
from utils.queryset import get_child_queryset2
|
||||
|
||||
|
||||
class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
||||
perms_map = {'get': '*'}
|
||||
|
|
@ -20,21 +22,24 @@ class QualiLibViewSet(PageOrNot, ListModelMixin, GenericViewSet):
|
|||
search_fields = ['name']
|
||||
ordering = ['-create_time']
|
||||
|
||||
|
||||
class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||
perms_map = {'get': '*'}
|
||||
queryset = Quali.objects.select_related('org', 'province', 'city', 'file').prefetch_related('citys')
|
||||
queryset = Quali.objects.select_related(
|
||||
'org', 'province', 'city', 'file').prefetch_related('citys')
|
||||
serializer_class = QualiListSerializer
|
||||
search_fields = ['name', 'type', 'grade', 'scope', 'level', 'description']
|
||||
ordering = ['org', 'org__sort', 'create_time']
|
||||
filterset_fields = ['org', 'type', 'grade', 'province', 'city', 'citys']
|
||||
|
||||
@action(methods=['get'], detail=False, perms_map = {'get':'*'})
|
||||
@action(methods=['get'], detail=False, perms_map={'get': '*'})
|
||||
def my(self, request, *args, **kwargs):
|
||||
"""
|
||||
我的资质
|
||||
"""
|
||||
user = self.request.user
|
||||
queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept))
|
||||
queryset = self.filter_queryset(
|
||||
self.get_queryset().filter(org=user.dept))
|
||||
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
|
|
@ -44,8 +49,10 @@ class QualiViewSet(ListModelMixin, RetrieveModelMixin, GenericViewSet):
|
|||
serializer = self.get_serializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
||||
class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, UpdateModelMixin, DestroyModelMixin, GenericViewSet):
|
||||
perms_map = {'get': 'qtask_view', 'post': 'qtask_create', 'put': 'qtask_update'}
|
||||
perms_map = {'get': 'qtask_view',
|
||||
'post': 'qtask_create', 'put': 'qtask_update'}
|
||||
queryset = QTask.objects.all()
|
||||
serializer_class = QTaskListSerializer
|
||||
ordering = ['-create_time']
|
||||
|
|
@ -54,8 +61,8 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up
|
|||
if self.action in ['create', 'update']:
|
||||
return QTaskCreateUpdateSerializer
|
||||
return super().get_serializer_class()
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map = {'put':'qtask_start'}, serializer_class=serializers.Serializer)
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map={'put': 'qtask_start'}, serializer_class=serializers.Serializer)
|
||||
@transaction.atomic
|
||||
def start(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -68,6 +75,7 @@ class QTaskViewSet(CreateUpdateCustomMixin, CreateModelMixin, ListModelMixin, Up
|
|||
return Response()
|
||||
return Response('任务状态错误', status=status.HTTP_400_BAD_REQUEST)
|
||||
|
||||
|
||||
class QOrgViewSet(ListModelMixin, GenericViewSet):
|
||||
perms_map = {'get': 'qtask_view'}
|
||||
queryset = QOrg.objects.select_related('qtask', 'org')
|
||||
|
|
@ -75,22 +83,27 @@ class QOrgViewSet(ListModelMixin, GenericViewSet):
|
|||
serializer_class = QOrgListSerializer
|
||||
ordering = ['-create_time']
|
||||
|
||||
@action(methods=['get'], detail=False, perms_map = {'get':'qtask_my'})
|
||||
@action(methods=['get'], detail=False, perms_map={'get': 'qtask_my'})
|
||||
def my(self, request, *args, **kwargs):
|
||||
"""
|
||||
我的报送任务
|
||||
"""
|
||||
user = self.request.user
|
||||
queryset = self.filter_queryset(self.get_queryset().filter(org=user.dept, qtask__is_deleted=False).exclude(qtask__state='待发布'))
|
||||
|
||||
queryset = self.filter_queryset(self.get_queryset().filter(qtask__is_deleted=False).exclude(qtask__state='待发布'))
|
||||
mydept = user.dept
|
||||
belong_depts = get_child_queryset2(mydept)
|
||||
queryset = queryset.filter(org__in = belong_depts)
|
||||
deptId = self.request.query_params.get('org', mydept.id)
|
||||
if deptId:
|
||||
queryset = queryset.filter(org__id=deptId)
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
|
||||
def cal_count(qtask, org):
|
||||
qs = QAction.objects.filter(qtask=qtask, belong_dept=org)
|
||||
qorg = QOrg.objects.get(qtask=qtask, org=org)
|
||||
|
|
@ -98,9 +111,11 @@ def cal_count(qtask, org):
|
|||
qorg.count_confirmed = qs.filter(confirmed=True).count()
|
||||
qorg.save()
|
||||
|
||||
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin,GenericViewSet):
|
||||
|
||||
class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModelMixin, GenericViewSet):
|
||||
perms_map = {'get': '*', 'delete': 'qaction_delete'}
|
||||
queryset = QAction.objects.select_related('file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by')
|
||||
queryset = QAction.objects.select_related(
|
||||
'file', 'atype', 'afield', 'qtask', 'belong_dept', 'create_by')
|
||||
filterset_fields = ['qtask', 'belong_dept', 'atype', 'afield']
|
||||
serializer_class = QActionListSerializer
|
||||
|
||||
|
|
@ -111,23 +126,42 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
return QActionDetailSerializer
|
||||
return super().get_serializer_class()
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = self.queryset
|
||||
if hasattr(self.get_serializer_class(), 'setup_eager_loading'):
|
||||
queryset = self.get_serializer_class().setup_eager_loading(queryset)
|
||||
if self.request.user.is_superuser:
|
||||
pass
|
||||
if hasattr(queryset.model, 'belong_dept'):
|
||||
user = self.request.user
|
||||
roles = user.roles
|
||||
data_range = roles.values_list('datas', flat=True)
|
||||
if '全部' in data_range:
|
||||
pass
|
||||
elif '本级及以下' in data_range:
|
||||
belong_depts = get_child_queryset2(user.dept)
|
||||
queryset = queryset.filter(belong_dept__in=belong_depts)
|
||||
elif '本级' in data_range:
|
||||
queryset = queryset.filter(belong_dept=user.dept)
|
||||
return queryset
|
||||
|
||||
@action(methods=['get'], detail=False, perms_map = {'get':'qaction_my'})
|
||||
def my(self, request, *args, **kwargs):
|
||||
"""
|
||||
我的报送操作
|
||||
"""
|
||||
user = self.request.user
|
||||
queryset = self.filter_queryset(self.get_queryset().filter(belong_dept=user.dept))
|
||||
# @action(methods=['get'], detail=False, perms_map={'get': '*'})
|
||||
# def my(self, request, *args, **kwargs):
|
||||
# """
|
||||
# 我的报送操作
|
||||
# """
|
||||
# user = self.request.user
|
||||
# queryset = self.filter_queryset(
|
||||
# self.get_queryset().filter(belong_dept=user.dept))
|
||||
|
||||
page = self.paginate_queryset(queryset)
|
||||
if page is not None:
|
||||
serializer = self.get_serializer(page, many=True)
|
||||
return self.get_paginated_response(serializer.data)
|
||||
# page = self.paginate_queryset(queryset)
|
||||
# if page is not None:
|
||||
# serializer = self.get_serializer(page, many=True)
|
||||
# return self.get_paginated_response(serializer.data)
|
||||
|
||||
# serializer = self.get_serializer(queryset, many=True)
|
||||
# return Response(serializer.data)
|
||||
|
||||
serializer = self.get_serializer(queryset, many=True)
|
||||
return Response(serializer.data)
|
||||
|
||||
def perform_destroy(self, instance):
|
||||
user = self.request.user
|
||||
if not instance.confirmed:
|
||||
|
|
@ -137,7 +171,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
raise ParseError('报送已确认, 不可删除')
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionServiceSerializer)
|
||||
perms_map={'post': 'qaction_create'}, serializer_class=QActionServiceSerializer)
|
||||
@transaction.atomic
|
||||
def service_update(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -152,7 +186,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionQualiCreateSerializer)
|
||||
perms_map={'post': 'qaction_create'}, serializer_class=QActionQualiCreateSerializer)
|
||||
@transaction.atomic
|
||||
def quali_create(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -167,7 +201,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionQualiUpdateSerializer)
|
||||
perms_map={'post': 'qaction_create'}, serializer_class=QActionQualiUpdateSerializer)
|
||||
@transaction.atomic
|
||||
def quali_update(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -186,22 +220,25 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
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)
|
||||
QActionItem.objects.create(
|
||||
action='update', field=k, value1=old_data[k], value2=v, qaction=obj)
|
||||
if k == 'citys':
|
||||
old_citys = set(old_data['citys'])
|
||||
new_citys = set(v)
|
||||
removes = old_citys.difference(new_citys)
|
||||
adds = new_citys.difference(old_citys)
|
||||
for i in removes:
|
||||
QActionItem.objects.create(action='city:remove', field='citys', city=City.objects.get(id=i), qaction=obj)
|
||||
QActionItem.objects.create(
|
||||
action='city:remove', field='citys', city=City.objects.get(id=i), qaction=obj)
|
||||
for i in adds:
|
||||
QActionItem.objects.create(action='city:add', field='citys', city=City.objects.get(id=i), qaction=obj)
|
||||
QActionItem.objects.create(
|
||||
action='city:add', field='citys', city=City.objects.get(id=i), qaction=obj)
|
||||
|
||||
cal_count(vdata['qtask'], user.dept)
|
||||
return Response()
|
||||
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionACreateSerializer)
|
||||
perms_map={'post': 'qaction_create'}, serializer_class=QActionACreateSerializer)
|
||||
@transaction.atomic
|
||||
def ability_create(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -216,7 +253,7 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
return Response()
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionNoChangeSerializer)
|
||||
perms_map={'post': 'qaction_create'}, serializer_class=QActionNoChangeSerializer)
|
||||
@transaction.atomic
|
||||
def ability_nochange(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -225,13 +262,14 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
user = request.user
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save(create_by=user, belong_dept=user.dept, action='ability:nochange')
|
||||
serializer.save(create_by=user, belong_dept=user.dept,
|
||||
action='ability:nochange')
|
||||
vdata = serializer.validated_data
|
||||
cal_count(vdata['qtask'], user.dept)
|
||||
return Response()
|
||||
|
||||
|
||||
@action(methods=['post'], detail=False,
|
||||
perms_map = {'post':'qaction_create'}, serializer_class=QActionNoChangeSerializer)
|
||||
perms_map={'post': 'qaction_create'}, serializer_class=QActionNoChangeSerializer)
|
||||
@transaction.atomic
|
||||
def quali_nochange(self, request, *args, **kwargs):
|
||||
"""
|
||||
|
|
@ -240,13 +278,13 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
user = request.user
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
serializer.save(create_by=user, belong_dept=user.dept, action='quali:nochange')
|
||||
serializer.save(create_by=user, belong_dept=user.dept,
|
||||
action='quali:nochange')
|
||||
vdata = serializer.validated_data
|
||||
cal_count(vdata['qtask'], user.dept)
|
||||
return Response()
|
||||
|
||||
|
||||
@action(methods=['put'], detail=True, perms_map = {'put':'qaction_confirm'},
|
||||
@action(methods=['put'], detail=True, perms_map={'put': 'qaction_confirm'},
|
||||
serializer_class=serializers.Serializer)
|
||||
@transaction.atomic
|
||||
def confirm(self, request, *args, **kwargs):
|
||||
|
|
@ -263,9 +301,11 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
elif obj.action == 'quali:create':
|
||||
serializer = QualiCreateSerializer(data=obj.value2)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
instance = serializer.save(org=obj.belong_dept, create_by=obj.create_by)
|
||||
instance = serializer.save(
|
||||
org=obj.belong_dept, create_by=obj.create_by)
|
||||
if instance.type == 'OTHER':
|
||||
qualiLib, _ = QualiLib.objects.get_or_create(name=instance.name)
|
||||
qualiLib, _ = QualiLib.objects.get_or_create(
|
||||
name=instance.name)
|
||||
levels = qualiLib.levels
|
||||
levels.append(instance.level)
|
||||
le = list(set(levels))
|
||||
|
|
@ -284,8 +324,3 @@ class QActionViewSet(PageOrNot, ListModelMixin, DestroyModelMixin, RetrieveModel
|
|||
obj.save()
|
||||
cal_count(obj.qtask, obj.belong_dept)
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue